Most organisations that collect a full Aadhaar number cannot do anything with it. They are not permitted to authenticate against it, they have no way to verify it, and the digits they actually use to match a customer are the four a masked copy already shows. What the full number adds is not capability. It is liability.

That sentence is the whole argument, and it is worth sitting with, because most discussion of Aadhaar masking in KYC skips straight to whether it is mandatory. That is the less interesting question. The interesting question is what an organisation gains by holding the first eight digits, and for the overwhelming majority of regulated entities in India the honest answer is nothing at all.

What the first eight digits are for

An Aadhaar number is twelve digits, and masking covers the first eight, leaving the last four readable: 1234 5678 9012 becomes XXXX XXXX 9012. That split is not arbitrary, and understanding why it falls there explains most of what follows.

The last four digits are a reconciliation key. They let a human or a system confirm that the document in front of them belongs to the record they already hold. A collections officer looking at a masked copy can still say "yes, this is the same customer" because the record in the loan management system ends in the same four digits. Nothing about that workflow requires more.

The first eight digits are what make the number a lookup key — the thing that identifies a person across databases that have never spoken to each other. That is precisely the property that makes the number valuable to an attacker and dangerous to store. It is also the property that, for most organisations, has no legitimate internal use whatsoever.

So the masked form is not a degraded version of the document. For a filing use case it is the correct version, and the unmasked one is over-collection. UIDAI's own e-Aadhaar download offers a masked variant, which is a reasonably clear signal about intended use.

Most teams cannot use the number they collect

Here is the part that surprises people who have not looked at the authorisation model. Verifying an Aadhaar number against UIDAI is not something any organisation can do. It requires registration with UIDAI as an authentication or KYC user agency, and that status is granted to a limited set of entities under specific conditions.

If your organisation does not hold that status — and most NBFCs, housing finance companies, insurance intermediaries, brokerages, fintech lenders and their vendors do not — then the Aadhaar number in your KYC file has never been checked against anything. It is a string a customer typed or a scan your OCR read. It carries no more assurance than a self-declared address.

The 2018 Puttaswamy judgment sharpened this further by striking down Section 57 of the Aadhaar Act, which had been read as allowing private bodies to require Aadhaar under contract. A private entity now needs a statutory basis to make Aadhaar mandatory. Plenty of organisations carried on asking anyway, out of habit and because customers comply.

Put those two facts together and the position is stark: a large number of Indian institutions are storing an unverified, unverifiable identifier that they are frequently not entitled to insist on, in order to perform a matching function that four digits would satisfy.

The blast radius of an unmasked document store

The reason this matters operationally rather than philosophically is what a breach of that store looks like.

An Aadhaar number in isolation is not a credential. It is not a password, and treating a leaked number as catastrophic on its own overstates it. The problem is that a KYC document is never a number in isolation. It is a number bound to a name, a date of birth, an address, a photograph and usually a PAN, all on the same page, verified enough that your own institution accepted it.

That bundle is an identity kit. It is sufficient raw material for a SIM swap, for a fraudulent loan application at an institution with weaker controls, and — this is the underrated one — for social engineering against organisations that treat the last four digits of Aadhaar as a shared secret over the phone. A leaked corpus of complete KYC files is worth substantially more to a fraudster than a leaked list of numbers, and it is what document stores actually contain.

Masking does not eliminate that. A masked file still carries name, address, photograph and date of birth. What it removes is the cross-database lookup key and the single field most likely to turn an incident into a national story. The asymmetry is the point: the mitigation costs one API call per document, and the downside it reduces is measured in regulatory action and press coverage.

The copies you forgot you made

Most teams that have thought about this at all have concluded they will mask before archiving. That plan almost always fails, and it fails for a structural reason rather than a careless one.

Trace a single KYC document through a typical lending stack. A field agent photographs an Aadhaar card on a phone. It goes into an upload endpoint, which writes it to a staging bucket. A loan origination system pulls it and stores its own copy against the application. A document management system keeps the canonical version. An OCR vendor — quite possibly a third party — receives it to extract fields. An analytics pipeline exports a sample for model training. Someone in credit ops emails it to someone in risk. A copy sits in a chat thread because that was faster than the portal.

Mask at the archive, and you have masked exactly one of those nine locations. The other eight still hold the original, and several of them are outside your security perimeter and your retention policy. When an auditor asks whether unmasked Aadhaar numbers exist in your environment, the answer is yes, in eight places you did not list.

This is why the sequencing question is not a detail. Masking is only as good as the earliest point in the pipeline at which it happens.

Where the legal exposure actually comes from

Three distinct sources, and they behave differently.

The Aadhaar Act 2016. Section 29(4) restricts the public display or publication of Aadhaar numbers. Chapter VII creates offences around unauthorised disclosure and use of identity information, carrying imprisonment and fines. This is the provision most often cited, and it is narrower than the citations suggest — it is aimed at publication and disclosure rather than at mere possession.

The DPDP Act 2023. This is the one that changes the arithmetic, and it barely mentions Aadhaar. Its principles do the work: purpose limitation, data minimisation and storage limitation all ask why a field you cannot use is in your database at all. Its penalty structure for failure to take reasonable security safeguards is the largest exposure most organisations now carry on this, and unlike the Aadhaar Act it does not require publication for liability to attach.

Sectoral regulation. RBI, IRDAI and SEBI each have KYC expectations for the entities they supervise, and RBI's KYC Master Direction addresses handling of Aadhaar by regulated entities that are not authorised to perform Aadhaar authentication. The specific obligations depend on your licence and change with amendments, so this is the layer to check with counsel against your own registration rather than to read off a vendor's website — including ours.

What is worth extracting from all three: the exposure is created by holding the number, and it is removed by not holding it. Every other control — encryption, access logging, DLP — reduces the probability of a bad outcome. Masking removes the thing that makes the outcome bad.

Masking at intake versus masking later

The practical test for any masking design is simple. Ask whether an unmasked document can exist anywhere in your systems, for any length of time, in the normal course of business. If the answer is yes, name the place and the duration, and treat that as your actual exposure regardless of what happens downstream.

Masking at intake means the redaction happens in the upload path, before the object is persisted anywhere you would have to enumerate to an auditor. In practice that means the handler that receives the file calls a masking step synchronously and writes only the returned document. The unmasked bytes exist in request memory and nowhere else.

Two things make that harder than it sounds, and both are worth planning for. The first is failure handling: if the masking step cannot find a number — a laminated card with glare, a fold through the digits — you need a decision, not a default. Passing the original through on a failure quietly recreates the problem you were solving. Rejecting the upload frustrates a customer mid-onboarding. Most teams land on quarantining the document for manual handling, which is fine as long as the quarantine is a named, access-controlled, time-limited place rather than the same bucket as everything else.

The second is the existing backlog. Masking at intake protects new documents and does nothing for the archive you have already accumulated, which is usually where the real volume sits. That is a separate, bounded project — a one-off pass over historical documents — and it is worth scoping explicitly rather than hoping the intake fix covers it.

What masking does not fix

It would be dishonest to sell masking as a compliance programme, so: masking is a data minimisation control and nothing more. It does not give you a lawful basis for collecting the document in the first place. It does not set your retention period or delete anything when that period expires. It does not control who in your organisation can open the file. It does not notify anyone of a breach. It does not make an OCR engine infallible, and a masked document with a count of zero regions redacted is an unmasked document wearing the wrong label.

What it does is remove a field you were never able to use from a store you cannot fully enumerate. For most Indian financial institutions holding Aadhaar copies, that is the single highest-leverage change available, which is a strange thing to be able to say about a change this small.

A short checklist

Masking at the point of capture. One REST call takes a JPG, PNG or PDF and returns it with the first eight digits removed, synchronously, with a header reporting how many regions were redacted so your pipeline can branch on the result rather than assume it. Nothing is retained.

Get API Access