INE Biometric Database Verification

Veriff INE Biometric Database Verification (aka INE Biometric Validation) is a check required for establishing identity in the Mexican market.

It is available via API, web flow, and native SDKs.

All session-related info is returned via decision webhook and can be queried via different API endpoints. The results of the verification can also be viewed in the Veriff Customer Portal, under the Webhook tab.

Contact your solutions engineer for info and configuration.


Prerequisites

  • You have an integration set up with Veriff

  • The check is configured for that integration by your Solutions Engineer

  • A verification session generated for the end-user

  • You have configured the decision webhook to get responses from Veriff (see the Webhooks section for info)

  • End-user has given consent to pass their image to conduct the INE Biometric Validation check


Flow overview

The flow is a bit different, depending on the method you are using to verify your end-users with Veriff.

Use via SDK

  1. Generate a verification session using the API keys and the baseURL of the integration you are using for INE Biometric Database Verification (see the API Documentation and API Reference[↗] how to find these)

  2. Capture end-user’s document and selfie images with Veriff’s SDKs

    1. Send the end-user through the verification flow to capture the images (using the preferred Veriff SDK)

    2. You need the session URL generated in step 1 to use the SDKs (found in response payload as verification.url)

  3. Session will be submitted automatically once the end-user takes and submits necessary images

  4. Receive the results from Veriff via decision webhook

Use via API

The flow is just the same as when you are using the public API endpoints to do the document + selfie IDV verification. Main difference is that you must include the consent parameter in the API request payload (see above).

  1. Generate a verification session using the API keys and the baseURL of the integration you are using for INE Biometric Database Verification (see the API Documentation and API Reference[↗] how to find these)

    1. Make sure to include the consent in the payload

  2. Use your image-capturing method, or prepare previously collected end-user selfie and document images

  3. Upload the end-user's media via POST /sessions/{sessionId}/media[↗] call

      1. Specify the image.context as appropriate for the image (see Context types (image, video) for more info about image context types)

    1. Patch session status to submitted status using PATCH /sessions/{sessionId}[↗] call

    2. Check the decision data and/or session related info from the decision webhook and/or query the data from the GET sessions/{sessionId}/decision[↗] endpoint


Add end-user’s consent to the session

When generating a session for INE Biometric Database Verification purposes, in the verification object include the consents array with type: ine and approved: true attributes (as shown below). true is mandatory to start the INE Biometric Validation. If false or missing, the session is not created.

Below is an excerpt from the POST /sessions request payload, to show the relevant attributes. For full view of the payload, see the POST /sessions[↗] documentation.

curl -X POST \
  --url '/v1/sessions/' \
  -H 'Content-Type: application/json' \
  -H 'X-AUTH-CLIENT: API-PUBLIC-KEY' \
  -d '{
    "verification": {
        "callback": "https://veriff.com",
        "consents": [
            {
                "type": "ine",
                "approved": true
            }
        ],
        ...
    }
}'

Ensure consent from the end-user that they permit sending their image to Veriff and Veriff's service provider for conducting the INE Biometric Registry Verification check, including biometric data processing.


Find decision and/or session related info

Webhook payload

The INE Biometric Validation check results are in additionalVerifiedData.ineBiometricRegistryValidation object.

Sample request

The sample and explanation below contain only INE Biometric Validation part of the webhook. The decision webhook is used for many purposes, to find more info about it, see the decision webhook payload.

{
    "status": "success",
    "verification": {
        ...
        "additionalVerifiedData": {
            "ineBiometricRegistryValidation": {
                "faceMatch": true,
                "faceMatchPercentage": 89,
                "responseStatus": "success"
            },
          ...
        },
        ...
    }
}

Request properties explained

  • status: string* Status of the response

  • verification: object* Verification request decision object

    • additionalVerifiedData: object* Data which has been optionally verified for session

      • ineBiometricRegistryValidation: object* INE Biometric Database Verification check object

        • faceMatch: boolean | null* Indicates if the person's selfie image is a match with their image in the registry. This decision is made based on the value returned in faceMatchPercentage (see below) null if the check could not be completed

        • faceMatchPercentage: integer | null* Indicates the level of similarity the system thinks the matched images have, in the range of 0-100. Values ≥85 indicate a match; values <85 indicate that images do not match. null if the check could not be completed

        • responseStatus: string | null* Indicates the response received from the service provider. One of success or failure; or null if the check could not be completed

*Required field

API call

The second source is the GET sessions/{sessionId}/decision endpoint, API call response, as additionalVerifiedData.ineBiometricRegistryValidation object.

Sample response

The example below contains only INE Biometric Validation part of the webhook. The endpoint is used for many purposes, to find more information about it, see the GET sessions/{sessionId}/decision[↗] documentation.

{
    "status": "success",
    "verification": {
        ...
        "additionalVerifiedData": {
            "ineBiometricRegistryValidation": {
                "faceMatch": true,
                "faceMatchPercentage": 89,
                "responseStatus": "success"
            },
          ...
        },
        ...
    }
}

Response properties explained

  • status: string* Status of the response

  • verification: object* Verification request decision object

    • additionalVerifiedData: object* Data which has been optionally verified for session

      • ineBiometricRegistryValidation: object* INE Biometric Database Verification check object

        • faceMatch: boolean | null* Indicates if the person's selfie image is a match with their image in the registry. This decision is made based on the value returned in faceMatchPercentage (see below) null if the check could not be completed

        • faceMatchPercentage: integer | null* Indicates the level of similarity the system thinks the matched images have, in the range of 0-100. Values ≥85 indicate a match; values <85 indicate that images do not match. null if the check could not be completed

        • responseStatus: string | null* Indicates the response received from the service provider. One of success or failure; or null if the check could not be completed

*Required field

Veriff Customer Portal

You can find the verification session related info, including the decision, in the Veriff Customer Portal, under the Webhooks tab.

See Review verification in Veriff Customer Portal about how to view the session info in the Veriff Customer portal


Status and reason codes

For an approved session, see the verification.code and verification.status parameters.

If the session was declined or resubmission_requested, you can find additional information by checking the verification.status, verification.code, verification.reason and verification.reasonCode data objects.

For more info about the codes you are seeing, refer to: