# Identity Verification testing You can test the following Identity Verification scenarios: - Successful verification - Successful on retry after capture abandoned - Successful on retry after checks inconclusive - Declined verification - Declined on retry after capture abandoned - Declined on retry after checks inconclusive ### Before you start [configure your webhook server](https://www.checkout.com/docs/developer-resources/event-notifications/receive-webhooks/configure-your-webhook-server.md) to test real-time webhooks for every event in each scenario. --- ## Successful verification ### 1. Subscribe to webhooks Subscribe to the following webhooks: - [Identity verification created](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_created.md) - [Identity verification opened](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_opened.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_completed.md) ### 2. Create an applicant Call the [Create an applicant](https://api-reference.checkout.com/tag/Applicants/#operation/create_applicant) endpoint, setting the `external_applicant_id` field to `eaplt_10000000000000000000000000`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/applicants` #### Request example ```json { "external_applicant_id": "eaplt_10000000000000000000000000", "email": "hannah.bret@example.com" } ``` #### Response example ```json { "id": "aplt_tkoi5db4hryu5cei5vwoabr7we", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "external_applicant_id": "eaplt_10000000000000000000000000", "email": "hannah.bret@example.com", "_links": { "self": { "href": "https://identity-verification.sandbox.checkout.com/applicants/aplt_tkoi5db4hryu5cei5vwoabr7we" } } } ``` ### 3. Create a verification Call the [Create an identity verification](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_identity_verification) endpoint, setting the `applicant_id` field to the `id` value returned in the Create applicant response. For example, the `id` returned here is `aplt_tkoi5db4hryu5cei5vwoabr7we`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications` #### Request example ```json { "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr7we", "declared_data": { "name": "Hannah Bret", "birth_date": "1984-10-02" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "idv_tkoi5db4hryu5cei5vwoabr7we", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr7we", "user_journey_id": "usj_tkoi5db4hryu5cei5vwoabr7we", "status": "pending", "response_codes": [], "declared_data": { "name": "Hannah Bret", "birth_date": "1984-10-02" }, "documents": [], "redirect_url": "https://example.com?query-param=hello", "_links": { "self": { "href": "https://identity-verification.checkout.com/identity-verifications/idv_tkoi5db4hryu5cei5vwoabr7we" }, "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" } } } ``` The response returns the verification ID, prefixed with `idv_`. ### 4. Create an attempt Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr7`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "5555700102" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "5555700102" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` You receive an `identity_verification_checks_completed` webhook with the response code `10000`. ### (Optional) 5. Retrieve the verification Call the [Retrieve an identity verification](https://api-reference.checkout.com/tag/Identity-Verification/#operation/retrieve_identity_verification) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. **Sandbox** `GET` `https://identity-verification.sandbox.checkout.com/identity-verifications/{identity_verification_id}` #### Response example ```json { "id": "idv_tkoi5db4hryu5cei5vwoabr7we", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr7we", "user_journey_id": "usj_tkoi5db4hryu5cei5vwoabr7we", "status": "approved", "response_codes": [ { "code": 10000, "summary": "approved" } ], "verified_identity": { "full_name": "Hannah Bret", "birth_date": "1984-10-02" }, "declared_data": { "name": "Hannah Bret", "birth_date": "1984-10-02" }, "documents": [ { "full_name": "Hannah Bret", "birth_date": "1984-10-02", "document_type": "ID", "document_issuing_country": "US", "front_image_signed_url": "https://storage-b.env.ubble.ai/ubble-ai/NDYOOVHGZPAQ/a54b3393-f02a-47c9-a9c5-2f6ee73560e1/bb603e2f-5de9-40f2-9631-8285a33c24c0/tight_crops/FRA-I5-Front-bb603e2f-5de9-40f2-9631-8285a33c24c0-1679921906596.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=V9jgOdpOdeVSFTkA4ZsG%2F20250327%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250327T163228Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=87d8467ab92cbad7c00171af28e613d495f3ff441ce0ea59dd013d68abc50555" } ], "face": { "image_signed_url": "https://storage-b.env.ubble.ai/ubble-ai/NDYOOVHGZPAQ/a54b3393-f02a-47c9-a9c5-2f6ee73560e1/bb603e2f-5de9-40f2-9631-8285a33c24c0/live_face/bb603e2f-5de9-40f2-9631-8285a33c24c0-1679921946714.png?response-content-type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=V9jgOdpOdeVSFTkA4ZsG%2F20250327%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20250327T163223Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=2b7d87fec4f11f0df949da7beade2519cf1a51ce70fe9cc1cf0470d73f5340e4" }, "phone_number": { "country_code": "+1", "number": "5555550102" }, "redirect_url": "https://example.com?query-param=hello", "_links": { "self": { "href": "https://identity-verification.checkout.com/identity-verifications/idv_tkoi5db4hryu5cei5vwoabr7we" }, "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" } } } ``` --- ## Successful on retry after capture abandoned ### 1. Subscribe to webhooks Subscribe to the following webhooks for the first attempt: - [Identity verification created](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_created.md) - [Identity verification opened](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_opened.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture aborted](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_aborted.md) Subscribe to the following webhooks for the final result: - [Identity verification retry requested](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_retry_requested.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_completed.md) ### 2. Create an applicant Call the [Create an applicant](https://api-reference.checkout.com/tag/Applicants/#operation/create_applicant) endpoint, setting the `external_applicant_id` field to `eaplt_61XXXA10000000000000000000`. Replace `61XXX` with the [response code](https://www.checkout.com/docs/developer-resources/codes/identity-verification-codes.md) starting with `61` that you want to test. For example, to test response code `61401`, set the `external_application_id` to `eaplt_61401A10000000000000000000`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/applicants` #### Request example ```json { "external_applicant_id": "eaplt_61401A1000000000000000000", "email": "hannah.bret@example.com" } ``` #### Response example ```json { "id": "aplt_tkoi5db4hryu5cei5vwoabr8hg", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "external_applicant_id": "eaplt_61401A1000000000000000000", "email": "hannah.bret@example.com", "_links": { "self": { "href": "https://identity-verification.sandbox.checkout.com/applicants/aplt_tkoi5db4hryu5cei5vwoabr8hg" } } } ``` ### 3. Create a verification Call the [Create an identity verification](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_identity_verification) endpoint, setting the `applicant_id` field to the `id` value returned in the Create applicant response. For example, the `id` returned here is `aplt_tkoi5db4hryu5cei5vwoabr8hg`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications` #### Request example ```json { "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr8hg", "declared_data": { "name": "Hannah Bret", "birth_date": "1984-10-02" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "idv_tkoi5db4hryu5cei5vwoabr8hg", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr8hg", "user_journey_id": "usj_tkoi5db4hryu5cei5vwoabr8hg", "status": "pending", "response_codes": [], "declared_data": { "name": "Hannah Bret", "birth_date": "1984-10-02" }, "documents": [], "redirect_url": "https://example.com?query-param=hello", "_links": { "self": { "href": "https://identity-verification.checkout.com/identity-verifications/idv_tkoi5db4hryu5cei5vwoabr8hg" }, "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" } } } ``` The response returns the verification ID, prefixed with `idv_`. ### 4. Create an attempt Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr8hg`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_capture_aborted` first attempt webhook returns the response code starting with `61` that you provided for `external_applicant_id`. ### 5. Create another attempt When the `identity_verification_capture_aborted` webhook returns the `retry_required` status, create another attempt. Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr8hg`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_checks_completed` final result webhook returns the response code `10000`. Optionally, you can retrieve the verification. --- ## Successful on retry after checks inconclusive ### 1. Subscribe to webhooks Subscribe to the following webhooks for the first attempt: - [Identity verification created](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_created.md) - [Identity verification opened](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_opened.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks inconclusive](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_inconclusive.md) Subscribe to the following webhooks for the final result: - [Identity verification retry requested](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_retry_requested.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_completed.md) ### 2. Create an applicant Call the [Create an applicant](https://api-reference.checkout.com/tag/Applicants/#operation/create_applicant) endpoint, setting the `external_applicant_id` field to `eaplt_61XXXI10000000000000000000`. Replace `61XXX` with a [response code](https://www.checkout.com/docs/developer-resources/codes/identity-verification-codes.md) starting with `61` that you want to test. For example, if you want to test response code `61310`, set the `external_application_id` to `eaplt_61310I10000000000000000000`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/applicants` #### Request example ```json { "external_applicant_id": "eaplt_61310I1000000000000000000", "email": "hannah.bret@example.com" } ``` #### Response example ```json { "id": "aplt_tkoi5db4hryu5cei5vwoabr7wf", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "external_applicant_id": "eaplt_61310I10000000000000000000", "email": "hannah.bret@example.com", "_links": { "self": { "href": "https://identity-verification.sandbox.checkout.com/applicants/aplt_tkoi5db4hryu5cei5vwoabr7wf" } } } ``` ### 3. Create a verification Call the [Create an identity verification](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_identity_verification) endpoint, setting the `applicant_id` field to the `id` value returned in the Create applicant response. For example, the `id` returned here is `aplt_tkoi5db4hryu5cei5vwoabr7wf`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications` #### Request example ```json { "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr7wf", "declared_data": { "name": "Hannah Bret", "birth_date": "1995-10-02" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "idv_tkoi5db4hryu5cei5vwoabr7wf", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr7wf", "user_journey_id": "usj_tkoi5db4hryu5cei5vwoabr7wf", "status": "pending", "response_codes": [], "declared_data": { "name": "Hannah Bret", "birth_date": "1995-10-02" }, "documents": [], "redirect_url": "https://example.com?query-param=hello", "_links": { "self": { "href": "https://identity-verification.checkout.com/identity-verifications/idv_tkoi5db4hryu5cei5vwoabr7wf" }, "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" } } } ``` The response returns the verification ID, prefixed with `idv_`. ### 4. Create an attempt Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr7wf`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_checks_inconclusive` first attempt webhook returns the response code starting with `61` that you provided for `external_applicant_id`. ### 5. Create another attempt When the `identity_verification_checks_inconclusive` webhook returns the `retry_required` status, create another attempt. Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr7wf`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "5555500102" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_checks_inconclusive` final result webhook returns the response code starting with `61` that you provided for `external_applicant_id`. Optionally, you can retrieve the verification. --- ## Declined verification ### 1. Subscribe to webhooks Subscribe to the following webhooks: - [Identity verification created](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_created.md) - [Identity verification opened](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_opened.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_completed.md) ### 2. Create an applicant Call the [Create an applicant](https://api-reference.checkout.com/tag/Applicants/#operation/create_applicant) endpoint, setting the `external_applicant_id` field to `eaplt_62XXX000000000000000000000`. Replace `62XXX` with a [response code](https://www.checkout.com/docs/developer-resources/codes/identity-verification-codes.md) starting with `62` that you want to test. For example, if you want to test `62201`, set the value to `eaplt_62201000000000000000000000` **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/applicants` #### Request example ```json { "external_applicant_id": "eaplt_62201000000000000000000000", "email": "hannah.bret@example.com" } ``` #### Response example ```json { "id": "aplt_tkoi5db4hryu5cei5vwoabr9fr", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "external_applicant_id": "eaplt_62201000000000000000000000", "email": "hannah.bret@example.com", "_links": { "self": { "href": "https://identity-verification.sandbox.checkout.com/applicants/aplt_tkoi5db4hryu5cei5vwoabr9fr" } } } ``` ### 3. Create a verification Call the [Create an identity verification](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_identity_verification) endpoint, setting the `applicant_id` field to the `id` value returned in the Create applicant response. For example, the `id` returned here is `aplt_tkoi5db4hryu5cei5vwoabr9fr`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications` #### Request example ```json { "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr9fr", "declared_data": { "name": "Hannah Bret", "birth_date": "1999-12-02" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "idv_tkoi5db4hryu5cei5vwoabr9fr", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr9fr", "user_journey_id": "usj_tkoi5db4hryu5cei5vwoabr9fr", "status": "pending", "response_codes": [], "declared_data": { "name": "Hannah Bret", "birth_date": "1999-12-02" }, "documents": [], "redirect_url": "https://example.com?query-param=hello", "_links": { "self": { "href": "https://identity-verification.checkout.com/identity-verifications/idv_tkoi5db4hryu5cei5vwoabr9fr" }, "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" } } } ``` The response returns the verification ID, prefixed with `idv_`. ### 4. Create an attempt Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr9fr`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_checks_completed` webhook returns the response code starting with `62` that you provided for `external_applicant_id`. Optionally, you can retrieve the verification. --- ## Declined on retry after capture abandoned ### 1. Subscribe to webhooks Subscribe to the following webhooks for the first attempt: - [Identity verification created](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_created.md) - [Identity verification opened](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_opened.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture_aborted](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_aborted.md) Subscribe to the following webhooks for the final result: - [Identity verification retry requested](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_retry_requested.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_completed.md) ### 2. Create an applicant Call the [Create an applicant](https://api-reference.checkout.com/tag/Applicants/#operation/create_applicant) endpoint, setting the `external_applicant_id` field to `eaplt_61XXXA62XXX000000000000000`. Replace: - `61XXX` with a [response code](https://www.checkout.com/docs/developer-resources/codes/identity-verification-codes.md) starting with `61` for the first attempt - `62XXX` with a [response code](https://www.checkout.com/docs/developer-resources/codes/identity-verification-codes.md) starting with `62` for the final result For example, to test response codes `61203` and `62103`, set the value to `eaplt_61203A62103000000000000000`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/applicants` #### Request example ```json { "external_applicant_id": "eaplt_61203A6210300000000000000", "email": "hannah.bret@example.com" } ``` #### Response example ```json { "id": "aplt_tkoi5db4hryu5cei5vwoabr1ab", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "external_applicant_id": "eaplt_61203A6210300000000000000", "email": "hannah.bret@example.com", "_links": { "self": { "href": "https://identity-verification.sandbox.checkout.com/applicants/aplt_tkoi5db4hryu5cei5vwoabr1ab" } } } ``` ### 3. Create a verification Call the [Create an identity verification](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_identity_verification) endpoint, setting the `applicant_id` field to the `id` value returned in the Create applicant response. For example, the `id` returned here is `aplt_tkoi5db4hryu5cei5vwoabr1ab`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications` #### Request example ```json { "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr1ab", "declared_data": { "name": "Ali Farid", "birth_date": "1990-12-20" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "idv_tkoi5db4hryu5cei5vwoabr1ab", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr1ab", "user_journey_id": "usj_tkoi5db4hryu5cei5vwoabr1ab", "status": "pending", "response_codes": [], "declared_data": { "name": "Ali Farid", "birth_date": "1990-12-20" }, "documents": [], "redirect_url": "https://example.com?query-param=hello", "_links": { "self": { "href": "https://identity-verification.checkout.com/identity-verifications/idv_tkoi5db4hryu5cei5vwoabr1ab" }, "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" } } } ``` The response returns the verification ID, prefixed with `idv_`. ### 4. Create an attempt Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr1ab`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello" } ``` The `identity_verification_capture_aborted` first attempt webhook returns the response code starting with `61` that you provided for `external_applicant_id`. #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` ### 5. Create another attempt When the `identity_verification_capture_aborted` webhook returns the `retry_required` status, create another attempt. Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr1ab`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_checks_completed` final result webhook returns the response code starting with `62` that you provided for `external_applicant_id`. Optionally, you can retrieve the verification. --- ## Declined on retry after checks inconclusive ### 1. Subscribe to webhooks Subscribe to the following webhooks for the first attempt: - [Identity verification created](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_created.md) - [Identity verification opened](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_opened.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks inconclusive](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_inconclusive.md) Subscribe to the following webhooks for the final result: - [Identity verification retry requested](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_retry_requested.md) - [Identity verification started](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_started.md) - [Identity verification capture completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_capture_completed.md) - [Identity verification checks completed](https://www.checkout.com/docs/developer-resources/event-notifications/event-types/identity_verification_checks_completed.md) ### 2. Create an applicant Call the [Create an applicant](https://api-reference.checkout.com/tag/Applicants/#operation/create_applicant) endpoint, setting the `external_applicant_id` field to `eaplt_61XXXI62XXX000000000000000`. Replace: - `61XXX` with a [response code](https://www.checkout.com/docs/developer-resources/codes/identity-verification-codes.md) starting with `61` for the first attempt - `62XXX` with a [response code](https://www.checkout.com/docs/developer-resources/codes/identity-verification-codes.md) starting with `62` for the final result For example, to test response codes `61203` and `62403`, set the value to `eaplt_61411I62403000000000000000`. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/applicants` #### Request example ```json { "external_applicant_id": "eaplt_61203I6240300000000000000", "email": "hannah.bret@example.com" } ``` #### Response example ```json { "id": "aplt_tkoi5db4hryu5cei5vwoabr6ft", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "external_applicant_id": "eaplt_61203I6240300000000000000", "email": "hannah.bret@example.com", "_links": { "self": { "href": "https://identity-verification.sandbox.checkout.com/applicants/aplt_tkoi5db4hryu5cei5vwoabr6ft" } } } ``` ### 3. Create a verification Call the [Create an identity verification](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_identity_verification) endpoint, setting the `applicant_id` field to the `id` value returned in the Create applicant response. For example, the `id` returned here is `aplt_tkoi5db4hryu5cei5vwoabr6ft`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications` #### Request example ```json { "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr6ft", "declared_data": { "name": "Hannah Bret", "birth_date": "1994-09-26" }, "redirect_url": "https://example.com?query-param=hello" } ``` #### Response example ```json { "id": "idv_tkoi5db4hryu5cei5vwoabr6ft", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "applicant_id": "aplt_tkoi5db4hryu5cei5vwoabr6ft", "user_journey_id": "usj_tkoi5db4hryu5cei5vwoabr6ft", "status": "pending", "response_codes": [], "declared_data": { "name": "Hannah Bret", "birth_date": "1994-09-26" }, "documents": [], "redirect_url": "https://example.com?query-param=hello", "_links": { "self": { "href": "https://identity-verification.checkout.com/identity-verifications/idv_tkoi5db4hryu5cei5vwoabr6ft" }, "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" } } } ``` The response returns the verification ID, prefixed with `idv_`. ### 4. Create an attempt Call the [Create an attempt](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt) endpoint, and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr6ft`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_checks_inconclusive` first attempt webhook returns the response code starting with `61` that you provided for `external_applicant_id`. ### 5. Create another attempt When the `identity_verification_checks_inconclusive` webhook returns `retry_required` status, create another attempt. Call the [Create an attempt endpoint](https://api-reference.checkout.com/tag/Identity-Verification/#operation/create_attempt), and provide the verification ID as the `{identity_verification_id}` path parameter. For example, the `id` returned here is `idv_tkoi5db4hryu5cei5vwoabr6ft`. **Sandbox** `POST` `https://identity-verification.sandbox.checkout.com/identity-verifications/{identity_verification_id}/attempts` #### Request example ```json { "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello" } ``` #### Response example ```json { "id": "iatp_tkoi5db4hryu5cei5vwoabrPoQ", "created_on": "2025-07-21T17:32:28Z", "modified_on": "2025-07-21T17:40:32Z", "phone_number": { "country_code": "+1", "number": "2068133616" }, "redirect_url": "https://myweb.site?query-param=hello", "status": "pending_redirection", "response_codes": [], "_links": { "verification_url": { "href": "https://idv.checkout.com/4hryu5cei5/" }, "self": { "href": "https://identity-verification.sandbox.checkout.com/identity-verifications/idv_01j58p8rw1hvterhqt66xn6js2/attempts/iatp_tkoi5db4hryu5cei5vwoabrPoQ" } } } ``` The `identity_verification_checks_completed` final result webhook returns the response code starting with `62` that you provided for `external_applicant_id`. Optionally, you can retrieve the verification.