ID Pass - Basic mode
Basic mode (document_verification: basic) performs format and checksum validation on the supplied document fields but does not perform any external verification. No DVS call is made, in either live or sandbox.
This mode is useful when you need OCR extraction, liveness, and biometric face match but intend to perform document verification yourself, or when DVS verification is not required for your use case.
Requirements
- No DVS Identity or special enrolment is required.
Quick start
1. Create an ID Pass
Call POST /idpass/register with document_verification set to basic and the documents you want to collect. Optionally enable the liveness and biometric face match checks via check_liveness.
Example request:
{
"document_verification": "basic",
"check_liveness": true,
"document_1_allowed_types": ["licence", "passport"],
"document_2_allowed_types": ["licence", "passport", "medicare"],
"webhook_url": "https://example.com/webhooks/idpass"
}
The response contains the id, the link to send to your customer, and a cipher_key for decrypting the results later:
{
"id": "19517924-94f0-4000-8e02-afba96ad5101",
"link": "https://idpass.example.com/fe4291ca-d831-4760-96df-c9cb03b3cd95",
"cipher_key": "IHm81bkcMsTL7J1ilxhDNE59+p5OQkvUJ3mZQhlUNHA="
}
See the ID Pass API Reference for all available request options.
2. Send the link to your customer
Provide the link to your customer by SMS, email, or by redirecting them from your application. See What your customer experiences for what they will see.
3. Track progress (optional)
If you supplied a webhook_url when creating the ID Pass, Global Data will POST a small payload to your endpoint each time the status changes:
{
"id": "19517924-94f0-4000-8e02-afba96ad5101",
"status": "complete"
}
See the Webhooks section of the overview for supported events.
4. Retrieve results
Once the ID Pass status is complete, call GET /idpass/details/{id} with the cipher_key to retrieve the full result.
The top-level verification_status is passed when all documents pass format validation and cross-document identity data is consistent, failed otherwise. The default response also includes a decrypted validation_summary with strategy-agnostic per-document results:
{
"message": "Ok",
"id": "19517924-94f0-4000-8e02-afba96ad5101",
"status": "complete",
"verification_status": "passed",
"verification_description": "The identity was verified successfully",
"config": { "...": "..." },
"created_at": "2026-04-16T04:28:53+00:00",
"consent_given_at": "2026-04-16T04:29:00+00:00",
"consent_text": "...",
"completed_at": "2026-04-16T04:29:30+00:00",
"ip_address": "203.22.251.3",
"validation_summary": {
"document_verification": "basic",
"liveness_result": {
"validated": true,
"confidence": "99.811",
"threshold": 70,
"liveness_attempts": 1,
"bounding_box": { "...": "..." }
},
"document_1_result": {
"document_type": "licence",
"validated_fields": {
"first_name": "John",
"last_name": "Smith",
"date_of_birth": "1990-03-21"
},
"biographic_validated": true,
"changes": {},
"biometric_validated": true,
"biometric_similarity": "98.876",
"biometric_threshold": 80
},
"verified_identity": {
"first_name": "John",
"middle_name": null,
"last_name": "Smith",
"date_of_birth": "1990-03-21"
},
"requested_identity_mismatch": false
}
}
Key signals in Basic mode:
verification_status-passedorfailedfor the overall ID Pass.verification_description- human-readable reason.validation_summary.document_N_result.biographic_validated- whether the document's fields passed format and checksum validation.validation_summary.document_N_result.biometric_validated- whether the biometric face match passed for that document.
Opting in to the per-field validation errors
To see the per-field validation errors for a failed document, pass return_documents: true on the details request. The response then also contains a documents object with a per-document validation_result. When validation passes:
{
"...": "...top-level fields as above...",
"documents": {
"document_1": {
"document_type": "licence",
"document_number": 1,
"ocr_status": "complete",
"ocr_attempts": 1,
"validation_status": "complete",
"validation_result": {
"strategy": "basic",
"basic_validation_passed": true,
"errors": {},
"checked_at": "2026-04-16 04:28:53"
},
"validation_attempts": 1,
"biometric_result": {
"passed": true,
"threshold": 80,
"similarity": 98.8764,
"face_occluded": false
},
"ocr_data": { "...": "..." },
"validation_data": { "...": "..." }
}
}
}
When validation fails, errors contains per-field messages:
{
"verification_status": "failed",
"verification_description": "Document 1 failed format validation",
"documents": {
"document_1": {
"document_type": "licence",
"document_number": 1,
"validation_status": "complete",
"validation_result": {
"strategy": "basic",
"basic_validation_passed": false,
"errors": {
"card_number": ["The VIC licence card number must be 8 or 10 digits."]
},
"checked_at": "2026-04-16 04:28:53"
}
}
}
}
Key validation_result fields for Basic mode:
strategy-basicbasic_validation_passed- booleanerrors- per-field validation errors; empty object when validation passedchecked_at- timestamp of the validation
Sandbox testing
No DVS call is made in sandbox (or live) in Basic mode. Uploading a DVS sample document produces a passing format validation (basic_validation_passed: true when you opt in via return_documents: true). Any other input is validated against the normal document format rules and passes or fails on its own merits. See Sandbox testing in the ID Pass Overview for the full picture.