PAN guide
Which of the eight PAN APIs to use for your use case, how to combine them, and how to read each result.
SignCare has eight PAN APIs. They all live under /api/v1/pan/. This guide helps you choose one for your use case, combine them, and read the results. Every field and rule for each endpoint is in the PAN Verification reference.
Pick an API in 10 seconds
| I want to... | Use | Endpoint |
|---|---|---|
| Verify a customer's PAN for KYC or onboarding | PAN Verify | /api/v1/pan/verify |
| Check that a PAN exists and see the name on it | PAN Lite | /api/v1/pan/lite |
| Get the name split into title, first, middle and last, plus Aadhaar seeding | PAN Advance | /api/v1/pan/advance |
| Pre-fill a form with name, DOB, gender and address | PAN Pro | /api/v1/pan/pro |
| Find a user's PAN when they only know their mobile number | Mobile to PAN | /api/v1/pan/mobile-to-pan |
| Find the email addresses and mobile numbers registered to a PAN | PAN to Email & Mobile | /api/v1/pan/pan-to-email-mobile |
| List all GST registrations of a business | PAN to GST | /api/v1/pan/pan-to-gst |
| Check a business's MSME / Udyam registration | PAN to MSME | /api/v1/pan/to-msme |
What each API returns
✅ = returned, ➖ = not returned.
| Field | Verify | Lite | Advance | Pro |
|---|---|---|---|---|
| PAN status (valid / invalid) | ✅ | ✅ | ✅ | ➖ |
| PAN type (Individual, Company, Firm, Trust, HUF, Association) | ✅ category | ✅ | ✅ | ✅ |
| Name match | ✅ yes/no | ✅ score | ✅ score | ✅ score |
| Date-of-birth match | ✅ yes/no | ➖ | ➖ | ➖ |
| Aadhaar seeding / link status | ✅ | ➖ | ✅ | ✅ |
| Holder's full name | ➖ | ✅ | ✅ (and its parts) | ✅ (and its parts) |
| Date of birth, gender | ➖ | ➖ | ➖ | ✅ |
| Address | ➖ | ➖ | ➖ | ✅ |
| Masked Aadhaar, masked email, phone | ➖ | ➖ | ➖ | ✅ |
| Date the PAN was last updated | ➖ | ➖ | ✅ | ➖ |
PAN Verify is the only API that checks the date of birth, and the only one that gives yes/no answers for name and DOB. The others return a name-match score from 0 to 100, and your application decides what counts as a match.
Use cases
Customer KYC in regulated businesses
Lending, NBFCs, stock broking and investment apps, insurance, payments and wallets.
Use PAN Verify. Regulators generally expect you to confirm the PAN with the issuing authority, check that the name (and usually the date of birth) matches what the customer gave, and check that the PAN is linked to Aadhaar. Since July 2023, a PAN that isn't linked to Aadhaar is inoperative. PAN Verify gives you all of these in one call.
A PAN check is usually one step of KYC, not the whole thing. Depending on your regulator you may also need proof of address (DigiLocker), a live photo check (face liveness), a bank account check (bank account verification) and other steps. Confirm the exact list with your compliance team.
Fast sign-up with less typing
- Ask only for the PAN.
- Call PAN Pro and pre-fill name, date of birth and gender.
- Let the user confirm or correct the details.
- Call PAN Verify with the confirmed values. Use this result as your evidence.
Pre-filled data is a convenience. Base the decision on the PAN Verify result, which checks the values the user confirmed.
The user doesn't remember their PAN
- Ask for their mobile number and name.
- Call Mobile to PAN to find the PAN.
- Show it masked (for example
ABCXXXX34F) and ask the user to confirm. - Call PAN Verify on the confirmed PAN.
A lookup is not a verification. Always verify a PAN you found this way before you rely on it.
Show the user the name on their PAN
Call PAN Lite with only the PAN and show user_full_name, for example "Is this you?". This catches typos before the user goes any further.
Employee, tenant or partner background checks
PAN Lite or PAN Advance with the name. Treat a high name-match score and a VALID status as confirmation. Add PAN Verify if you also need to check the date of birth.
Business and vendor onboarding (KYB)
For a business PAN (4th character C, F, T, A or H):
- PAN Lite with the business name: confirms the PAN is valid and belongs to that name.
- PAN to GST: lists every GSTIN of the business, with state and status. Use it to choose or check the GSTIN on the invoice.
- PAN to MSME: tells you whether the business is Udyam-registered (micro, small or medium). This matters for MSME payment-term rules. Set
is_pdf_required: trueto also get the certificate.
Reaching an existing customer
PAN to Email & Mobile returns the contact details registered against a PAN. Use it only for customers you already have a relationship with and a lawful reason to contact, such as KYC updates or servicing. Under India's data protection law (DPDP Act 2023), collect only what you need and record why you collected it. If the default version returns nothing, try again with "version": "v2", which has wider coverage.
Reading the result
Every response uses the same envelope. The outcome is in the body's statusCode, not only in the HTTP status.
{
"success": true,
"statusCode": 100,
"message": "Valid Authentication",
"messages": [],
"request_id": "your-request-id",
"isBillable": true,
"data": {
"pan": "ABCDE1234F",
"category": "Individual",
"status": "VALID",
"name_as_per_pan_match": true,
"date_of_birth_match": true,
"aadhaar_seeding_status": "Y"
}
}- PAN Verify, Lite, Advance, Pro and PAN to GST use the verification result codes:
100verified,102invalid input,103no record found, and so on. They return HTTP200even when the answer is "not verified". The full table is in Verification result codes. Branch onstatusCode, not onsuccess. - Mobile to PAN, PAN to Email & Mobile and PAN to MSME are lookups. A found record comes back with
success: trueand values indata. If nothing is found,successisfalseandmessagegives the reason. - If the PAN doesn't exist, the verification APIs return
data.statusasINVALID, with the match fields empty ornull.
PAN Verify: suggested decision rules
Compare text values without regard to letter case.
status | aadhaar_seeding_status | Name match | DOB match | Suggested action |
|---|---|---|---|---|
VALID | Y | true | true | ✅ Pass |
VALID | Y | false | any | Ask the user to type the name exactly as on the PAN card. After repeated failures, send to manual review. |
VALID | Y | true | false | Ask the user to check the date of birth. After repeated failures, send to manual review. |
VALID | anything else | any | any | The PAN is not linked to Aadhaar, so it may be inoperative. Ask the user to link it on the Income Tax e-filing portal, then try again. |
INVALID or empty | — | — | — | Reject. Ask the user to check the PAN number. |
Name-match scores (Lite, Advance, Pro)
name_match_score is a percentage from 0 to 100, sent as text (for example "86.50"). Choose a threshold that suits your risk policy. For example, auto-approve above your threshold and send borderline scores to manual review. Names with initials, a missing middle name or a different spelling usually score lower.
Request tips
Send the PAN in upper case
10 characters in the form AAAAA9999A, for example ABCDE1234F. Strip spaces before you send it. A badly formed PAN is rejected with 400 before any lookup.
Always send dob to PAN Verify
Accepted formats are dd-MM-yyyy (15-08-1990), dd/MM/yyyy, dd-MMM-yyyy (15-AUG-1990) and dd/MMM/yyyy. If dob is missing or in another format, the request isn't rejected, but the date of birth is checked against a default date, so date_of_birth_match comes back false even for a genuine user.
Capture consent first
Every PAN API requires consent: "Y" and a consent_text. Show the consent text to your user and record that they agreed before you call the API.
Use your own request_id
Send request_id with your own reference, for example your application or customer ID. Store it with the result, so you can trace a call later or quote it to support.
Good to know
| Topic | Guidance |
|---|---|
| Where to call from | Only from your server. Never put X-API-KEY in a mobile app or browser. See Authentication. |
| Retries | Don't retry 400, 102 or 103 as they are; fix the input first. Retry 429, 108 and 5xx once, after a backoff. See Rate limits. |
| Credits | Read isBillable on each response. true means the call used a credit. See Which results use a credit. |
| Storing PANs | Store the full PAN encrypted, and show it masked (ABCXXXX34F). Keep only the fields you need. PAN Pro returns more personal data than most flows require. |
| Re-checking | A PAN's Aadhaar link status can change. Re-check existing customers when your policy requires it, for example at periodic KYC updates. |
| Testing | Build against Stage first. Test a valid PAN, a wrong name, a wrong date of birth and an invalid PAN. |