GOPURAM

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.

EndpointDocumentKey checks
/v1/docs/in/aadhaarAadhaar card / e-Aadhaarformat, official Verhoeff checksum, masking (see below)
/v1/docs/in/panPAN cardAAAAA9999A format, holder-type decode, surname-initial signal
/v1/docs/in/gst-certificateGST REG-06 certificateGSTIN format, state code, official mod-36 checksum, embedded-PAN cross-check
/v1/docs/in/chequeBank cheque leafIFSC 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.