Skip to main content
POST
Check KYC PAN Status

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.