deepidv Logo

Developer reference

Mexico CURP verification API: 18-character structure, state codes and RENAPO checks

The CURP is Mexico's population registry code: eighteen characters built from the holder's names, date of birth, sex and state of birth, closed by a check digit. It can be generated from personal data, which makes it easy to validate and easy to fake, so the RENAPO record and the INE voter credential do the real work. The deepidv verification API validates the CURP, authenticates the INE credential and matches the face live.

Last reviewed October 2026

Field layout of the 18-character CURP

CURP fields by position
CharactersFieldImplementation notes
1First surname, first letter
2First surname, first internal vowelReplaced with X where the four letters would form an offensive word.
3Second surname, first letterX if there is no second surname.
4Given name, first letter
5-10Date of birthYYMMDD.
11SexH for male and M for female. X is issued for non-binary holders.
12-13State of birthSee codes below. NE for births abroad.
14-16Internal consonantsFirst internal consonant of first surname, second surname and given name.
17HomoclaveA digit for births before 2000, a letter from 2000.
18Check digitComputed from the first 17 characters.

State codes

AS Aguascalientes, BC Baja California, BS Baja California Sur, CC Campeche, CL Coahuila, CM Colima, CS Chiapas, CH Chihuahua, DF Ciudad de México, DG Durango, GT Guanajuato, GR Guerrero, HG Hidalgo, JC Jalisco, MC Estado de México, 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 born abroad.

Response contents of a Mexico CURP verification API

A parse result tells you whether a number is well formed. A verification response tells you whether the person in front of the camera owns it. deepidv runs one session: document capture with OCR and the AI document fraud check, face liveness with a 1:1 match to the document photo, the RENAPO and INE record checks, PEP and sanctions screening, and an optional 1:N match that flags the same face behind a second account.

  • One decision per session, with an outcome for every step, delivered by webhook (session.status.verified, session.status.rejected, session.status.failed).
  • A reason for every non-pass outcome, separating malformed input, a record that was not found, a mismatch between document and record, and a registry that did not answer.
  • A signed verification receipt with a UTC timestamp per step, anchored on Base L2 with zero personal data on chain, checkable at proof.deepidv.com.

Capturing the INE credential

The INE voter credential is the most used ID in Mexico. It carries a clave de elector, a CIC and OCR numbers and QR codes on the back. deepidv reads front and back, checks that the CURP printed on the credential matches the one decoded from the holder's data, and keeps Spanish accents as captured.

RENAPO and INE record checks

RENAPO confirms that a CURP exists and returns the registered name, date of birth, sex and state. The INE's credential verification service confirms that a credential is current in the nominal list. deepidv connects to each.

Liveness, face match and Mexican rules

Banks follow the CNBV's general provisions under Article 115 of the Credit Institutions Law, and other regulated activities follow the LFPIORPI. Both require identification and ongoing monitoring, with reports to the UIF. deepidv runs passive liveness, a face match to the credential and PEP and sanctions screening, and Arbiter drafts the reports for review.

How deepidv runs Mexico verification

deepidv is a verification engine and agentic compliance suite built from the ground up, without third-party verification APIs underneath. The engine is SOC 2, ISO 27001 and PCI DSS certified, and deepidv is a member of DIACC and the AVPA. Luna, the verification agent, builds and sends Mexico verification workflows from the platform or from any LLM through MCP. Arbiter, the compliance agent, maps the workflow to CNBV (Article 115 of the Credit Institutions Law), LFPIORPI requirements, monitors accounts after onboarding and drafts suspicious transaction reports for Unidad de Inteligencia Financiera (UIF) for your team to review.

Frequently asked questions

What does the seventeenth character of a CURP mean?

It is the homoclave. A digit means the holder was born before 2000; a letter means 2000 or later.

What is NE in a CURP?

The state code for people born outside Mexico.

Can a CURP be validated offline?

Its structure and check digit can. Because a CURP can be generated from personal data, existence needs the RENAPO check.

Why is the INE credential checked separately?

It is the photo document. The INE service confirms the credential is current, and the face match ties it to the person.

Why does a CURP sometimes contain an X in the second position?

RENAPO replaces the vowel with X when the first four letters would form an offensive word.

API documentation

Read the endpoints, field names and webhook events in the docs, or book a call to scope Mexico verification for your product.

Related pages