PAN KRA KYC Status API
GET PAN KYC STATUS FROM THE KRA DATABASE
Introduction
PAN KYC is a one-time process performed by a SEBI-registered intermediary such as a broker, a depository, or a mutual fund company. Once completed, the information is stored in a centralised database and is available for other brokers to verify. The SEBI nominated KRA (KYC Registration Agencies) perform the verification and store it in the centralised data storage.
This API returns the PAN KYC status and associated details including the name, POA document type, KRA name, KYC date, status and remarks etc.

Please be aware that this API does not retrieve the actual POI and POA documents, simply the status of KYC. Registration with CKYC India is required for the entity in order to download the documents. Once registered, data download automation from the CKYC platform is available through Attestr. For more information, write to us at contact@attestr.com or click the button below to chat with us.
API Details
Request
Type | URL | Latest Version |
---|---|---|
POST | https://api.attestr.com/api/{version} /public/checkx/pan/kyc | v2 |
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.
Request Body Parameters
Type | Name | Description | Optional (default) | Min Version | Max Version |
---|---|---|---|---|---|
String | pan | Input PAN number to be verified. | Required | v1 |
Sample Request Payload
{
"pan": "AHXXTXXX9R"
}
Response
Http Status 200
Response Payload
Key | Description | Type | Min Version | Max Version |
---|---|---|---|---|
pan | Input PAN number as provided for search | String | v1 | |
name | Name of the PAN card holder | String | v1 | |
poaDocType | Proof of address document as registered eg AADHAAR etc. | String | v1 | |
kra | Name of the KRA which processed KYC | String | v1 | |
kycDate | Date on which KYC was performed DD-MM-YYYY | Date | v1 | |
kycStatus | Status of KYC eg. KYC Registered | String | v1 | |
kycStatusDate | Date of KYC Status DD-MM-YYYY | Date | v1 | |
kycRemark | Any remarks provided by KRA | String | v1 | |
kycModStatus | Status of KYC modifications if any | String | v1 | |
kycModDate | Date of modification DD-MM-YYYY | Date | v1 | |
kycModRemark | Remarks for modification | String | v1 | |
kycMode | Mode of KYC eg Normal KYC | String | v1 | |
ipvStatus | Indicates whether in-person verification (IPV) was done | String | v1 |
Sample Response
Sample response if KYC is already processed for the provided PAN number
{
"valid": true,
"message": null,
"pan": "AZTPP2556N",
"name": "Gitanjali Raheja",
"poaDocType": "AADHAAR",
"kra": "CVL KRA",
"kycDate": "24-03-2018 15:58:26",
"kycStatus": "KYC REGISTERED",
"kycStatusDate": "28-03-2018 15:44:17",
"kycRemark": null,
"kycModStatus": "NOT AVAILABLE",
"kycModDate": null,
"kycModRemark": null,
"kycMode": "Normal KYC",
"ipvStatus": "IPV Done"
}
Sample response for the case if PAN KYC was never performed or an invalid PAN
{
"valid": false,
"message": "Details not available with any KRA"
}
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"
}