Mexican CURP Validation (Renapo)
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 Population Registry (Registro Nacional de Población / RENAPO) to validate that the Unique Population Registry Code (Clave Única de Registro de Población / CURP) number present on the ID card exists and its owner matches the data.

| Service Name | Description | Required Fields | Verifiable Fields |
|---|---|---|---|
| Mexico CURP Validation | Input is verified against the RENAPO (Registro Nacional de Población e Identificación Personal). This stands for the National Census and Personal Identification Registry. |
|
|
CURP Validation
Required Credentials
Prepared Data
| Key | Type | Mandatory | Description |
|---|---|---|---|
firstName | string | yes | First name of the subject. Optimal to include. |
paternalSurname | string | yes | Paternal Surname of the subject. |
maternalSurname | string | yes | Maternal Surname of the subject. |
sex | string | yes | Gender (M - Male, F - Female) |
email | string | no | Email Address |
phoneNumber | string | no | Phone Number |
ipAddress | string | no | IP Address |
socialSecurityNumber | string | no | Either socialSecurityNumber, personNumber, or idNumber should be provided |
dateOfBirth | LocalDate | yes | Date of Birth in YYYY-MM-DD format only |
address | Object | yes | Only the fields mentioned below are required |
address.country | string | yes | Country should be MEX (ISO Alpha-3 Code for Mexico) |
address.subdivision | string | no | Added in request without CURP. City subdivision of residence as it appears on the ID. |
address.state | string | no | State name can be provided here. See Supported States here. |
id | Object | yes | See details below |
id.idNumber | string | yes | CURP ID (Example: XXXXXXXXXXXXX) |
id.type | string | conditional | ID_CARD |
id.subType | string | conditional | Subtype of ID |
id.issuingDate | string | conditional | Date the ID was issued |
id.expiryDate | string | conditional | Expiry date of the ID |
info
- If CURP (nationalID) is present, we validate the CURP and surface match/no match for address (state), gender, name (first name), Date of Birth (DOB), and nationalID, if provided.
- If CURP/nationalID is not present, we validate KYC namely name (full name, paternal surname, maternal surname, gender, DOB, and address (state). All fields are mandatory except maternal surname.
- 10054 may not work, since extraction does not extract paternal and maternal surnames. It is extracted as full name and we are unable to bifurcate).
Supported States
Expand the list to view the Supported States
- AGUASCALIENTES
- BAJA CALIFORNIA
- BAJA CALIFORNIA SUR
- BORN ABROAD
- CAMPECHE
- CHIAPAS
- CHIHUAHUA
- COAHUILA
- COLIMA
- DISTRITO FEDERAL
- DURANGO
- GUANAJUATO
- GUERRERO
- HIDALGO
- JALISCO
- MÉXICO
- MICHOACÁN
- MORELOS
- NAYARIT
- NACIDO EN EL EXTRANJERO
- NUEVO LEÓN
- OAXACA
- PUEBLA
- QUERÉTARO
- QUINTANA ROO
- SAN LUIS POTOSI
- SINALOA
- SONORA
- TABASCO
- TAMAULIPAS
- TLAXCALA
- VERACRUZ
- YUCATÁN
- ZACATECAS
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 |
| 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.nationalidMatch | string | Possible values: Match, NoMatch |
| data.reasonMessage | string | Possible values: Verification Successful, WITHOUT RENAPO RESPONSE, DOES NOT RESPOND, INCORRECT DATA, REFERENCE ALREADY EXIST, UNEXPECTED ERROR |
| data.firstNameMatch | string | Match, NoMatch |
| data.dobMatch | string | Match, NoMatch |
| data.sexMatch | string | Match, NoMatch |
| data.paternalSurnameMatch | string | Match, NoMatch |
| data.maternalSurnameMatch | string | Match, NoMatch |
| data.stateKeyMatch | string | Match, NoMatch |
Credential
| Key | Type | Description |
|---|---|---|
| id | string | UUID of credential used |
| category | string | Category of credential used |
Capability Request (with/without CURP)
- Request with CURP
- Request without CURP
{
"firstName": "Jorge",
"paternalSurname": "Garcia",
"maternalSurname": "Perez",
"sex": "H",
"dateOfBirth": "1991-01-01",
"address": {
"country": "MEX"
},
"id": {
"idNumber": "ID1234567890",
"type": "ID_CARD"
}
}
{
"firstName": "Jorge",
"paternalSurname": "Garcia",
"maternalSurname": "Perez",
"sex": "H",
"dateOfBirth": "1991-01-01",
"address": {
"country": "MEX",
"subdivision": "CMX"
},
"id": {
"idNumber": "ID1234567890",
"type": "ID_CARD"
}
}
Capability Response (CURP ID)
{
"govtIdVerification": [
{
"id": "439e2649-d1f4-4418-a9e7-14cba6522124",
"credentials": [
{
"id": "45591915-55b2-42fc-a615-8f170c5558b4",
"category": "DATA"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
},
"data": {
"firstNameMatch": "NOT_MATCH",
"nationalIdMatch": "MATCH",
"sexMatch": "MATCH",
"stateKeyMatch": "NOT_MATCH",
"reasonMessage": "Verification Successful"
}
}
]
}
Capability Response (No CURP ID)
{
"govtIdVerification": [
{
"id": "bd84dbf7-35dc-4136-bc54-8faea1f09116",
"credentials": [
{
"id": "b8d793ab-8f65-47c1-8025-9f00a477b5fb",
"category": "DATA"
}
],
"decision": {
"type": "PASSED",
"details": {
"label": "OK"
}
},
"data": {
"firstNameMatch": "MATCH",
"dobMatch": "MATCH",
"sexMatch": "MATCH",
"paternalSurnameMatch": "MATCH",
"maternalSurnameMatch": "MATCH",
"stateKeyMatch": "MATCH",
"reasonMessage": "Verification Successful"
}
}
]
}