v21

latestOpenAPI 3.1.0raw.githubusercontent.com2026-08-042830148.8 KB
KYC

Check KYC PAN Status

Query KYC registration status for a PAN number across all five SEBI-registered KRAs (CVL, NDML, CAMS, Karvy, KFin) via the CVL KRA portal.

Raw portal status strings are normalized into clean enums (see kyc_status).

kyc_compliant is true only when kyc_status is validated or registered. Use this for quick onboarding gate decisions.

remarks on a KRA object is only actionable when status is on_hold — it contains the reason (e.g. "APPLICANT PHOTO MISMATCH"). For validated KRAs, remarks like "FATCA NOT APPLICABLE" can be safely ignored.

Note: This endpoint may take up to 60 seconds. Set your client timeout accordingly.

Credits: 0.25 per successful lookup. Failed lookups are not billed.

post/v1/kyc/pan/status

Request body

pan_nostring required

PAN number to look up (10 characters, uppercase)

Example request

{
  "pan_no": "ABCDE1234F"
}

Response

KYC status retrieved successfully

active_kra'cvl' | 'ndml' | 'cams' | 'karvy' | 'kfin' nullable

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

kyc_compliantboolean

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

kyc_mode'normal' | 'digilocker' | 'ekyc' | 'paper' | 'unknown' nullable

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
kyc_status'validated' | 'registered' | 'under_process' | 'on_hold' | 'rejected' | 'legacy' | 'not_available' | 'unknown'

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
last_updated_onstring date nullable

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

panstring

The PAN number that was queried (uppercase)

registered_onstring date nullable

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

status'success'

Example response

{
  "active_kra": "cvl",
  "kras": {
    "cams": {
      "kyc_mode": "digilocker",
      "last_updated_on": "2024-09-19",
      "raw_status": "ON HOLD - New KYC",
      "registered_on": "2020-07-02",
      "remarks": "APPLICANT PHOTO MISMATCH IN THE APPLICATION,FATCA NOT APPLICABLE",
      "status": "validated"
    },
    "cvl": {
      "kyc_mode": "digilocker",
      "last_updated_on": "2024-09-19",
      "raw_status": "ON HOLD - New KYC",
      "registered_on": "2020-07-02",
      "remarks": "APPLICANT PHOTO MISMATCH IN THE APPLICATION,FATCA NOT APPLICABLE",
      "status": "validated"
    },
    "karvy": {
      "kyc_mode": "digilocker",
      "last_updated_on": "2024-09-19",
      "raw_status": "ON HOLD - New KYC",
      "registered_on": "2020-07-02",
      "remarks": "APPLICANT PHOTO MISMATCH IN THE APPLICATION,FATCA NOT APPLICABLE",
      "status": "validated"
    },
    "kfin": {
      "kyc_mode": "digilocker",
      "last_updated_on": "2024-09-19",
      "raw_status": "ON HOLD - New KYC",
      "registered_on": "2020-07-02",
      "remarks": "APPLICANT PHOTO MISMATCH IN THE APPLICATION,FATCA NOT APPLICABLE",
      "status": "validated"
    },
    "ndml": {
      "kyc_mode": "digilocker",
      "last_updated_on": "2024-09-19",
      "raw_status": "ON HOLD - New KYC",
      "registered_on": "2020-07-02",
      "remarks": "APPLICANT PHOTO MISMATCH IN THE APPLICATION,FATCA NOT APPLICABLE",
      "status": "validated"
    }
  },
  "kyc_compliant": true,
  "kyc_mode": "digilocker",
  "kyc_status": "validated",
  "last_updated_on": "2024-09-19",
  "pan": "ABCDE1234F",
  "registered_on": "2020-07-02",
  "status": "success"
}