> ## Documentation Index
> Fetch the complete documentation index at: https://docs.synctera.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Document Verification

> Document verification is a step-up method that verifies a customer's identity from their government-issued documents and a live selfie — improving conversion for customers who fail automated KYC.

## Overview

Alongside identity verification and watchlist monitoring, Synctera's verification solution includes **document verification**. As described in the [verification guide](/v2/docs/kyc-kyb-verification#verification-status-and-verifying-customers), it is recommended as a *step-up* method for customers who cannot be verified automatically from basic CIP information (name, address, date of birth, government ID).

Synctera has partnered with [Socure](https://www.socure.com) to verify thousands of document types from over 100 countries. By capturing the front and back of a document plus a live selfie, document verification improves conversion for customers who would otherwise land in manual review, while reducing risk by further confirming the customer's identity.

Key characteristics:

* **Step-up** — best used for verifications flagged `REVIEW`, to resolve issues automatically rather than routing to manual review.
* **Document-based** — validates a government-issued document and matches it to a live selfie.
* **Conversion-boosting** — recovers customers who fail initial automated KYC.
* **SDK-driven** — document capture happens through Socure's platform SDKs.

<Info>
  Document verification increases conversion for customers flagged for review in their initial KYC verification. To build out your document verification flow using the Socure SDK, contact your Synctera sales representative.
</Info>

### Socure SDKs

Socure provides SDKs for multiple platforms to simplify integration:

* WebSDK
* Android SDK
* iOS SDK
* React SDK

## Prerequisites

This guide assumes you have:

* Created a [personal customer](/v2/docs/create-a-personal-customer)
* Recorded a [disclosure](/v2/docs/record-disclosure-acceptance)
* [Verified the customer](/v2/docs/kyc-kyb-verification)

You should also be familiar with:

* [Need to Know — Environments](/v2/reference/need-to-know#environments)
* [Need to Know — Authentication](/v2/reference/need-to-know#authentication)

## Example: document verification as a step-up

This example creates a customer who is flagged for `REVIEW` on initial verification, then uses Socure's document verification to resolve the issue automatically — decreasing manual review time and increasing conversion.

<Steps>
  <Step title="Create a personal customer">
    Create a record for the customer with [POST /v2/persons](/v2/reference/createperson):

    ```shell theme={"system"}
    curl \
      -X POST \
      -H "Authorization: Bearer $apikey" \
      -H 'Content-Type: application/json' \
      https://api.synctera.com/v2/persons \
      --data-binary '
      {
        "first_name": "Christopher",
        "middle_name": "James",
        "last_name": "Albertson",
        "dob": "1985-06-14",
        "email": "chris@example.com",
        "phone_number": "+16045551212",
        "ssn": "456-78-9999",
        "legal_address": {
          "address_line_1": "123 Main St.",
          "city": "Beverly Hills",
          "state": "CA",
          "postal_code": "99999",
          "country_code": "US"
        },
        "is_customer": true,
        "status": "ACTIVE"
      }'
    ```

    See the [Create a Personal Customer](/v2/docs/create-a-personal-customer) guide for details.
  </Step>

  <Step title="Record a KYC data collection disclosure">
    Display a disclosure informing the customer that you are collecting personal data to be shared with a third party for identity verification, then record it with [POST /v2/disclosures](/v2/reference/createdisclosure):

    ```shell theme={"system"}
    curl \
      -X POST \
      -H "Authorization: Bearer $apikey" \
      -H 'Content-Type: application/json' \
      https://api.synctera.com/v2/disclosures \
      --data-binary '
      {
        "person_id": "7ef75751-e372-4c12-9b02-b9e4b1faaac9",
        "type": "KYC_DATA_COLLECTION",
        "version": "1.0",
        "event_type": "ACKNOWLEDGED",
        "disclosure_date": "2022-03-17T17:04:34Z"
      }'
    ```

    See the [Record Disclosure Acceptance](/v2/docs/record-disclosure-acceptance) guide for details.
  </Step>

  <Step title="Verify the customer">
    With the customer created and consent captured, run verification with [POST /v2/verifications/verify](/v2/reference/verify):

    ```shell theme={"system"}
    curl \
      -X POST \
      -H "Authorization: Bearer $apikey" \
      -H 'Content-Type: application/json' \
      https://api.synctera.com/v2/verifications/verify \
      --data-binary '
      {
        "person_id": "7ef75751-e372-4c12-9b02-b9e4b1faaac9",
        "customer_ip_address": "184.233.47.237",
        "customer_consent": true
      }'
    ```

    <Info>
      Consent must come directly from the customer.
    </Info>

    The response returns a verification for each check run:

    ```json theme={"system"}
    {
      "verification_status": "REVIEW",
      "verifications": [
        {
          "id": "05e2ddf3-d172-450e-9cf3-7a34f76a414f",
          "person_id": "7ef75751-e372-4c12-9b02-b9e4b1faaac9",
          "verification_type": "IDENTITY",
          "result": "REVIEW",
          "details": [
            {
              "description": "Address cannot be resolved to the individual",
              "label": "Address",
              "result": "WARN",
              "vendor_code": "R705"
            },
            {
              "description": "Email address can be resolved to the individual",
              "label": "Email",
              "result": "PASS",
              "vendor_code": "I556"
            }
          ],
          "verification_time": "2022-03-14T18:34:59.91272Z",
          "creation_time": "2022-03-14T18:34:59.918188Z",
          "last_updated_time": "2022-03-14T18:34:59.918188Z"
        },
        {
          "id": "a24a16a2-4711-4486-8049-787462c61ffc",
          "person_id": "7ef75751-e372-4c12-9b02-b9e4b1faaac9",
          "verification_type": "WATCHLIST",
          "result": "ACCEPTED",
          "details": [
            {
              "description": "Global Watchlist sources selected are not correlated with the input identifiers",
              "label": "Watchlist",
              "result": "PASS"
            }
          ],
          "verification_time": "2022-03-14T18:34:59.91272Z",
          "creation_time": "2022-03-14T18:34:59.918188Z",
          "last_updated_time": "2022-03-14T18:34:59.918188Z"
        }
      ]
    }
    ```

    Note the issue flagged on the `IDENTITY` verification: *Address cannot be resolved to the individual*. This warning marks the customer's verification status as `REVIEW`. Document verification, run next, can resolve it automatically.
  </Step>

  <Step title="Collect the customer's documents">
    Begin a document verification session with [POST /v2/verifications/docv\_session](/v2/reference/docvsession), passing the `person_id`:

    ```shell theme={"system"}
    curl \
      -X POST \
      -H "Authorization: Bearer $apikey" \
      -H 'Content-Type: application/json' \
      https://api.synctera.com/v2/verifications/docv_session \
      --data-binary '
      {
        "person_id": "7ef75751-e372-4c12-9b02-b9e4b1faaac9"
      }'
    ```

    The response contains a `session_token` to provide to the Socure SDK and a `url` the customer can use to upload their documents via Socure's web portal:

    ```json theme={"system"}
    {
      "session_token": "907ce33a-c564-454e-a538-804efe31e6ac",
      "url": "https://verify.socure.com/session/907ce33a-c564-454e-a538-804efe31e6ac"
    }
    ```

    <Info>
      To build out your document verification flow using the Socure SDK, contact your Synctera sales representative.
    </Info>
  </Step>

  <Step title="Verify the customer using document verification">
    Once the customer has uploaded their documents, send another verification request (as in step 3), using the `session_token` to populate the `document_id`:

    ```shell theme={"system"}
    curl \
      -X POST \
      -H "Authorization: Bearer $apikey" \
      -H 'Content-Type: application/json' \
      https://api.synctera.com/v2/verifications/verify \
      --data-binary '
      {
        "person_id": "7ef75751-e372-4c12-9b02-b9e4b1faaac9",
        "customer_ip_address": "184.233.47.237",
        "document_id": "907ce33a-c564-454e-a538-804efe31e6ac",
        "customer_consent": true
      }'
    ```

    Providing a `document_id` runs a KYC verification using the documents supplied to the Socure SDK:

    ```json theme={"system"}
    {
      "verification_status": "ACCEPTED",
      "verifications": [
        {
          "id": "05e2ddf3-d172-450e-9cf3-7a34f76a414f",
          "person_id": "7ef75751-e372-4c12-9b02-b9e4b1faaac9",
          "verification_type": "DOCUMENT_VERIFICATION",
          "result": "ACCEPTED",
          "details": [
            {
              "description": "Minimum required information extracted from document Barcode",
              "label": "Document Verification",
              "result": "PASS",
              "vendor_code": "I831"
            },
            {
              "description": "Document image correlates with self-portrait",
              "label": "Document Verification",
              "result": "PASS",
              "vendor_code": "I836"
            },
            {
              "description": "Socure's document verification model recommends accepting the individual",
              "label": "Document Verification",
              "result": "PASS"
            }
          ],
          "verification_time": "2022-03-14T18:34:59.91272Z",
          "creation_time": "2022-03-14T18:34:59.918188Z",
          "last_updated_time": "2022-03-14T18:34:59.918188Z"
        }
      ]
    }
    ```

    The `DOCUMENT_VERIFICATION` response confirms the document image correlates with the selfie and that Socure recommends accepting the individual. A customer initially flagged for manual review is now verified automatically.
  </Step>
</Steps>

Once verified, the customer is ready for the [account creation guide](/v2/docs/create-accounts-guide).

## Best practices

* **Reserve it for `REVIEW`** — use document verification as a step-up for customers flagged for review, not as the default path for everyone.
* **Capture consent first** — record the KYC data collection disclosure and send `customer_consent` on every verification request.
* **Start a session per customer** — call `docv_session` to obtain the `session_token` and `url`, then reuse the `session_token` as the `document_id` on the verify call to resolve the outstanding review.
* **Track the outcome** — check `verification_status` after the document verification to confirm the customer moved to `ACCEPTED`.

## Related guides

<CardGroup cols={2}>
  <Card title="KYC/KYB Verification" href="/v2/docs/kyc-kyb-verification" icon="user-shield" horizontal>
    Understand the initial verification that document verification steps up.
  </Card>

  <Card title="Create a Personal Customer" href="/v2/docs/create-a-personal-customer" icon="user" horizontal>
    Onboard the customer to be verified.
  </Card>

  <Card title="Record Disclosure Acceptance" href="/v2/docs/record-disclosure-acceptance" icon="file-signature" horizontal>
    Capture the KYC data collection disclosure.
  </Card>

  <Card title="Create Accounts" href="/v2/docs/create-accounts-guide" icon="building-columns" horizontal>
    Open accounts once the customer is verified.
  </Card>
</CardGroup>

## API reference

* [Start a document verification session](/v2/reference/docvsession)
* [Run a verification](/v2/reference/verify)
* [Create a person](/v2/reference/createperson)
* [Create a disclosure](/v2/reference/createdisclosure)
