PAN Verification API
INSTANT VERIFICATION OF PERMANENT ACCOUNT NUMBER (PAN) AND VALIDATE TAX PAYER'S NAME, STATUS, AADHAAR LINKING STATUS AND TAX PAYER CATEGORY

API Outcome
- Name Of Holder PAN card holder's name and can be used to match with the one printed on the card.
- Category Category of tax payer as registered. Check below for different categories.
- Status Status to confirm if the provided PAN card exists and is valid.
- Aadhaar Linking Status (Available from API v2) Whether the provided PAN number is already linked to an Aadhaar number. This applies to Person category PAN cards only.
API Details
Request
Type | URL | Version |
---|---|---|
POST | https://api.attestr.com/api/{version} /public/checkx/pan | Use "v2" for the latest version |
Request Body Parameters
Type | Name | Description | Optional (default) | Min Version | Max Version |
---|---|---|---|---|---|
String | pan | Input PAN number to be verified. | Required | v1 |
Request Header Parameters
Type | Name | Value / Description | Optional | Min Version | Max Version |
---|---|---|---|---|---|
String | Content-Type | application/json | Required | v1 | |
String | Authorization | Basic {authToken} | Required | v1 |
If you do not have the authentication token, please refer to Register App to generate one.
Sample Request Payload
{
"pan": "AH***15**R"
}
Response
Http Status 200
Please note that the valid key decides the availability of rest of the keys in the response. If the provided PAN number does not exist, all keys except valid and message are omitted. If true, remaining keys will have appropriate data.
Key | Description | Type | Min Version | Max Version |
---|---|---|---|---|
valid | True | false depending on if provided PAN number exists and is valid | Boolean | v1 | |
category | Category of the tax payer. See the table below for possible values. | PANCategoryEnum | v1 | |
name | name of the permanent account number holder | String | v1 | |
message | Error message if provided PAN is invalid | String | v1 | |
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 | v1 |
PAN Category Enum
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 |
Sample Response
Sample response for valid person PAN number
{
"valid": true,
"category": "INDIVIDUAL",
"name": "Gitanjali Raheja",
"aadhaarLinked": true
}
Sample response for valid business PAN number
{
"valid": true,
"category": "BUSINESS",
"name": "Raheja Enterprises",
"aadhaarLinked": null
}
Sample response if the provided PAN number is invalid or does not exist
{
"valid": false,
"message": "Provided PAN number does not exist"
}
Error Response
Parameter | Type | Description |
---|---|---|
code | Number | Unique error codes for different errors. Always available. |
message | String | Error message describing the error. Always Available. |
details | String | Detail error message. Available only for certain types of errors. |
Error Codes
HTTP Status | Error Code | Error Message |
---|---|---|
400 | 4001 | Malformed data or missing required parameter values |
400 | 4005 | Operation could not be performed due to low credits balance |
401 | 4016 | Invalid client authorization |
403 | 4031 | Unauthorized access |
403 | 4035 | Requested service is not provisioned for your account |
403 | 4039 | Client's IP address is not whitelisted |
403 | 4035 | Requested service is not provisioned for your account |
429 | 4291 | Maximum account rate limit exceeded |
429 | 4292 | Maximum API rate limit exceeded |
429 | 4293 | Maximum account daily limit exceeded |
429 | 4294 | Maximum API daily limit exceeded |
500 | 5001 | Request could not be processed |
Sample Error Response
{
"code": 4001,
"message": "Malformed data or missing required parameter values"
}
API Details V1 (Deprecated effective Sep 30, 2023)
Request
Type | URL |
---|---|
POST | https://api.attestr.com/api/{version} /public/checkx/pan |
Request Body Parameters
Type | Name | Description | Optional (default) | Min Version | Max Version |
---|---|---|---|---|---|
String | pan | Input PAN number to be verified. | Required | v1 | |
Boolean | extended | Boolean flag to indicate normal vs advanced mode | Optional | v1 |
Request Header Parameters
Type | Name | Value / Description | Optional | Min Version | Max Version |
---|---|---|---|---|---|
String | Content-Type | application/json | Required | v1 | |
String | Authorization | Basic {authToken} | Required | v1 |
If you do not have the authentication token, please refer to Register App to generate one.
Sample Request Payload
{
"pan": "AH***15**R"
}
Response
HTTP status code 200
Please note that the valid key decides the availability of rest of the keys in the response. If the provided PAN number does not exist, all keys except valid and message are omitted. If true, remaining keys will have appropriate data.
Key | Description | Type | Min Version | Max Version |
---|---|---|---|---|
valid | True | false depending on if provided PAN number exists and is valid | Boolean | v1 | |
category | Category of the tax payer. Refer to API v2 definition above for the possible values. | PANCategoryEnum | v1 | |
name | name of the permanent account number holder | String | v1 | |
message | Error message if provided PAN is invalid | String | v1 | |
title | Title of the user if linked to Aadhaar | String | v1 | |
firstName | First Name of the user if linked to Aadhaar | String | v1 | |
lastName | Last Name of the user if linked to Aadhaar | String | v1 | |
updated | Last modified date | String | v1 | |
aadhaarLinked | Boolean flag indicating whether PAN is linked to Aadhaar | Boolean | v1 |
Sample Response
Sample response for valid permanent account number
{
"valid": true,
"category": "INDIVIDUAL",
"name": "Gitanjali Raheja"
}
Sample response for PAN linked to Aadhaar (advanced mode)
{
"valid": true,
"category": "INDIVIDUAL",
"name": "SHOBHIT TIWARI",
"title": "Shri",
"firstName": "SHOBHIT",
"lastName": "TIWARI",
"updated": "01/12/2020",
"aadhaarLinked": true
}
Sample response for invalid permanent account number
{
"valid": false,
"message": "Provided PAN number does not exist"
}