Mexican INE Data & Face Validation
Jumio has a number of database check services available for Mexico. These checks allow you to validate Mexican National IDs and personal identifiable information.
This service connects with the Mexican National Electoral Institute (Instituto Nacional Electoral, INE) to validate INE ID numbers, owner information and biometric information. There are 2 services that are available for INE:
1. Data Validation of Voting credential at INE.
- Verifies that the data registered at INE’s nominal database matches those presented by the user.
- Validates that the credential is a valid document.

2. Biometric Validation of Voting credential at INE.
Verifies that the face of the user matches that registered in the INE.
The data validation and Biometric validation services both require a direct contract with the INE. Please see your Jumio Sales representative for more information. We work with a partner to directly integrate with INE.

| Service Name | Description | Required Fields | Verifiable Fields |
|---|---|---|---|
| Mexico INE Data Validation | Input is verified against the INE | Elector Key, OCR, Issue # | Name, Paternal Surname, Maternal Surname, Curp #(National Id), OCR#, Elector Key, Registration Year, Issuing Year, Issuing Number |
| Mexico INE Face Validation | Input is verified against the INE | Elector Key, OCR, Issue # | Selfie Image, Name, Paternal Surname, Maternal Surname, Face Match, OCR#, Elector Key, Registration Year, Issuing Year, Issuing Number, Curp #(Id number) |
Customer Onboarding
Due to the nature of the integration with INE, we will work with our partner to stand up a dedicated secure infrastructure that is required by the Mexican Government to access INE. Once the contract with INE is signed, our production team will work you and our partner (FIMPE) to start the onboarding process.
Our production team needs the following information:
AWS Region and Stage where Middleware needs to be deployed.
Tenant Information:
- Tenant GUID
- Tenant Id
- Tenant Name
FIMPE Middleware Key files(provided by FIMPE):
- INSTITUTONACIONALELECTORAL_publica.key
- MW_KEYS_TO_SVBI_PRIVATE_MW_KEY
- publica.key
- privada.key
- FIMPE SVBI Port Number(provided by FIMPE)
The estimated time needed for completion:
- 4-5 days/client to setup the environments
- 2 days/client for the Engineering team to test and certify the setup and functionality.
Required Credentials
Prepared Data: INE Data
| Key | Type | Mandatory | Description |
|---|---|---|---|
| firstName | string | no | First name of the subject. Optimal to include. |
| paternalSurname | string | no | Paternal surname of the subject. |
| maternalSurname | string | no | Maternal surname of the subject. |
| address | Object | no | Only the fields which are mentioned are required |
| address.country | string | no | country should be set to “MEX” |
| id | Object | no | See in next row |
| id.idNumber | string | no | CURP ID number # example "XXXX910225XXXXXS09" |
| id.Type | string | conditional | ID_CARD |
| id.subType | string | no | Only required for countries where idType is not sufficient. |
| id.issuingDate | string | no | Date in YYYY-MM-DD format only. |
| id.expiryDate | string | no | Date in YYYY-MM-DD format only. |
| ine | Object | yes | See in next row |
| ine.cic | string | no | CIC number of the elector credential |
| ine.ocr | string | yes | OCR number of the elector credential |
| ine.issuingNumber | string | yes | Issuing Number - Numeric |
| ine.electorKey | string | yes | Elector Key - 18 Characters |
| ine.registrationYear | string | no | YYYY |
| ine.issuingYear | string | no | YYYY |
Capability Request
{
"firstName": "XXXXX",
"paternalSurname": "XXXXXX",
"maternalSurname": "XXXXX",
"address": {
"country": "MEX"
},
"id": {
"idNumber": "XYZA891218ABCEFG01",
"type": "ID_CARD",
"subType": "",
"issuingDate": "",
"expiryDate": ""
},
"ine": {
"cic": "201112341",
"ocr": "0000345678911", <mandatory>
"issuingNumber": "02", <mandatory>
"electorKey": "ABCDEF12341809C100",<mandatory>
"registrationYear": 2008,
"issuingYear": 2019
}
}
Response Values
Details
| Parameter | Type | Note |
|---|---|---|
| id | string | UUID of the capability |
| credentials | array(Credential) | |
| decision | object | |
| decision.type | string | Possible values: NOT_EXECUTED, PASSED, REJECTED, WARNING |
If curp # is a mismatch, decision = REJECT, risk score 100, else: | ||
If elector key, ocr, and name are a match, decision = PASS, risk score 0, else decision = WARNING, risk score 50 | ||
| decision.details | object | |
| decision.details.label | string | Possible values: OK, DENY, ALERT, NOT_ENOUGH_DATA, TECHNICAL_ERROR, PERMISSION_DENIED, BAD_REQUEST, PRECONDITION_NOT_FULFILLED |
| data | object | |
| data.completeNameMatch | string | Possible values: MATCH, NOT_MATCH |
| data.nationalIdMatch | string | Possible values: MATCH, NOT_MATCH |
| data.ocrMatch | string | Possible values: MATCH, NOT_MATCH |
| data.issuingNumberMatch | string | Possible values: MATCH, NOT_MATCH |
| data.registrationYearMatch | string | Possible values: MATCH, NOT_MATCH |
| data.issuingYearMatch | string | Possible values: MATCH, NOT_MATCH |
| data.electorKeyMatch | string | Possible values: MATCH, NOT_MATCH |
| data.paternalSurnameMatch | string | Possible values: MATCH, NOT_MATCH |
| data.maternalSurnameMatch | string | Possible values: MATCH, NOT_MATCH |
Credential
| Key | Type | Description |
|---|---|---|
| id | string | UUID of credential used |
| category | string | Category of credential used |
Capability Response
"govtIdVerification": [
{
"id": "d1858198-d2f2-4235-97f7-5f9cb088a2ae",
"credentials": [
{
"id": "21135260-f435-4052-93a7-a943f12d5f2c",
"category": "ID"
}
],
"decision": {
"type": "WARNING",
"details": {
"label": "ALERT"
}
},
"data": {
"completeNameMatch": "NOT_MATCH",
"nationalIdMatch": "MATCH",
"ocrMatch": "MATCH",
"issuingNumberMatch": "NOT_MATCH",
"registrationYearMatch": "NOT_MATCH",
"issuingYearMatch": "MATCH",
"electorKeyMatch": "MATCH",
"paternalSurnameMatch": "MATCH",
"maternalSurnameMatch": "MATCH"
}
}
]
Required Credentials for Prepared Data: INE Data with Biometric (Selfie)
Required Credentials
| Key | Type | Mandatory | Description |
|---|---|---|---|
| firstName | string | no | |
| paternalSurname | string | no | |
| maternalSurname | string | no | |
| address | Object | no | Only the fields which are mentioned are required |
| address.country | string | no | country should be set to “MEX” |
| id | Object | no | See in next row |
| id.idNumber | string | no | CURP ID number # example "XXXX910225XXXXXS09" |
| id.Type | string | conditional | ID_CARD |
| id.subType | string | no | |
| id.issuingDate | string | no | |
| id.expiryDate | string | no | |
| ine | Object | yes | See in next row |
| ine.cic | string | no | CIC number of the elector credential |
| ine.ocr | string | yes | OCR number of the elector credential |
| ine.issuingNumber | string | yes | Issuing Number - Numeric |
| ine.electorKey | string | yes | Elector Key - 18 Characters |
| ine.registrationYear | string | no | YYYY |
| ine.issuingYear | string | no | YYYY |
Biometric (Selfie) needs to be sent with Prepared Data.
Capability Request
{
"firstName": "XXXXX",
"paternalSurname": "XXXXXX",
"maternalSurname": "XXXXX",
"address": {
"country": "MEX"
},
"id": {
"idNumber": "XYZA891218ABCEFG01",
"type": "ID_CARD",
"subType": "",
"issuingDate": "",
"expiryDate": ""
},
"ine": {
"cic": "201112341",
"ocr": "0000345678911", <mandatory>
"issuingNumber": "02", <mandatory>
"electorKey": "ABCDEF12341809C100",<mandatory>
"registrationYear": 2008,
"issuingYear": 2019
}
}
Response Values
Details
| Parameter | Type | Note |
|---|---|---|
| id | string | UUID of the capability |
| credentials | array(Credential) | |
| decision | object | |
| decision.type | string | Possible values: NOT_EXECUTED, PASSED, REJECTED, WARNING |
If curp is a mismatch and face similarity is <=50%, decision = REJECT, risk score is 100, else: | ||
If the elector key, ocr, and name match with similarity >=85%, decision = PASS, risk score = 0, else decision = WARNING. Risk score = 50 | ||
| decision.details | object | |
| decision.details.label | string | Possible values: OK, DENY, ALERT, NOT_ENOUGH_DATA, TECHNICAL_ERROR, PERMISSION_DENIED, BAD_REQUEST, PRECONDITION_NOT_FULFILLED |
| data | object | |
| data.NameMatch | string | Possible values: MATCH, NOT_MATCH |
| data.faceMatch | string | Possible values: MATCH, NOT_MATCH |
| data.ocrMatch | string | Possible values: MATCH, NOT_MATCH |
| data.issuingNumberMatch | string | Possible values: MATCH, NOT_MATCH |
| data.registrationYearMatch | string | Possible values: MATCH, NOT_MATCH |
| data.issuingYearMatch | string | Possible values: MATCH, NOT_MATCH |
| data.electorKeyMatch | string | Possible values: MATCH, NOT_MATCH |
| data.paternalSurnameMatch | string | Possible values: MATCH, NOT_MATCH |
| data.maternalSurnameMatch | string | Possible values: MATCH, NOT_MATCH |
| data.idNumberMatch | string | Possible values: MATCH, NOT_MATCH |
Credential
| Key | Type | Description |
|---|---|---|
| id | string | UUID of credential used |
| category | string | Category of credential used |
Capability Response
"biometricVerification": [
{
"id": "c0015f7b-0999-4682-a1a6-a10241a01f7c",
"credentials": [
{
"id": "36b715ee-2822-488d-ac2a-159536645411",
"category": "DATA"
},
{
"id": "adce826e-a43d-45d4-84f7-80e2b917fda1",
"category": "SELFIE"
}
],
"decision": {
"type": "REJECTED",
"details": {
"label": "HIGH_RISK"
}
},
"data": {
"nameMatch": "NOT_MATCH",
"faceMatch": "NOT_MATCH",
"ocrMatch": "MATCH",
"issuingNumberMatch": "NOT_MATCH",
"registrationYearMatch": "NOT_MATCH",
"issuingYearMatch": "MATCH",
"electorKeyMatch": "MATCH",
"paternalSurnameMatch": "MATCH",
"maternalSurnameMatch": "MATCH",
"idNumberMatch": "MATCH"
}
}
]