
Title
Create new category
Edit page index title
Edit category
Edit link
PAN Verification API
DPDPA Compliant API For Validation Of PAN Card Details
The PAN Verification API enables businesses to instantly validate and verify Permanent Account Number (PAN) details using PAN, Name, and Date of Birth (DOB) as inputs. Designed for fintech platforms, KYC workflows, compliance systems, lending platforms, onboarding solutions, and enterprise verification pipelines, this API helps organizations determine the authenticity and operational status of a PAN in real time while reducing fraud risks and manual verification effort.
This API performs multi-layer validation against authoritative data sources and returns a structured response containing PAN activity status, identity match indicators, Aadhaar linkage status, and taxpayer category classification. It helps businesses streamline onboarding, strengthen AML and compliance processes, and improve decision-making through reliable identity intelligence.
In order to ensure continued compliance with the Digital Personal Data Protection Act, 2023 (DPDP Act), we have completely adopted Consent-Driven Processing. Under this framework, clients are required to obtain explicit, informed, and verifiable consent from the Data Principal prior to accessing, processing, viewing, or storing any personal data through the platform. This regulatory transition may require modifications to existing configurations and workflows. Clients are advised to review and update their implementations to ensure ongoing compliance with applicable data protection obligations. Further information regarding this transition can be read here. DPDPA Implementation At Attestr
Customers using older version of the product, please refer to Migration Guide For Existing Customers
Key Capabilities
PAN Status Verification Check whether a PAN is active, inactive, fake, decommissioned, surrendered, liquidated, or otherwise non-operational. This helps prevent onboarding of invalid or high-risk entities.
Name Match Validation Verify whether the provided name matches official government records associated.
Date of Birth (DOB) Match Validate the DOB provided in the request against official records.
Aadhaar Linking Status Retrieve whether the PAN is linked with Aadhaar, helping organizations ensure regulatory compliance and onboarding eligibility where Aadhaar linkage is required.
Taxpayer Category Identification Determine the classification of the PAN holder such as individual, company, firm, LLP, trust, or other taxpayer categories. This is particularly useful for risk scoring, underwriting, and segmentation logic.

API Definition
Request URL
| Type | URL |
|---|---|
| POST | https://api.attestr.com/api/v3/public/checkx/pan/basic |
Request Header Parameters
| Type | Name | Value / Description | Optional |
|---|---|---|---|
| String | Content-Type | application/json | Required |
| String | Authorization | Basic {authToken} | Required |
If you do not have the authentication token, please refer to Register App to generate one.
Input Parameters
| Data Type | Field Name / JSON Key | Description | Required (Default) | Is PII Field | PII Data Category | PII Data Type |
|---|---|---|---|---|---|---|
| String | consent | Consent object as required for registering the Data Principal consent on Attestr Platform. Refer to Register Consent API for input field definitions. | Required | No | ||
| String | pan | Input PAN number to be verified. | Required | Yes | identity | pan |
| String | birthOrIncorporatedDate | Date of birth for individuals and date of incorporation in case of companies | Required | Yes | personal_information | dob |
| String | name | Name as registered | Required | Yes | personal_information | name |
Sample Input
xxxxxxxxxx{ "pan": "ABCDE1234E", "birthOrIncorporatedDate": "12-12-2002", "name": "Gitanjali Raheja", "consent": { "consentPurpose": "kyc_verification", "services": [{ "service": "PAN_BASIC" }], "consentTimestamp": "2026-05-22T00:00:00+0000", "consentMode": "email_otp", "consentType": "multi_use", "consentValidFrom": "2026-05-23T12:05:00+0000", "consentValidTill": "2026-05-27T12:07:00+0000", "consentReferenceId": "ACME-CONSENT-1234", "consentPrincipalUserId": "ACME-DATA-PRINCIPAL-1234", "clientDeclaration": true, "consentOperations": ["VERIFY","FETCH", "STORE","REPORT"], "consentDataCategories": [ { "category": "identity", "values": [ "pan" ] }, { "category": "personal_information", "values": [ "dob", "name" ] } ] }}To use an already registered consent on the platform, use the following input format
xxxxxxxxxx{ "pan": "ABCDE1234E", "birthOrIncorporatedDate": "12-12-2002", "name": "Gitanjali Raheja", "consent": { "consentId": "CX3B3vGTovVJN5po82" }}Sample
Response Structure
Http Status 200
| Key | Description | Type | Is PII Fields | PII Data Category | PII Data Type |
|---|---|---|---|---|---|
| valid | True | false depending on if provided PAN number exists and is valid | Boolean | No | ||
| category | Category of the tax payer. See the table below for possible values. | String | No | ||
| panStatus | Current status of the PAN. Possible values are listed in the PAN status table below. | String | No | ||
| panStatusCode | PAN status code representing the status of the PAN. Every status is mapped to a corresponding status code. Refer to the table below. | String | No | ||
| aadhaarLinked | Flag indicating whether PAN is linked to Aadhaar. Possible values are True, False and Null. True if the provided PAN is already linked to Aadhaar. False if not linked, Null if Aadhaar linking is either not applicable, such as for businesses, or if the source was unable to retrieve the Aadhaar linking status. | Boolean | No | ||
| nameMatches | Where the provided input name matches the name as per PAN database official records. | Boolean | No | ||
| birthOrIncorporatedDateMatches | Whether the provided input date of birth matches the PAN database official records. | Boolean | No |
PAN Categories
| Enum Values | Description |
|---|---|
| AOP | Association of persons |
| BOI | Body of individuals |
| BUSINESS | Registered company |
| FIRM | Partnership firms |
| GOVERNMENT | Government entities |
| HUF | Hindu Undivided family |
| LOCAL | Local authority |
| AJP | Artificial juridical persons |
| INDIVIDUAL | Individual tax payer |
| TRUST | Registered trust boards |
| LLP | Limited liability partnership |
PAN Status Code Definition
| Status | Status Code | Description |
|---|---|---|
| VALID | E | PAN exists and is valid |
| INVALID_NOT_FOUND | N | No matching PAN found |
| INVALID_DEACTIVATED | X | PAN stands deactivated and is invalid. |
| INVALID_FAKE | F | PAN is reported to be fake. |
| INVALID_DELETED | D | PAN has been deleted from the database due to potential duplicate or other related reasons. |
| VALID_AMALGAMATION | EA | Applicable for companies only, company is amalgamated |
| VALID_ACQUISITION | EC | Applicable for companies only, if company has been acquired |
| VALID_DEATH | ED | Where the individual is dead but pan details are valid. |
| VALID_DISSOLUTION | EI | Valid but company stands dissolved |
| VALID_LIQUIDATED | EL | Valid for companies that have been liquidated |
| VALID_MERGER | EM | Valid for companies that are merged into another entity |
| VALID_PARTITION | EP | The PAN record has been logically separated (partitioned) from another entity or structure but remains valid and operational. |
| VALID_LIQUIDATION | EU | Valid for companies that are currently undergoing liquidation |
| VALID_SPLIT | ES | The PAN was part of an entity or dataset that has been split into multiple valid records, and this specific PAN remains active and usable. |
Sample Response
Sample response for valid person PAN number
xxxxxxxxxx{ "valid": true, "category": "INDIVIDUAL", "panStatus": "VALID", "panStatusCode": "E", "nameMatches": true, "birthOrIncorporatedDateMatches": true, "aadhaarLinked": true}Sample response for valid business PAN number
xxxxxxxxxx{ "valid": true, "category": "BUSINESS", "panStatus": "VALID", "panStatusCode": "E", "nameMatches": true, "birthOrIncorporatedDateMatches": true, "aadhaarLinked": null}Sample response if the provided PAN number is invalid or does not exist
xxxxxxxxxx{ "valid": false, "category": null, "panStatus": "INVALID_NOT_FOUND", "panStatusCode": "N", "nameMatches": null, "birthOrIncorporatedDateMatches": null, "aadhaarLinked": null}Sample response for deactivated PAN
xxxxxxxxxx{ "valid": false, "category": "INDIVIDUAL", "panStatus": "INVALID_DEACTIVATED", "panStatusCode": "X", "nameMatches": null, "birthOrIncorporatedDateMatches": null, "aadhaarLinked": null}Error Codes
Refer to API Error Codes for common error codes and error response returned by this API
Copyright © Attestr