Extraction + Validation

Mexico's ID card, read and validated

Singula captures the printed data from the front and the back of the voter ID card and queries the INE on whether that card is still current. The response arrives in seconds.

Front and back
INE Lista Nominal
Card models A through H
Free test environment
Status lookup

The card’s status, straight from the INE.

Singula reads both faces of the card and looks up its status on the INE’s Lista Nominal.

The response says whether the card is current or cancelled, with the recorded grounds — death, theft or forged paperwork — in the same review.

INE Lista Nominal
the source that answers
Seconds
per lookup
Status and grounds
in the same response
Customer file
Front
Back
Extracted data
Lista Nominal
Mexican Federal IDSINGULA · DEMO
Name
GARCÍA HERNÁNDEZ
MARÍA FERNANDA
Address
AV. REVOLUCIÓN 1234
COL. CENTRO 06000 CDMX
CURP
GAHM900315MDFRRR05
DOB
15/03/1990
Sex
M
Section
1247
Exp.
2031
INE
CIC
0000 0000 0000
IDENTIFICADOR
0000000000
EMISIÓN
2021
MRZ
IDMEX0000000000XXXX000000<XXX
APELLIDO<APELLIDO<<NOMBRE<NOMBRE
<<MEXICANA<<<<<<<<<<<<<<<<<<<<
Front
Data extracted from the document
Full name
GARCÍA HERNÁNDEZ MARÍA F.
CURP
GAHM900315MDFRRR05
Date of birth
1990-03-15
Electoral section
1247
Printed expiry
2031
INE/IFE extractionCurrentValid, current ID card
1 / 4 · Front

What gets read from the card

The front carries the personal data; the back, the machine-readable zone and the issuance codes. With those codes, the INE is queried for the status of that document.

Full name
GARCÍA HERNÁNDEZ MARÍA F.
CURP
GAHM900315MDFRRR05
Date of birth
1990-03-15
Address
AV. REVOLUCIÓN 1234, CDMX
Electoral section
1247
Printed expiry
2031
Card model
G
Machine-readable zone
IDMEX0000000000XXXX…

The original image is stored in the file beside the values read from it. The card opens from that same file in later reviews.

What the card lets us derive

The same reading returns the RFC computed from the name and the date of birth, plus the state, the country of birth and the nationality encoded in the CURP. A value that could not be derived arrives blank, never guessed.

The INE’s answer on that card

Official source

INE Lista Nominal

The values read from the card are used to query the Lista Nominal, the registry of active cards the INE maintains. The answer indicates whether the card is still current, whether it was cancelled, whether it shows up as stolen or duplicated, or whether the data does not match the registry.

When there is a cancellation, the response includes the grounds recorded in the INE’s catalogue. The status stays in the file with its receipt and its date.

Status of the cardGrounds for cancellationWith receipt and date
Lista nominal
VIGENTE

In a full identity verification, the Lista Nominal lookup runs in the same flow as the document read. Both results stay in the same file.

Checks that run on the document

Beyond capturing the fields, the card goes through four checks, and each one comes back with its own result.

Front-back cross-check

The check compares what is printed on the front with what is encoded on the back. Any difference is flagged in the result.

Model and expiry

The check identifies the card model and reads its printed expiry. IFE cards still in circulation are processed the same way.

Tampering signals

The check detects reprints and composites built from fragments of two different documents.

Cross-checks with the sources

The CURP that was read is checked against RENAPO, and the RFC against the SAT registry, inside the same file.

Whether to approve, reject or send the case to manual review is defined by your policy.

How it works

Front upload

Your customer uploads it from your product, or your team loads it into the file. A phone photo works if the text is legible.

Back upload

The back is checked against the front and carries the codes that build the INE lookup.

Result in the file

The captured fields and every check stay in the customer’s file. Your system is notified when the lookup closes.

When another photo is requested

Each face arrives with its own quality report: a score and the measured defects —blur, glare, low resolution, cropping, a dark frame—, each with its severity. The report informs; it never rejects on its own.

Unreadable text

The response flags the image as unreadable and indicates the reason, such as a shadow or a cropped frame.

Missing face

The verification needs both faces. The response indicates which one is missing.

Expired card

The printed expiry is read and compared with the date of the lookup. An expired card comes flagged in the result.

The values already read stay stored with their date. The second attempt runs against the same file.

Where this fits in your operation

Leasing and housing

The tenant’s card is read when the file is opened.

The captured data and the INE’s answer stay in that person’s file.

Credit and financial services

The applicant’s card is validated during remote onboarding.

The Lista Nominal status arrives before the credit decision.

Hiring

The candidate’s card is read for the employment file.

The data arrives captured and dated, with the card’s status checked with the INE.

What this settles

  • Field capture is automatic. The name and the CURP arrive exactly as printed.
  • The INE answers whether the card is current. The answer is dated inside the file.
  • Every lookup keeps its receipt and its date. The file keeps the images and the result of every check.
  • The acceptance criteria are defined by your company. Singula delivers the values read and the official source’s answer.
  • The card stays in the customer’s file. A renewed card generates a second lookup, with its own date.
API

Everything runs through the API.

Every operation on this page runs as an API call. The full field-by-field reference is in the documentation.

  • Use it directly (the value in the body) or on a customer file. Same response.
ine-verify.sh
curl -X POST https://api.singula.mx/app/ine-extraction/customer/cus_lzk9m4ab3f \
  -H "Authorization: Bearer sk_live_..." \
  -F "ine_front=@ine_frente.jpg" \
  -F "ine_back=@ine_reverso.jpg"

→ { "request_id": "6622f8a1c1d2e3f4a5b6c7d8", "status": "processing" }

# El resultado llega por webhook. También se consulta con el request_id:
curl https://api.singula.mx/app/ine-extraction/status/6622f8a1c1d2e3f4a5b6c7d8 \
  -H "Authorization: Bearer sk_live_..."

Frequently asked questions

Both faces of the card, as a photo or a PDF. Without the back, the INE cannot be queried for the status of that document.

Models A through H: INE cards and the IFE ones still in circulation. The detected model comes back with the result, along with the printed expiry.

The response indicates it in the same lookup, with the grounds for cancellation included. The decision on the application stays with your team.

Yes. The test environment answers with mocked data and consumes no balance. The full integration is tested without sending real documents.

Inside that customer’s file, with the original image alongside and the receipt of every lookup.

Try the full flow at no cost

The test environment accepts mocked documents and consumes no balance. Write to us for access.

Talk to sales