# ID Pass - DVS mode

DVS mode (`document_verification: dvs`) is the default ID Pass verification strategy. It verifies each identity document directly against the Australian Document Verification Service (DVS) and returns the DVS result code and details to you.

This is the right mode for most KYC use cases where you want full visibility into the DVS outcome.

## Requirements

- Your account must have a DVS Identity (OAC) registered for live environments. Registration is a free process available for Australian businesses - contact your Global Data account manager to register for the DVS.
- No DVS Identity is required in sandbox.

## Quick start

### 1. Create an ID Pass

Call `POST /idpass/register` with `document_verification` set to `dvs` and the documents you want to collect. Optionally enable the liveness and biometric face match checks via `check_liveness`.

Example request:

```json
{
  "document_verification": "dvs",
  "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:

```json
{
  "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](/docs/reference#id-pass) for all available request options (number of documents, return URL, image retention, requested identity, and so on).

### 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](/docs/guides/idpass/id-pass-overview#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:

```json
{
  "id": "19517924-94f0-4000-8e02-afba96ad5101",
  "status": "complete"
}
```

See the [Webhooks](/docs/guides/idpass/id-pass-overview#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 match and cross-document identity data is consistent, `failed` otherwise. The default response also includes a decrypted `validation_summary` with strategy-agnostic per-document results:

```json
{
  "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": "dvs",
    "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 DVS mode:

- `verification_status` - `passed` or `failed` for the overall ID Pass.
- `verification_description` - human-readable reason.
- `validation_summary.document_N_result.biographic_validated` - whether the document matched against DVS.
- `validation_summary.document_N_result.biometric_validated` - whether the biometric face match passed for that document (when a photo ID was supplied).

#### Opting in to the raw DVS detail

To see the DVS result code and details, pass `return_documents: true` on the details request. The response then also contains a `documents` object with a per-document `validation_result`:

```json
{
  "...": "...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": "dvs",
        "verification_result_code": "Y",
        "verification_request_number": "7a3ed6e1-b707-4e2d-bacb-e2dfe8f57406",
        "additional_information": null,
        "originating_agency_code": "UOO1",
        "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": { "...": "..." }
    }
  }
}
```

Key `validation_result` fields for DVS mode:

- `strategy` - `dvs`
- `verification_result_code` - DVS result: `Y` (match), `N` (no match), or `D` (document invalid)
- `verification_request_number` - DVS request identifier, required for any official queries on the result
- `additional_information` - detail about any mismatch (e.g. "Card number did not match")
- `originating_agency_code` - the OAC used for the request
- `checked_at` - timestamp of the DVS call

## Sandbox testing

In sandbox, no real DVS calls are made and no fees are charged. Uploading a [DVS sample document](/docs/guides/dvs/sample-documents) produces that sample's documented sandbox response - when you opt in with `return_documents: true`, the `verification_result_code`, `additional_information`, and other DVS fields are returned exactly as they would be for a direct DVS sandbox call. See [Sandbox testing](/docs/guides/idpass/id-pass-overview#sandbox-testing) in the ID Pass Overview for the full picture.
