India documents
Aadhaar (masked by design), PAN, GST certificate, bank cheque — extraction + official checksums in one call.
POST /v1/docs/in/{type} extracts structured data from India's core
documents and runs deterministic validation — including the official
checksum algorithms where they exist (Aadhaar's Verhoeff, GSTIN's mod-36
check character). One call, typed JSON, itemized cost, typically under
$0.03 per document.
| Endpoint | Document | Key checks |
|---|---|---|
/v1/docs/in/aadhaar | Aadhaar card / e-Aadhaar | format, official Verhoeff checksum, masking (see below) |
/v1/docs/in/pan | PAN card | AAAAA9999A format, holder-type decode, surname-initial signal |
/v1/docs/in/gst-certificate | GST REG-06 certificate | GSTIN format, state code, official mod-36 checksum, embedded-PAN cross-check |
/v1/docs/in/cheque | Bank cheque leaf | IFSC format, account number, MICR |
Aadhaar numbers are masked. Always.
UIDAI regulations restrict the display and storage of full Aadhaar numbers — so this endpoint never returns one. The number is extracted in-flight, its Verhoeff checksum is validated, and the response carries only the masked form:
{
"data": {
"aadhaar_number": "XXXX-XXXX-9014",
"aadhaar_last4": "9014",
"name": "…",
"date_of_birth": "1990-01-01"
},
"checks": [
{ "name": "aadhaar_format", "pass": true },
{ "name": "verhoeff_checksum_valid", "pass": true, "detail": "official UIDAI Verhoeff checksum" },
{ "name": "number_masked_in_response", "pass": true, "detail": "full Aadhaar numbers are never returned (UIDAI-aligned)" }
]
}
There is deliberately no unmask option. If your workflow requires the full number, that's a UIDAI-regulated e-KYC flow with consent — outside what a document API should do.
Cross-checks worth knowing
A GSTIN embeds the holder's PAN in characters 3–12 — the pack validates
the embedded PAN's structure and decodes the holder type (4th character:
P individual, C company, F firm/LLP …). For individual PANs, the 5th
character should be the surname initial — reported as a soft signal,
since printed name order varies. Cheque extraction validates IFSC
(AAAA0XXXXXX) and the 9-digit MICR — the classic bank-proof intake for
Indian fintech onboarding.
As with all Document Intelligence endpoints: this
is extraction + validation, not identity verification. Authoritative
channels: UIDAI (Aadhaar), the Income Tax Department's verify-PAN service,
the GST portal's taxpayer search, and the issuing bank (penny-drop) for
account ownership. Every response's authority_hint points the way.
Documents are processed in-flight and never stored.