For NBFCs

Automatically mask Aadhaar in loan documents

An NBFC loan file collects an Aadhaar, a PAN, bank statements, a cancelled cheque and salary slips — then copies of that file travel to a co-lender, an auditor, a collections agency and a securitisation buyer. This API makes the documents safe to move before any of that happens.

Talk to our technical team → — for integration questions, a security review or a volume estimate.

Where an NBFC actually leaks Aadhaar numbers

Not at the point of collection — that part is usually well controlled. It leaks downstream, in the four places a copy of the loan file goes after onboarding is done and nobody is watching it any more.

Co-lending packets
The partner bank gets the KYC file. Whatever is in it is now in their systems too, under their retention policy, not yours.
Collections
Field agents and recovery agencies get customer documents on personal devices. This is the single hardest copy to control once it exists.
Audit and securitisation
Sample files are pulled and shared by email. An unmasked Aadhaar in that sample is an unmasked Aadhaar in an inbox forever.
The LMS itself
The original upload sits in object storage, in every backup and every replica, long after the loan is closed.
The fix is one call at ingestion. Mask on the way in, store the masked version as the working copy, and the four problems above stop being problems because there is nothing sensitive left to leak.

A loan file, document by document

Aadhaar card
/mask-aadhaar covers the first eight digits and leaves the last four readable — the form UIDAI recognises, so it still works as a KYC record. /extract-aadhaar reads name, DOB, gender and the masked number as JSON for your CRM, with the checksum validated so an OCR mis-read is caught rather than filed.
PAN card
/mask-pan and /extract-pan. PAN is the identifier most often left readable because everyone concentrates on Aadhaar.
Bank statement
/redact-pii covers the account number and IFSC. Account numbers are off by default — nine to eighteen digits describes an invoice number equally well — so you enable that type only where you know the document.
Salary slip, utility bill
/redact-pii again. It is document-agnostic, so it does not need to recognise the form to find the identifiers on it.
The whole packet
/bulk/mask-aadhaar or /bulk/anonymise takes the batch in one call and returns a ZIP with a manifest giving per-document status.

What your auditor will ask, and what to answer

A worked integration

The smallest change that removes the risk: one call between upload and storage. Nothing else in your pipeline moves.

1. Customer uploads
Your app receives the document as it does today.
2. Extract, if you need the data
/extract-aadhaar returns the fields as JSON. Check checksum_valid before you trust the number.
3. Mask
/mask-aadhaar returns the redacted document. Check X-Masked-Count is non-zero.
4. Store the masked copy
The masked file becomes the working document in your LMS. The original is discarded, not archived — that is the whole point.
5. Anything downstream
Co-lender, auditor, collections all receive the masked version, because it is the only version that exists.

Worked client code with retries and error branching is published for Python, Node.js and Java.

Questions we get asked

Can we mask Aadhaar in loan documents automatically?

Yes. One REST call per document, or one call per batch. Send the PDF or image, get the same document back with the first eight digits of the Aadhaar number covered and the last four readable. Put the call between upload and storage and the unmasked file never becomes a stored object.

Does it work on multi-page loan packets?

Yes. PDFs are processed page by page, so a scanned packet with the Aadhaar on page four and the PAN on page seven is handled in one call. The page is rasterised before the redaction is drawn, so the number is genuinely removed rather than covered.

Do you verify identity against UIDAI?

No, and we are not licensed to. We are not an AUA or KUA. We read what is printed on the document, check the document's own signed QR where present, and redact identifiers. Authentication against the UIDAI database needs a licensed AUA.

Can we buy only masking, without the extraction endpoints?

Yes, and it is enforced rather than promised. Plans list the endpoints they include and a key calling anything else is refused with a 403. A masking-only plan genuinely cannot reach the extraction endpoints that return the number in the clear.

What volume do you handle?

Quota and per-minute throughput are set per plan rather than per tier. Tell us your monthly volume and your peak — month-end and quarter-end spikes included — and we size both.

Related

Talk to us about your document volume

Tell us how many documents a month you process and what your peak looks like. We will size a plan, provision a key with a test quota, and answer a security questionnaire if you need one.