Skip to main content
POST
/
v1
/
kyc
/
pan
/
status
Check KYC PAN Status
curl --request POST \
  --url https://api.casparser.in/v1/kyc/pan/status \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "pan_no": "ABCDE1234F"
}
'
{
  "status": "success",
  "pan": "ABCDE1234F",
  "kyc_compliant": true,
  "kyc_status": "validated",
  "kyc_mode": "digilocker",
  "active_kra": "cvl",
  "registered_on": "2011-03-18",
  "last_updated_on": "2024-09-19",
  "kras": {
    "cvl": {
      "status": "validated",
      "registered_on": "2011-03-18",
      "last_updated_on": "2024-09-19",
      "kyc_mode": "digilocker",
      "remarks": null,
      "raw_status": null
    },
    "ndml": {
      "status": "not_available",
      "registered_on": null,
      "last_updated_on": null,
      "kyc_mode": null,
      "remarks": null,
      "raw_status": null
    },
    "cams": {
      "status": "not_checked",
      "registered_on": null,
      "last_updated_on": null,
      "kyc_mode": null,
      "remarks": null,
      "raw_status": null
    },
    "karvy": {
      "status": "not_checked",
      "registered_on": null,
      "last_updated_on": null,
      "kyc_mode": null,
      "remarks": null,
      "raw_status": null
    },
    "kfin": {
      "status": "not_checked",
      "registered_on": null,
      "last_updated_on": null,
      "kyc_mode": null,
      "remarks": null,
      "raw_status": null
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://casparser.in/docs/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

x-api-key
string
header
required

Your API key for authentication. Use sandbox-with-json-responses as Sandbox key.

Body

application/json
pan_no
string
required

PAN number to look up (10 characters, uppercase)

Pattern: ^[A-Z]{5}[0-9]{4}[A-Z]{1}$
Example:

"ABCDE1234F"

Response

KYC status retrieved successfully

Normalized KYC status response for a PAN number

status
enum<string>
Available options:
success
Example:

"success"

pan
string

The PAN number that was queried (uppercase)

Example:

"ABCDE1234F"

kyc_compliant
boolean

true if the investor has a validated or registered KYC record. Use this as the primary onboarding gate signal.

Example:

true

kyc_status
enum<string>

Normalized KYC status from the active KRA. Possible values:

  • validated — KYC complete, investor can onboard and transact freely
  • registered — KYC registered; some restrictions may apply depending on your platform's onboarding policy
  • under_process — Recently submitted KYC, still being processed by KRA
  • on_hold — KYC on hold due to discrepancy; check remarks on the KRA object
  • rejected — KYC rejected; investor must submit fresh KYC
  • legacy — Old/incomplete record; re-KYC recommended
  • not_available — No KYC record found at any KRA
  • unknown — Portal returned an unrecognized string; raw_status preserved
Available options:
validated,
registered,
under_process,
on_hold,
rejected,
legacy,
not_available,
unknown
Example:

"validated"

kyc_mode
enum<string> | null

How the KYC was completed. Possible values:

  • normal — Physical/paper KYC
  • digilocker — DigiLocker-backed digital KYC
  • ekyc — Aadhaar eKYC (OTP-based)
  • paper — Offline paper submission
  • unknown — Mode string not recognized
Available options:
normal,
digilocker,
ekyc,
paper,
unknown
Example:

"digilocker"

active_kra
enum<string> | null

Short key of the KRA where the active KYC record was found

Available options:
cvl,
ndml,
cams,
karvy,
kfin
Example:

"cvl"

registered_on
string<date> | null

Date the KYC was first registered at the active KRA (ISO 8601)

Example:

"2020-07-02"

last_updated_on
string<date> | null

Date the KYC record was last updated at the active KRA (ISO 8601)

Example:

"2024-09-19"

kras
object

Per-KRA status breakdown. All five KRA keys are always present.