---
title: "INE Biometric Database Verification"
slug: "ine-biometric-database-verification"
description: "Verify identity in Mexico with Veriff's INE Biometric Database Verification. Ensure consent and follow integration steps for seamless validation."
tags: ["Identity Verification", "INE Biometric Verification", "Mexican registries"]
updated: 2026-05-25T10:39:27Z
published: 2026-05-25T10:39:27Z
---

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

# INE Biometric Database Verification

| Available via API | Available via SDK | Needs configuration on Veriff's side | Needs a separate integration | Needs a separate webhook |
| --- | --- | --- | --- | --- |
| ✅ | ✅ | ✅ | ✅ | ❌ |

Veriff INE Biometric Database Verification (aka INE Biometric Validation) is used to validate the authenticity of the end-user’s selfie image and relevant information extracted from the end-user’s identification document.

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

All session-related **info is returned** **via**[**decision webhook**](/v1/docs/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.

> [!NOTE]
> Contact your **solutions engineer** for info and configuration.

---

## Prerequisites

- You have an [**integration set up**](/v1/docs/how-to-create-an-integration)**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](/v1/docs/webhooks-guide) 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 <meta charset="utf-8">[API Documentation and API Reference](https://devdocs.veriff.com/apidocs)[↗] 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](/v1/docs/sdk-guide))
  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](/v1/docs/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](https://devdocs.veriff.com/docs/idv#use-via-api). **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 <meta charset="utf-8">[API Documentation and API Reference](https://devdocs.veriff.com/apidocs)[↗] how to find these)
  1. Make sure to include the [consent](/v1/docs/ine-biometric-database-verification#how-to-add-the-consent-to-the-session) 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 <meta charset="utf-8">[POST /sessions/{sessionId}/media](https://veriff-dev-documentation.document360.io/apidocs/v1sessionsidmedia-3)[↗] call
  1. 
    1. Specify the `image.context` as appropriate for the image (see [Context types (image, video)](/v1/docs/context-types-image-video-1) for more info about image context types)
  2. Patch session status to `submitted` status using <meta charset="utf-8">[PATCH /sessions/{sessionId}](https://veriff-dev-documentation.document360.io/apidocs/v1sessionsid-2)[↗] call
  3. Check the decision data and/or session related info from the [decision webhook](/v1/docs/decision-webhook) and/or query the data from the <meta charset="utf-8">[GET sessions/{sessionId}/decision](https://veriff-dev-documentation.document360.io/apidocs/v1sessionsiddecision-1)[↗] 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 <meta charset="utf-8">[POST /sessions](https://veriff-dev-documentation.document360.io/apidocs/v1sessions)[↗] documentation.

```curl
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
            }
        ],
        ...
    }
}'
```

> [!TIP]
> **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

> [!NOTE]
> 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](/v1/docs/decision-webhook) payload.

```json
{
    "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

> [!NOTE]
> 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 <meta charset="utf-8">[GET sessions/{sessionId}/decision](https://veriff-dev-documentation.document360.io/apidocs/v1sessionsiddecision-1)[↗] documentation.

```json
{
    "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.

<meta charset="utf-8">

→ *See*[*Review verification in Veriff Customer Portal*](/v1/docs/how-to-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:

- [Verification session status codes (table)](/v1/docs/verification-session-status-codes-table)
- [Verification session decision codes (table)](/v1/docs/verification-session-decision-codes-table)
- [Granular reason codes (table)](/v1/docs/granular-reason-codes)

---

## Changelog

| Date | Description |
| --- | --- |
| May 25, 2026 | Article title and intro text updated Availability matrix added |
| Feb 3, 2026 | Documentation published |

Veriff customer back-office, a dashboard where you can see your end-users' verification data.

Depending on your setup, you may be required to access the environment via station.veriff.com or hub.veriff.com. Always **check your sign-up email** and make sure that you **log in via correct address**.

A session during which the end-user is verified. It starts when a session is created, it can contain several attempts (i.e. steps of uploading media, sending additional data etc.) and it ends when a conclusive decision (“approved”, “declined”, “expired”/”abandoned”) is granted.

Each verification session receives an unique ID, aka the **session ID**, which can be added to the API URL when making API requests.

**User of Veriff customer's solution**, the person who goes through the verification flow (aka "end-user flow").

This where the end-user is directed to go through the verification flow, and it is **unique for each verification session**.

It is a combination of the `base URL` and the `sessionToken`, created as soon as a verification session is created. You can find its value in the response payload of your POST /sessions call, as `verification.url`.

The data that you send when you make an API request, or that you receive when you get a response.

## Related

- [Getting Started](/getting-started.md)
- [Integrations](/how-to-create-an-integration.md)
- [Create verification session](/how-to-generate-sessions-manually.md)
- [Webhooks Guide](/webhooks-guide.md)
- [Codes](/codes.md)
