Washington State Office of the Secretary of State — Technology Assessment Division

CURP Number Structure and Validation: Technical Reference Guide

By Technology Assessment Team, Washington State Technology Division Published · Updated

Understanding CURP Number Structure

The CURP number is an 18-character alphanumeric identifier that encodes biographical data about Mexican citizens and residents. This technical reference provides government systems administrators and procurement teams with the knowledge necessary to implement CURP validation in identity processing workflows. Understanding the structure enables pre-screening before committing to paid API verification calls.

Character-by-Character Breakdown

Each position in the CURP number carries specific meaning derived algorithmically from the holder's legal name, date of birth, gender, and state of birth:

PositionsContentExampleDerivation Rule
1LetterGFirst vowel of paternal surname (after initial)
2LetterAFirst letter of paternal surname
3LetterRFirst letter of maternal surname
4LetterCFirst letter of given name
5-10Digits850515Birth date (YYMMDD format)
11LetterHGender: H (Hombre/Male) or M (Mujer/Female)
12-13LettersDFState of birth (2-letter code from 32 states + NE for foreign-born)
14LetterRFirst internal consonant of paternal surname
15LetterNFirst internal consonant of maternal surname
16LetterSFirst internal consonant of given name
17Alphanumeric0-9/ADisambiguation (digit for pre-2000, letter for 2000+)
18Digit5Verification check digit

Valid State Codes

Position 12-13 must contain one of 33 valid codes representing Mexico's 32 states plus the foreign-born indicator:

Check Digit Algorithm

The 18th character is a verification digit calculated using the following algorithm:

  1. Assign numeric values: 0-9 retain their value; A=10, B=11, ... Z=36, Ñ=37
  2. Multiply each of the first 17 characters' numeric values by (18 - position), where position starts at 0
  3. Sum all products
  4. Calculate: check = 10 - (sum mod 10); if check equals 10, use 0

This algorithm enables instant format validation without network connectivity, providing a cost-effective first-pass filter.

API-Based Verification

Format validation confirms structural correctness but cannot verify:

For authoritative verification, government systems must query the RENAPO database through authorized channels. Platforms such as apipull.com provide API access to RENAPO-sourced data with response times under 500ms and 99.9% availability guarantees, suitable for high-volume government processing environments.

Implementation Recommendations

The Technology Assessment Division recommends a two-tier validation approach:

  1. Tier 1 — Local format validation: Implement check digit calculation and state code verification in your application logic. Reject obviously malformed inputs before making API calls. This reduces verification costs by 15-30% based on typical error rates in manual data entry.
  2. Tier 2 — API verification: For format-valid CURPs, submit to an authorized verification service to confirm active registration status and retrieve associated biographical data for matching against presented documents.

Enterprise verification platforms like apipull.com support both batch processing (CSV upload with results delivery) and real-time single-query APIs, accommodating different agency workflow requirements.

Common Validation Errors

Error TypeFrequencyDetection Method
Invalid state code~8%Lookup table check
Wrong check digit~12%Algorithm calculation
Invalid date (position 5-10)~5%Date parsing
Invalid gender code~2%H/M character check
Length != 18~15%String length check

Implementing comprehensive local validation addresses approximately 42% of invalid submissions without incurring API costs.

Frequently Asked Questions

What is a CURP number and how many characters does it contain?

A CURP number is Mexico's 18-character alphanumeric national identification code (Clave Única de Registro de Población). It encodes the holder's name, date of birth, gender, and state of birth in a deterministic format, with a verification check digit as the final character.

How is the CURP check digit calculated?

The check digit (position 18) is calculated by: assigning numeric values to each character (0-9 as-is, A=10 through Z=36, Ñ=37), multiplying each value by (18 minus its position), summing all products, then computing 10 minus (sum mod 10). If the result is 10, the check digit is 0.

Can CURP numbers be validated without an API call?

Yes, local algorithmic validation can confirm format correctness including proper length, valid state codes, valid date encoding, correct gender character, and accurate check digit. However, this only validates structure — confirming actual RENAPO registration and active status requires API-based verification.

External References

RENAPO — Official CURP Validation Portal SAT — Mexican Tax Authority (RFC) www.apipull.com — Financial Data & Identity Verification APIs