Mexican documents
INE, CURP, RFC, passport — field maps, validation rules, MRZ format.
This document details the identity documents accepted by VerifyMX, their physical structure, data fields, and validation rules. Use it to understand what the OCR step extracts and how government verification works.
INE / IFE (National Electoral Credential)
The INE (Instituto Nacional Electoral) card is the primary identity document for Mexican citizens. It replaced the IFE card in 2014 and is issued in models C–H, each with distinct layout and security features.
Models
| Model | Years issued | Key differences |
|---|---|---|
| C | 2008–2013 | IFE branding, no QR code, hologram strip |
| D | 2013–2014 | IFE → INE transition, first QR generation |
| E | 2014–2016 | INE branding, Aztec QR (encrypted) |
| F | 2017–2019 | Enhanced security, larger photo |
| G | 2020–2021 | Biometric revision, new font layout |
| H | 2022–present | Current generation, updated rear design |
Front Fields
| Field | Description | Example |
|---|---|---|
name | Full name (APELLIDO1 APELLIDO2 NOMBRE) | PÉREZ GARCÍA JUAN |
dateOfBirth | DD/MM/YYYY | 01/01/1980 |
clave | Electoral key (18 chars) | PEGJ800101HMCRRN09 |
curp | CURP (18 chars) | PEGJ800101HMCRRN09 |
section | Electoral section (4 digits) | 0421 |
emission | Emission year | 2022 |
validity | Expiry year | 2032 |
photo | Portrait image extracted from card |
Rear Fields
| Field | Description |
|---|---|
mrz1 | Machine Readable Zone line 1 (OCR-B font) |
mrz2 | Machine Readable Zone line 2 |
address.street | Street and number |
address.neighborhood | Colonia |
address.municipality | Municipio |
address.state | Estado |
address.postalCode | CP |
registrationYear | Year voter registered |
MRZ Format (Rear)
The INE rear carries a two-line MRZ in OCR-B format:
Line 1: IDMEX<clave><checkDigit><emission><validity><checkDigit><<<<<<<<
Line 2: <dateOfBirth><checkDigit><sex><address_hash><<<<<<<<<<<<<<checkDigit>
QR Code (Model E+)
From model E onwards, the front carries an Aztec QR code. The content is encrypted
with an INE public key and contains a signed copy of the card's data fields plus a
digital signature. VerifyMX decodes and validates the QR signature during the
GOVERNMENT_VERIFY step.
Validation Rules
- Electoral key (
clave): 18 alphanumeric characters, checksum per INE spec - CURP embedded in clave must match the printed CURP
- Expiry must be in the future for the verification to pass
- Photo must match selfie with ≥ 0.85 similarity score (configurable per workflow)
CURP (Clave Única de Registro de Población)
The CURP is an 18-character alphanumeric key issued to every Mexican citizen and resident. It encodes biographical data and is used for cross-referencing against RENAPO (Registro Nacional de Población).
Structure
Position 1– 4 : First consonants of names and surnames
Position 5– 6 : Birth year (YY)
Position 7– 8 : Birth month (MM)
Position 9–10 : Birth day (DD)
Position 11 : State of birth (2-char code) — see table below
Position 12 : Sex (H = Hombre, M = Mujer, X = Non-binary since 2019)
Position 13–16 : Internal consonants (disambiguation sequence)
Position 17 : Century digit (0=1900s, A=2000s)
Position 18 : Check digit (0–9 or A–Z)
Example: PEGJ800101HMCRRN09
PEG= consonants from PÉREZ GARCÍAJ= first internal consonant800101= born 1980-01-01H= maleMC= state code (Mexico City / CDMX)RRN= disambiguation0= century (1900s)9= check digit
State Codes
| Code | State |
|---|---|
AS | Aguascalientes |
BC | Baja California |
BS | Baja California Sur |
CC | Campeche |
CL | Coahuila |
CM | Colima |
CS | Chiapas |
CH | Chihuahua |
MC | Ciudad de México |
DG | Durango |
GT | Guanajuato |
GR | Guerrero |
HG | Hidalgo |
JC | Jalisco |
MN | Michoacán |
MS | Morelos |
NT | Nayarit |
NL | Nuevo León |
OC | Oaxaca |
PL | Puebla |
QT | Querétaro |
QR | Quintana Roo |
SP | San Luis Potosí |
SL | Sinaloa |
SR | Sonora |
TC | Tabasco |
TS | Tamaulipas |
TL | Tlaxcala |
VZ | Veracruz |
YN | Yucatán |
ZS | Zacatecas |
NE | Foreign-born residents |
CURP Validation
VerifyMX validates:
- Length exactly 18 characters
- Check digit (position 18) per official algorithm
- Date encoded in positions 5–10 is a valid calendar date
- State code in positions 11–12 is in the official list
- Sex code in position 12 is
H,M, orX - RENAPO database lookup (during
GOVERNMENT_VERIFYstep) — confirms the CURP is registered and matches the biographical data on the document
Biometric CURP (2026)
Starting 2026, RENAPO is issuing a "CURP biométrica" that includes a facial biometric linked to the CURP. VerifyMX supports biometric CURP verification when available.
RFC (Registro Federal de Contribuyentes)
The RFC is a 12-character tax ID for individuals and a 12-character ID for companies. It is issued by the SAT (Servicio de Administración Tributaria).
Structure (Individuals — 13 chars)
Position 1– 4 : Consonants from names/surnames (same algorithm as CURP)
Position 5– 6 : Birth year (YY)
Position 7– 8 : Birth month (MM)
Position 9–10 : Birth day (DD)
Position 11–13 : Homoclave (3 alphanumeric chars assigned by SAT)
Example: PEGJ800101ABC
Structure (Companies — 12 chars)
Position 1– 3 : Acronym from company name
Position 4– 5 : Incorporation year (YY)
Position 6– 7 : Month (MM)
Position 8– 9 : Day (DD)
Position 10–12 : Homoclave
RFC Validation
- Length 12 (company) or 13 (individual)
- Date in positions 5–10 is a valid calendar date
- Homoclave follows SAT character set
- SAT 69-B list check — VerifyMX cross-references the RFC against the SAT Article
69-B "lista negra" of companies with cancelled fiscal obligations during
aml/screen
Mexican Passport
Mexican passports comply with ICAO 9303 Machine Readable Travel Document standard.
MRZ Format
Two-line MRZ in OCR-B font at the bottom of the bio-data page:
Line 1 (44 chars):
P<MEX<SURNAME<<GIVENNAMES<<<<<<<<<<<<<<<<<<
Line 2 (44 chars):
<passport_number><check><MX><birth_date><check><sex><expiry_date><check><personal_num><check><composite_check>
Field breakdown:
| Field | Positions (line 2) | Description |
|---|---|---|
| Passport number | 1–9 | Alphanumeric document number |
| Check digit 1 | 10 | Luhn check on passport number |
| Country | 11–13 | Always MEX |
| Date of birth | 14–19 | YYMMDD |
| Check digit 2 | 20 | Luhn check on date of birth |
| Sex | 21 | M, F, or < (unspecified) |
| Expiry date | 22–27 | YYMMDD |
| Check digit 3 | 28 | Luhn check on expiry date |
| Personal number | 29–42 | CURP (14 chars) + <<<< padding |
| Check digit 4 | 43 | Luhn check on personal number |
| Composite check | 44 | Luhn check over fields 1–43 |
NFC Chip (ePassport)
Post-2019 Mexican passports contain an NFC chip (ICAO LDS1 compliant) with:
- Data Group 1 (DG1): MRZ data
- Data Group 2 (DG2): Facial biometric image
- Document Security Object (SOD): Digital signature from SRE (Mexican foreign ministry)
VerifyMX can read and verify the NFC chip signature when the device has NFC hardware. The chip signature is the strongest proof of document authenticity.
Driver's Licence (Licencia de Conducir)
Driver's licences in Mexico are issued by individual states and vary significantly in layout and data fields. VerifyMX handles all 32 state variants.
Common Fields (all states)
| Field | Description |
|---|---|
name | Full name |
curp | CURP (on most post-2015 licences) |
dateOfBirth | Date of birth |
licenceNumber | State-assigned licence number |
category | Licence category (A, B, C, D, E) |
validity | Expiry date |
issueDate | Issue date |
restrictions | Optional restrictions code |
Notes
- Driver's licences are accepted for identity verification but not for government database cross-referencing (RENAPO only covers INE and passport).
- The
GOVERNMENT_VERIFYstep is skipped or markedSKIPPEDwhen the only document is a driver's licence.
Comprobante de Domicilio (Proof of Address)
CFE (electricity), TELMEX, and water utility bills are accepted as proof of address.
The DOCUMENT_OCR step extracts:
| Field | Description |
|---|---|
name | Account holder name |
address.street | Street and number |
address.neighborhood | Colonia |
address.municipality | Municipio |
address.state | Estado |
address.postalCode | CP |
issueDate | Bill date (must be within 90 days) |
issuer | Utility company (CFE, TELMEX, etc.) |
accountNumber | Service account number |
Validation Rules
- Issue date must be within 90 days of the verification date.
- Issuer must be from the approved utility list (CFE, TELMEX, IZZI, Totalplay, CAEM, SAPAM, municipal water authorities).
- Address fields must be legible and match the INE address if cross-referencing.
OCR Confidence Scores
Every extracted field includes a confidence score (0–1). Fields below 0.75 are flagged
for manual review. You can configure per-workflow thresholds via the config property
on the DOCUMENT_OCR step:
{
"type": "DOCUMENT_OCR",
"order": 0,
"config": {
"minFieldConfidence": 0.80,
"requiredFields": ["name", "curp", "dateOfBirth", "clave"],
"allowExpired": false
}
}