Skip to content

KRA Integration

The KYC Registration Agency (KRA) is the backbone of investor identity verification in India’s securities market. Before a stock broker or any SEBI (Securities and Exchange Board of India)-registered intermediary can open a trading account for a client, they must verify that client’s KYC status at a KRA. This is not optional — it is a regulatory prerequisite that directly determines whether a person can buy or sell securities on Indian exchanges.

There are five SEBI-registered KRAs, but thanks to a mandated interoperability framework they function as a single logical system. A query to any one KRA returns the investor’s record regardless of which KRA originally holds it. In practice, this means a broker needs only a single integration point — and vendors like Digio provide a unified REST API that abstracts away the differences between all five KRAs. The KRA status code returned by this lookup (Registered, Validated, On Hold, Rejected, or Not Available) is the gate that controls whether the client’s account can be activated for trading.

Since August 2024, SEBI mandates that every securities intermediary must perform a dual upload of client KYC data to both the KRA and CKYC (Central KYC Registry, maintained by CERSAI). This page is the complete reference for KRA integration: the Digio API specifications for lookup, fetch, submit, and modify operations; the status codes that gate trading access; field-level upload specifications for both Part I (identity) and Part II (intermediary-specific) data; modification workflows and their downstream impact; non-individual entity requirements; and the edge cases that arise in production.

  1. KRA Ecosystem Overview
  2. Digio KRA API (Primary Integration Path)
  3. KRA Status Codes (Critical for Trading)
  4. KRA Upload - Detailed Field Specification
  5. Timeline & SLA
  6. KRA Modify
  7. Non-Individual Entities
  8. Direct KRA Integration (Alternative)
  9. Dual Upload: KRA + CKYC
  10. 6 KYC Attributes Cross-Validation
  11. Edge Cases
  12. Reconciliation & Reporting
  13. Pricing
  14. Recent Regulatory Changes (2024-2026)
  15. Key Reference Documents

A KYC Registration Agency (KRA) is a SEBI-registered entity that holds and maintains the KYC records of all investors in the Indian securities market. Every intermediary (broker, mutual fund, PMS, AIF, depository participant) registered with SEBI must upload client KYC records to a KRA within 3 working days of account opening.

The KRA system ensures that once an investor completes KYC with one intermediary, they do not need to repeat the full KYC process when opening accounts with other SEBI-registered intermediaries. The new intermediary simply looks up the investor’s PAN at the KRA, retrieves the existing record, and uses it.

#KRA NameFull NamePromoted ByWebsite
1CVL KRACDSL Ventures Limited KRACDSL (Central Depository Services Ltd)https://www.cvlkra.com
2NDML KRANSDL Database Management Limited KRANSDL (National Securities Depository Ltd)https://kra.ndml.in
3CAMS KRAComputer Age Management Services KRACAMS (MF RTA)https://www.camskra.com
4DOTEX KRADotEx International Limited KRANSE subsidiaryhttps://www.abortkra.com
5KFintech KRAKFin Technologies KRAKFintech (MF RTA)https://kra.kfintech.com

All 5 KRAs operate under a SEBI-mandated interoperability framework:

  • Any KRA can access records from any other KRA via the interoperability protocol.
  • When an intermediary queries a PAN at one KRA, it receives the record regardless of which KRA originally holds it.
  • The queried KRA fetches the record from the holding KRA in the background.
  • The investor’s KYC status is portable across all intermediaries and all KRAs.

Practical implication: An intermediary (broker) only needs to integrate with a single KRA (or a wrapper like Digio) to access records across all 5 KRAs.

AttributeKRACKYC
RegulatorSEBI (Securities and Exchange Board of India)RBI / CERSAI (Central Registry of Securitisation)
ScopeSecurities market only (brokers, MFs, DPs, PMSs, AIFs)All financial institutions (banks, NBFCs, insurance, securities)
Data StandardKRA template (Part I + Part II)CERSAI template (Part I only, standardized across financial sector)
IdentifierPAN (primary key)14-digit CKYC Identification Number (KIN)
Part IIdentity data (CERSAI-aligned)Identity data (CERSAI standard)
Part IIIntermediary-specific data (trading prefs, risk, segments)Not applicable (CKYC only stores Part I)
Trading GateKRA status determines if client can tradeCKYC status does NOT directly gate trading
Number of Agencies5 KRAs1 central registry (CERSAI/Protean)

Since August 2024, SEBI mandates that every securities market intermediary must upload client KYC to both:

  1. KRA (any one of the 5 KRAs) — determines trading eligibility
  2. CKYC (CERSAI central registry) — financial sector-wide compliance

Failure to upload to both constitutes a compliance violation and can attract regulatory action during SEBI inspections.

1.6 SEBI Mandate: Intermediary KYC Obligation

Section titled “1.6 SEBI Mandate: Intermediary KYC Obligation”

Per SEBI KYC Master Circular (SEBI/HO/MIRSD/MIRSD-SEC-2/P/CIR/2023/168, October 2023):

  • Every SEBI-registered intermediary must verify the KYC status of a client before opening an account.
  • If the client is KYC Registered/Validated at a KRA, the intermediary fetches the existing record and verifies it.
  • If the client is not KYC-compliant, the intermediary must collect KYC data and upload to a KRA within 3 working days.
  • The intermediary must also verify the 6 KYC attributes (Name, PAN, Address, Mobile, Email, Income Range) and ensure consistency across KRA, exchange UCC, and depository records.

With the KRA ecosystem and regulatory landscape established, the next step is the practical integration. Digio serves as the recommended wrapper, providing a single REST/JSON interface to all five KRAs — replacing weeks of SOAP/XML development with a two-day integration.

2. Digio KRA API (Primary Integration Path)

Section titled “2. Digio KRA API (Primary Integration Path)”
FactorDetail
Unified AccessSingle REST API covers all 5 KRAs via interoperability
API TypeREST/JSON (vs SOAP/XML for direct KRA)
Integration Time~2 days (vs ~3 weeks for direct CVL KRA registration)
SDK SupportMobile (Android/iOS) and Web SDKs available
Other IntegrationsDigio also provides e-Sign, CKYC, DigiLocker, Video KYC — reduces vendor count
ParameterDetail
Auth MethodAPI Key + Secret (Basic Auth)
HeaderAuthorization: Basic <base64(client_id:client_secret)>
IP WhitelistingMandatory. Must whitelist server IPs with Digio before production use
UAT IPs35.154.20.28
Production IPs13.126.198.236, 52.66.66.81
Rate LimitsContact Digio for rate limit details; standard is 100 req/min
EnvironmentBase URL
Sandbox (UAT)https://ext.digio.in/client/kyc/v2 (UAT credentials)
Productionhttps://api.digio.in/client/kyc/v2

API Documentation: https://documentation.digio.in/digikyc/kra/api_integration/

Checks the KYC status of a PAN across all 5 KRAs via interoperability. This is the first call in the onboarding flow — determines whether the client needs fresh KYC or has existing records.

Endpoint: GET /kra/pan-status

Request:

GET /kra/pan-status?pan=ABCDE1234F
Headers:
Authorization: Basic <base64(client_id:client_secret)>
Content-Type: application/json

Request Parameters:

ParameterTypeRequiredDescription
panstringYes10-character PAN (format: AAAAA9999A)

Response (Success - KYC Found):

{
"id": "DIG-KRA-xxxxxxxxxxxx",
"status": "success",
"pan": "ABCDE1234F",
"kra_status": "KYC Registered",
"kra_source": "CVL",
"applicant_name": "RAKESH KUMAR",
"application_date": "2023-05-15",
"last_update_date": "2024-08-20",
"email_validated": "Y",
"mobile_validated": "Y",
"pan_aadhaar_linked": "Y",
"aadhaar_authenticated": "Y"
}

Response (Not Found):

{
"id": "DIG-KRA-xxxxxxxxxxxx",
"status": "success",
"pan": "ZZZZZ9999Z",
"kra_status": "Not Available",
"kra_source": null,
"applicant_name": null,
"application_date": null,
"last_update_date": null
}

Data Mapping (Response -> Master Dataset):

API Response FieldMaster Dataset FieldSection
kra_statuskra_lookup_status (R27)R: Third-Party Results
kra_sourcekra_lookup_source (R28)R
applicant_namekra_lookup_name (R29)R
application_datekra_lookup_app_date (R30)R
last_update_datekra_lookup_last_update (R31)R
email_validatedkra_email_validated (R32)R
mobile_validatedkra_mobile_validated (R33)R

Downloads the complete KYC record from the KRA. Use this after a successful PAN Status Lookup that returns “KYC Registered” or “KYC Validated” to prefill the onboarding form with existing data.

Endpoint: GET /kra/fetch

Request:

GET /kra/fetch?pan=ABCDE1234F&kra=CVL
Headers:
Authorization: Basic <base64(client_id:client_secret)>
Content-Type: application/json

Request Parameters:

ParameterTypeRequiredDescription
panstringYes10-character PAN
krastringYesKRA identifier from lookup response (CVL, NDML, CAMS, DOTEX, KFINTECH)

Response (Success):

{
"id": "DIG-KRA-FETCH-xxxxxxxxxxxx",
"status": "success",
"pan": "ABCDE1234F",
"kra_source": "CVL",
"kra_status": "KYC Registered",
"personal_details": {
"prefix": "MR",
"first_name": "RAKESH",
"middle_name": "",
"last_name": "KUMAR",
"maiden_name": "",
"father_spouse_name": "SURESH KUMAR",
"father_spouse_prefix": "FATHER",
"mother_name": "SUNITA DEVI",
"date_of_birth": "1990-01-15",
"gender": "M",
"marital_status": "MARRIED",
"nationality": "IN",
"citizenship": "INDIAN",
"residential_status": "RESIDENT"
},
"identity_details": {
"pan": "ABCDE1234F",
"aadhaar_reference": "XXXX-XXXX-1234",
"passport_number": "",
"passport_expiry": "",
"voter_id": "",
"driving_license": "",
"dl_expiry": ""
},
"correspondence_address": {
"line1": "123 MG ROAD",
"line2": "SECTOR 5",
"line3": "NEAR TEMPLE",
"city": "GURGAON",
"state": "HARYANA",
"pincode": "122001",
"country": "IN",
"address_type": "RESIDENTIAL"
},
"permanent_address": {
"line1": "123 MG ROAD",
"line2": "SECTOR 5",
"line3": "NEAR TEMPLE",
"city": "GURGAON",
"state": "HARYANA",
"pincode": "122001",
"country": "IN",
"same_as_correspondence": true
},
"contact_details": {
"mobile_country_code": "+91",
"mobile": "9876543210",
"email": "rakesh.kumar@email.com",
"std_code": "",
"phone": "",
"fax": ""
},
"financial_details": {
"occupation": "02",
"occupation_description": "Services (Salaried)",
"gross_annual_income_range": "04",
"gross_annual_income_description": "10 Lakh - 25 Lakh",
"net_worth": "2500000",
"net_worth_date": "2024-03-31",
"source_of_wealth": "SALARY"
},
"tax_details": {
"tax_residency_india_only": true,
"fatca_country": "IN",
"tax_identification_number": "",
"fatca_declaration_date": "2024-08-20"
},
"pep_details": {
"is_pep": false,
"is_pep_related": false,
"pep_declaration": "I declare that I am not a Politically Exposed Person"
},
"documents": {
"photo": "BASE64_ENCODED_OR_URL",
"signature": "BASE64_ENCODED_OR_URL",
"poi_type": "PAN",
"poi_document": "BASE64_ENCODED_OR_URL",
"poa_type": "AADHAAR",
"poa_document": "BASE64_ENCODED_OR_URL"
},
"kyc_metadata": {
"kyc_date": "2023-05-15",
"kyc_mode": "EKYC",
"ipv_performed": true,
"ipv_date": "2023-05-15",
"intermediary_code": "BSE-MBR-12345",
"intermediary_name": "XYZ SECURITIES LTD"
}
}

Data Mapping: The fetched record populates the prefill layer of the onboarding form. Fields map to Master Dataset sections A (Personal), B (Identity), C (Address), D (Contact), E (Occupation), F (Financial), J (FATCA), K (PEP/AML), and R34 (full KRA record reference).


2.4.3 KRA Upload (Submit New or Modified KYC Record)

Section titled “2.4.3 KRA Upload (Submit New or Modified KYC Record)”

Submits a complete KYC record to the KRA. Used for fresh KYC (client not found at KRA) or modification of existing records.

Endpoint: POST /kra/upload

Request:

POST /kra/upload
Headers:
Authorization: Basic <base64(client_id:client_secret)>
Content-Type: application/json

Request Body (see Section 4 for complete field specification):

{
"pan": "ABCDE1234F",
"application_type": "NEW",
"application_number": "APP-2026-001234",
"intermediary_code": "BSE-MBR-12345",
"pos_code": "POS001",
"personal_details": {
"prefix": "MR",
"first_name": "RAKESH",
"middle_name": "",
"last_name": "KUMAR",
"father_spouse_name": "SURESH KUMAR",
"father_spouse_prefix": "FATHER",
"mother_name": "SUNITA DEVI",
"date_of_birth": "1990-01-15",
"gender": "M",
"marital_status": "MARRIED",
"nationality": "IN",
"citizenship": "INDIAN",
"residential_status": "RESIDENT"
},
"identity_details": { "..." : "see Section 4" },
"correspondence_address": { "..." : "see Section 4" },
"permanent_address": { "..." : "see Section 4" },
"contact_details": { "..." : "see Section 4" },
"financial_details": { "..." : "see Section 4" },
"tax_details": { "..." : "see Section 4" },
"pep_details": { "..." : "see Section 4" },
"fatca_crs": { "..." : "see Section 4" },
"documents": {
"photo": "<base64_encoded_jpeg>",
"signature": "<base64_encoded_jpeg>",
"poi_type": "PAN",
"poi_document": "<base64_encoded_pdf_or_jpeg>",
"poa_type": "AADHAAR",
"poa_document": "<base64_encoded_pdf_or_jpeg>"
},
"kyc_verification": {
"kyc_mode": "EKYC",
"ipv_performed": true,
"ipv_date": "2026-02-13",
"ipv_agent_name": "VERIFIER NAME",
"ipv_agent_designation": "COMPLIANCE OFFICER",
"ipv_agent_employee_code": "EMP001"
},
"callback_url": "https://your-server.com/webhooks/kra-upload"
}

Application Type Values:

ValueMeaning
NEWFresh KYC submission (client not previously registered)
MODIFYModification of existing KYC record
UPDATEUpdate/enhancement of existing record (e.g., adding FATCA)

Response (Accepted for Processing):

{
"id": "DIG-KRA-UPLOAD-xxxxxxxxxxxx",
"status": "accepted",
"pan": "ABCDE1234F",
"kra_reference_number": "KRA-REF-2026-567890",
"kra_target": "CVL",
"submitted_at": "2026-02-13T10:30:00+05:30",
"estimated_completion": "2026-02-15T18:00:00+05:30",
"message": "KYC record submitted for processing. Use callback or poll for status."
}

Response (Validation Error):

{
"id": "DIG-KRA-UPLOAD-xxxxxxxxxxxx",
"status": "error",
"error_code": "VALIDATION_FAILED",
"errors": [
{ "field": "personal_details.date_of_birth", "message": "DOB cannot be in the future" },
{ "field": "documents.photo", "message": "Photo exceeds maximum size of 1MB" }
]
}

Async Processing: KRA uploads are asynchronous. The API accepts the submission and processes it in the background. Status updates are delivered via:

  1. Callback/Webhook: Digio calls the callback_url with the final status
  2. Polling: Call GET /kra/pan-status periodically to check if status transitions from “Under Process” to “KYC Registered”

Retrieves documents stored at the KRA for a given PAN. This is primarily useful for CVL KRA which stores document images.

Endpoint: GET /kra/documents

Request:

GET /kra/documents?pan=ABCDE1234F&document_type=PHOTO
Headers:
Authorization: Basic <base64(client_id:client_secret)>
Content-Type: application/json

Request Parameters:

ParameterTypeRequiredDescription
panstringYes10-character PAN
document_typestringYesOne of: PHOTO, SIGNATURE, POI, POA, ALL

Response:

{
"id": "DIG-KRA-DOC-xxxxxxxxxxxx",
"status": "success",
"pan": "ABCDE1234F",
"documents": [
{
"type": "PHOTO",
"format": "JPEG",
"size_bytes": 45320,
"content": "BASE64_ENCODED_IMAGE",
"uploaded_date": "2023-05-15"
},
{
"type": "SIGNATURE",
"format": "JPEG",
"size_bytes": 23100,
"content": "BASE64_ENCODED_IMAGE",
"uploaded_date": "2023-05-15"
}
]
}

Note: Not all KRAs store document images. CVL KRA is the most comprehensive for document storage. NDML and others may return limited document data.

HTTP CodeError TypeDescriptionRecommended Action
200SuccessRequest processed successfullyProcess response
400Bad RequestInvalid parameters (wrong PAN format, missing fields)Fix input validation
401UnauthorizedInvalid API credentials or IP not whitelistedCheck credentials, verify IP whitelist
403ForbiddenAccount suspended or exceeded quotaContact Digio support
404Not FoundPAN not found at any KRA (for fetch/documents)Fresh KYC required
422Unprocessable EntityData format errors in upload payloadFix field format errors per error details
429Rate LimitedToo many requestsImplement exponential backoff (start 1s, max 60s)
500Internal Server ErrorDigio server errorRetry with exponential backoff, max 3 retries
502Bad GatewayUpstream KRA system unavailableRetry after 5 minutes
503Service UnavailableKRA system under maintenanceQueue for retry, check KRA maintenance schedule

For async operations (upload, modify), Digio sends a callback to the configured URL:

POST https://your-server.com/webhooks/kra-upload
Content-Type: application/json
X-Digio-Signature: <HMAC-SHA256 signature>
{
"event": "kra.upload.completed",
"id": "DIG-KRA-UPLOAD-xxxxxxxxxxxx",
"pan": "ABCDE1234F",
"kra_reference_number": "KRA-REF-2026-567890",
"kra_status": "KYC Registered",
"completed_at": "2026-02-14T14:00:00+05:30",
"kra_source": "CVL"
}

Webhook Security: Verify the X-Digio-Signature header using HMAC-SHA256 with your client secret before processing the callback. Reject any callbacks that fail signature verification.


Understanding KRA status codes is arguably the most important part of this integration, because the status returned by the KRA directly controls whether a client can trade. Every downstream system — account activation, order placement, compliance reporting — keys off these values.

3. KRA Status Codes (Critical for Trading)

Section titled “3. KRA Status Codes (Critical for Trading)”
StatusMeaningCan Client Trade?Description
KYC RegisteredKYC submitted and accepted by KRAYesBase level of compliance. Client’s KYC data has been received and accepted by the KRA. Sufficient for account activation and trading.
KYC ValidatedKYC verified and validated (higher confidence)YesEnhanced verification level. KRA has cross-verified the data against original sources (PAN, Aadhaar, etc.). Higher confidence than Registered.
Under ProcessKYC submission being processedNoTemporary state. KRA has received the submission but validation is in progress. Typically resolves within 2 working days.
On HoldKYC held for clarification or additional documentsNoKRA has flagged the submission for review. Common reasons: name mismatch, address discrepancy, unclear documents. Requires resolution.
RejectedKYC submission rejectedNoKRA has rejected the submission. Common reasons: invalid PAN, forged documents, non-compliant data. Requires corrected re-submission.
Not AvailableNo KYC record found for this PANNo (N/A)Client has never completed KYC with any SEBI-registered intermediary. Fresh KYC collection and upload required.
+------------------+
| Not Available |
| (No KYC record) |
+--------+---------+
|
[Submit KYC]
|
v
+------------------+
| Under Process |
| (Validating...) |
+--------+---------+
|
+------------+------------+
| | |
v v v
+--------+--+ +------+-----+ +----+-------+
| On Hold | | KYC | | Rejected |
| (Clarify) | | Registered | | (Fix data) |
+--------+--+ +------+-----+ +----+-------+
| | |
[Resolve] | | [Re-submit corrected]
| | |
v v |
+--------+--+ +------+-----+ |
| Under | | KYC | |
| Process | | Validated | |
+--------+--+ +------------+ |
| |
+--------> Back to Under Process <---+
  • Only “KYC Registered” or “KYC Validated” allows trading. All other statuses block account activation and trading.
  • Hold/Rejection can happen at any stage after submission. A previously Registered client can be placed On Hold if discrepancies are discovered during validation.
  • A client who is KYC Registered at another broker will show up in the lookup. The new broker does NOT need to re-upload KYC — they fetch the existing record, verify it, and proceed.
  • KYC Validated is not required for trading. KYC Registered is sufficient. Validation is a higher-confidence state achieved through cross-verification by the KRA.
  • Status is PAN-based, not intermediary-based. A client has one KRA status regardless of how many brokers they have accounts with.

4. KRA Upload - Detailed Field Specification

Section titled “4. KRA Upload - Detailed Field Specification”

4.1 Part I: CERSAI Template (Identity Data)

Section titled “4.1 Part I: CERSAI Template (Identity Data)”

Part I follows the CERSAI (Central Registry of Securitisation Asset Reconstruction and Security Interest) standardized KYC template used across all financial institutions. This is the same template used for CKYC uploads.

#Field NameTypeMax LengthMandatoryValid Values / Notes
1prefixstring5YesMR, MRS, MS, DR, PROF, MASTER, MISS
2first_namestring60YesAs per PAN card. Uppercase. No special characters except space and hyphen.
3middle_namestring60NoAs per PAN card
4last_namestring60YesAs per PAN card
5maiden_namestring60NoPre-marriage name (if applicable)
6father_spouse_namestring120YesFull name of father or spouse
7father_spouse_prefixstring10YesFATHER, SPOUSE
8mother_namestring120NoFull name of mother
9date_of_birthdate10YesYYYY-MM-DD format. Cannot be in the future. Client must be 18+ for individual accounts.
10genderstring1YesM (Male), F (Female), T (Transgender)
11marital_statusstring10YesMARRIED, UNMARRIED, WIDOW, DIVORCED, OTHERS
12nationalitystring2YesISO 3166-1 alpha-2 country code. IN for Indian.
13citizenshipstring20YesINDIAN, NRI, PIO, OCI, FOREIGN_NATIONAL
14residential_statusstring20YesRESIDENT, NON_RESIDENT, FOREIGN_NATIONAL
#Field NameTypeMax LengthMandatoryValid Values / Notes
15panstring10YesAAAAA9999A format. Must be valid (E status).
16aadhaar_referencestring16ConditionalMasked format: XXXX-XXXX-1234 (last 4 digits only). Mandatory if Aadhaar is used as proof of identity/address. Full Aadhaar number must NOT be stored or transmitted (UIDAI mandate).
17passport_numberstring20ConditionalMandatory for NRIs. Format: A1234567 (1 alpha + 7 digits for Indian passports).
18passport_expirydate10ConditionalYYYY-MM-DD. Mandatory if passport provided. Must be future date.
19voter_idstring20NoElectoral Photo Identity Card number
20driving_licensestring20NoFormat varies by state. Include state code prefix.
21dl_expirydate10ConditionalYYYY-MM-DD. Mandatory if DL provided.
22ckycidstring14No14-digit CKYC Identification Number (KIN), if available from CKYC search.
#Field NameTypeMax LengthMandatoryNotes
23corr_address_line1string100YesMust NOT start with client name. Must not be identical to line2 or line3.
24corr_address_line2string100NoMust not be identical to line1 or line3.
25corr_address_line3string100NoMust not be identical to line1 or line2.
26corr_citystring35YesCity/Town/Village name
27corr_statestring2YesState code (e.g., HR for Haryana, MH for Maharashtra)
28corr_pincodestring6Yes6-digit Indian pincode
29corr_countrystring2YesISO 3166-1 alpha-2. IN for India.
30corr_address_typestring15YesRESIDENTIAL, BUSINESS, REGISTERED_OFFICE, UNSPECIFIED
31corr_proof_typestring20YesAADHAAR, PASSPORT, VOTER_ID, DL, UTILITY_BILL, BANK_STATEMENT
#Field NameTypeMax LengthMandatoryNotes
32perm_same_as_correspondenceboolean-YesIf true, permanent address fields are copied from correspondence address
33-39perm_address_line1 through perm_countrySame as correspondenceSameConditionalMandatory if perm_same_as_correspondence is false
#Field NameTypeMax LengthMandatoryNotes
40mobile_country_codestring5Yes+91 for India
41mobilestring10Yes10-digit Indian mobile number. Must be pre-verified via OTP.
42emailstring100YesMust be pre-verified. Valid email format.
43std_codestring5NoLandline STD code
44phonestring12NoLandline number
45faxstring15NoFax number (rarely used)
#Field NameTypeMax LengthMandatoryNotes
46tax_residency_india_onlyboolean-YesTrue if tax resident of India only. If false, FATCA/CRS detailed declaration required.
47fatca_country_of_birthstring2ConditionalISO country code. Mandatory if US person or non-India tax resident.
48fatca_country_of_citizenshipstring2ConditionalISO country code
49fatca_country_of_tax_residencystring2ConditionalISO country code
50fatca_tax_identification_numberstring20ConditionalTIN/SSN/EIN in country of tax residency
51fatca_tin_issuing_countrystring2ConditionalCountry that issued the TIN
52fatca_declaration_datedate10YesYYYY-MM-DD. Date of self-certification.
53fatca_us_personboolean-YesWhether the client is a US person under FATCA
54fatca_greencard_holderboolean-ConditionalMandatory if fatca_us_person is true

FATCA/CRS upload to KRA is mandatory since July 2024.

#Field NameTypeMax LengthMandatoryNotes
55occupation_codestring2Yes01=Business, 02=Salaried, 03=Professional, 04=Agriculture, 05=Retired, 06=Housewife, 07=Student, 08=Others
56occupation_descriptionstring50NoFree text if code is 08
57gross_annual_income_rangestring2Yes01=Below 1L, 02=1-5L, 03=5-10L, 04=10-25L, 05=25L-1Cr, 06=Above 1Cr
58net_worthnumber15NoIn INR. Recommended for HNI clients.
59net_worth_datedate10ConditionalYYYY-MM-DD. Mandatory if net_worth provided. Must be within last 1 year.
60source_of_wealthstring50NoSALARY, BUSINESS, INHERITANCE, INVESTMENT, PENSION, OTHERS
#Field NameTypeMax LengthMandatoryNotes
61is_pepboolean-YesPolitically Exposed Person (or has been in last 12 months). Includes heads of state, ministers, MPs, judges, military officers, senior government officials, political party leaders.
62is_pep_relatedboolean-YesFamily member or close associate of a PEP. Family = spouse, parents, siblings, children, and their spouses.
63pep_declaration_textstring500YesSelf-declaration text confirming PEP/non-PEP status
#Field NameTypeFormatMandatoryNotes
64photobinary/stringJPEG, PNGYesPassport-size photograph. Base64 encoded. Max 1MB. Min 200x200px, max 1000x1000px.
65signaturebinary/stringJPEG, PNGYesSignature image. Base64 encoded. Max 1MB.
66poi_typestring-YesProof of Identity type: PAN, AADHAAR, PASSPORT, VOTER_ID, DL
67poi_documentbinary/stringJPEG, PNG, PDFYesProof of Identity document image. Base64 encoded. Max 2MB.
68poa_typestring-YesProof of Address type: AADHAAR, PASSPORT, VOTER_ID, DL, UTILITY_BILL, BANK_STATEMENT
69poa_documentbinary/stringJPEG, PNG, PDFYesProof of Address document image. Base64 encoded. Max 2MB.

Part II data is specific to the securities market intermediary and includes trading-related preferences. This data is NOT shared across intermediaries — each broker maintains their own Part II data.

#Field NameTypeMax LengthMandatoryNotes
70trading_account_typestring10YesINDIVIDUAL, JOINT, HUF, CORPORATE, TRUST, NRI
71segment_equityboolean-YesEquity cash segment activation
72segment_equity_derivativesboolean-NoF&O segment (requires income proof >= 10L or net worth certificate)
73segment_currency_derivativesboolean-NoCurrency derivatives
74segment_commodityboolean-NoCommodity segment (MCX)
75segment_debtboolean-NoDebt/Fixed Income segment
76risk_appetitestring15YesLOW, MODERATE, HIGH, VERY_HIGH (derived from risk profiling questionnaire)
77settlement_preferencestring10YesMONTHLY, QUARTERLY (running account settlement frequency)
78ddpi_optedboolean-YesWhether client has opted for DDPI (Demat Debit and Pledge Instruction). DDPI replaced POA since Nov 2022.
79ddpi_scopestring100ConditionalScope of DDPI authorization. Mandatory if ddpi_opted is true.
80nominee_countnumber2YesNumber of nominees (0 to 10). 0 means opt-out with mandatory video verification.
81-90Nominee details (per nominee)object-Conditionalname, relationship, dob, percentage, pan, aadhaar_ref, address per nominee. Up to 10 nominees since Jan 2025.
91bank_account_numberstring20YesPrimary bank account for trading
92bank_ifscstring11YesIFSC code
93bank_namestring50YesBank name as per penny drop
94bank_account_typestring2YesSB=Savings, CA=Current
95bank_micrstring9No9-digit MICR code

4.3 FATCA/CRS Detailed Declaration (when applicable)

Section titled “4.3 FATCA/CRS Detailed Declaration (when applicable)”

When a client has tax residency outside India (tax_residency_india_only = false), the following additional FATCA/CRS fields are required. This section supports multiple tax residency countries.

#Field NameTypeMandatoryNotes
96fatca_crs_recordsarrayYesArray of tax residency declarations (one per country of tax residency)
96.1country_of_tax_residencystringYesISO 3166-1 alpha-2 code
96.2tax_identification_numberstringYesTIN in that country
96.3tin_typestringYesTIN, SSN, EIN, ITIN, OTHER
96.4tin_not_available_reasonstringConditionalIf TIN not available: NOT_ISSUED, PENDING, EXEMPT
97entity_type_fatcastringNoFor non-individuals: ACTIVE_NFFE, PASSIVE_NFFE, FINANCIAL_INSTITUTION
98giinstringNoGlobal Intermediary Identification Number (for financial institutions)
99sponsoring_entity_namestringNoFor sponsored entities
100sponsoring_entity_giinstringNoSponsoring entity’s GIIN
DocumentFormatMin SizeMax SizeMin ResolutionNotes
PhotographJPEG, PNG10KB1MB200x200pxRecent passport-size, white/light background
SignatureJPEG, PNG5KB1MB100x50pxBlue/Black ink on white background
PAN CardJPEG, PNG, PDF10KB2MB800px widthClear, readable, all corners visible
Aadhaar CardJPEG, PNG, PDF10KB2MB800px widthFront + Back (if both sides have info)
PassportJPEG, PNG, PDF10KB2MB800px widthFirst and last pages
Address ProofJPEG, PNG, PDF10KB2MB800px widthMust show name and address clearly

ActivityTimelineReference
KRA upload after account openingWithin 3 working daysSEBI KYC Master Circular
KRA validation after submission2 working daysKRA processing SLA
Total: submission to validation~5 working daysCombined
CKYC upload (parallel)Within 3 working daysSEBI Aug 2024 circular
Client trading eligibilityUpon KRA status = “Registered”Can trade before “Validated”
OperationResponse TypeExpected Latency
PAN Status LookupSynchronous (real-time)1-3 seconds
Full Record FetchSynchronous (real-time)2-5 seconds
Upload (submission acceptance)Synchronous (acceptance)1-3 seconds
Upload (final status)Asynchronous (callback/poll)1-48 hours
Document DownloadSynchronous (real-time)2-5 seconds
Modify (submission acceptance)Synchronous (acceptance)1-3 seconds
Modify (final status)Asynchronous (callback/poll)1-48 hours

KRA systems typically have scheduled maintenance:

  • CVL KRA: Sunday maintenance window (varies, check CVL website)
  • NDML KRA: Sunday maintenance (typically 6 AM - 12 PM IST)
  • All KRAs: Year-end / quarter-end may have extended processing times

Recommendation: Build retry queues for KRA submissions. If a submission fails due to KRA downtime, queue it for automatic retry every 15 minutes for up to 24 hours, then escalate to operations.


A KRA modification is required when a client’s data changes after the initial KYC submission. Common triggers:

TriggerExample
Address changeClient moves to a new city
Contact changeNew mobile number or email
Name changeMarriage (maiden to married name), court-ordered name change
Income changePromotion, job change (affects income range code)
Occupation changeSalaried to business, retired, etc.
Marital status changeMarriage, divorce
FATCA updateChange in tax residency or TIN
Nominee updateAdd/remove/modify nominees
Document updateExpired passport replaced, new address proof
CategoryFieldsModification Process
Freely ModifiableAddress (corr + perm), Mobile, Email, STD/Phone, Occupation, Income range, Net worth, Marital status, FATCA/CRS data, Nominee detailsSubmit modification via KRA Upload API with application_type: "MODIFY". No additional verification needed beyond standard API validation.
Modifiable with Re-verificationName (first/middle/last), Date of Birth, GenderRequires supporting documents: gazette notification (name change), marriage certificate, court order. KRA manual review triggered. Takes 3-5 working days.
Non-ModifiablePANPAN is the primary key. Cannot be changed. If PAN itself changes (surrender + new allotment), a fresh KYC submission is required. Old record linked via old PAN becomes inactive.
RestrictedCitizenship, Nationality, Residential statusChange from Resident to NRI (or vice versa) triggers enhanced due diligence. New PIS permission letter needed for NRI conversion. Residential status change may require fresh account opening.

The modification uses the same POST /kra/upload endpoint with the application_type set to "MODIFY":

{
"pan": "ABCDE1234F",
"application_type": "MODIFY",
"application_number": "MOD-2026-001234",
"intermediary_code": "BSE-MBR-12345",
"modification_reason": "ADDRESS_CHANGE",
"modified_fields": ["correspondence_address", "contact_details.mobile"],
"correspondence_address": {
"line1": "456 NEW STREET",
"line2": "BLOCK B",
"line3": "",
"city": "MUMBAI",
"state": "MH",
"pincode": "400001",
"country": "IN",
"address_type": "RESIDENTIAL",
"proof_type": "AADHAAR"
},
"contact_details": {
"mobile_country_code": "+91",
"mobile": "9876543211"
},
"documents": {
"poa_type": "AADHAAR",
"poa_document": "<base64_new_address_proof>"
},
"callback_url": "https://your-server.com/webhooks/kra-modify"
}

6.4 Modification Impact on 6 KYC Attributes

Section titled “6.4 Modification Impact on 6 KYC Attributes”

When any of the 6 KYC attributes (Name, PAN, Address, Mobile, Email, Income Range) is modified at the KRA, the same change must be propagated to:

  1. Exchange UCC (NSE, BSE, MCX) — via UCC modification batch or API
  2. Depository (CDSL, NSDL) — via BO modification
  3. CKYC (CERSAI) — via CKYC modification

Failure to synchronize creates a mismatch, which triggers non-compliance flags during exchange reconciliation.


The sections above cover individual KYC, which accounts for the vast majority of onboarding volume. However, brokers also onboard corporate entities, HUFs, partnerships, trusts, LLPs, and NRIs — each with distinct documentation requirements and additional mandatory fields at the KRA.

KRA supports multiple entity types beyond individuals. Each has additional mandatory fields and documentation requirements.

FieldTypeMandatoryNotes
cinstringYesCompany Identification Number (21 characters, issued by MCA/ROC)
registration_numberstringConditionalIf CIN not available (pre-2013 companies)
date_of_incorporationdateYesYYYY-MM-DD
place_of_incorporationstringYesCity + State of ROC registration
company_typestringYesPRIVATE_LIMITED, PUBLIC_LIMITED, ONE_PERSON_COMPANY, SECTION_8
directorsarrayYesArray of director objects (minimum 2 for private, 3 for public)
directors[].namestringYesFull name of director
directors[].dinstringYesDirector Identification Number (8 digits, issued by MCA)
directors[].panstringYesDirector’s PAN
directors[].designationstringYesMANAGING_DIRECTOR, WHOLE_TIME_DIRECTOR, DIRECTOR, INDEPENDENT_DIRECTOR
directors[].nationalitystringYesISO country code
directors[].is_authorized_signatorybooleanYesWhether this director is authorized to operate the trading account
authorized_signatoryobjectYesDetails of person authorized to operate the account
authorized_signatory.namestringYesFull name
authorized_signatory.panstringYesPAN
authorized_signatory.designationstringYesDesignation in the company
authorized_signatory.specimen_signaturebinaryYesSignature image (base64)
ubo_declarationarrayYesUltimate Beneficial Owner declaration (individuals owning >= 10% for listed, >= 25% for unlisted companies)
ubo[].namestringYesFull name of UBO
ubo[].panstringYesPAN
ubo[].holding_percentagenumberYesPercentage of ownership
ubo[].addressobjectYesUBO’s address

Required Documents for Corporate:

  • MOA (Memorandum of Association)
  • AOA (Articles of Association)
  • Board Resolution authorizing trading account opening
  • Board Resolution authorizing designated signatories
  • Certificate of Incorporation
  • PAN card of the company
  • Latest audited financials (for net worth/income verification)
  • Address proof of registered office (utility bill, bank statement, or GST certificate)
FieldTypeMandatoryNotes
huf_panstringYesPAN of the HUF entity (separate from Karta’s personal PAN)
huf_namestringYesName as per HUF PAN (e.g., “SURESH KUMAR HUF”)
karta_namestringYesFull name of the Karta (head of HUF)
karta_panstringYesKarta’s individual PAN
karta_dobdateYesKarta’s date of birth
karta_addressobjectYesKarta’s residential address
coparcenersarrayNoArray of coparcener details (recommended but not mandatory)
coparceners[].namestringRecommendedCoparcener name
coparceners[].panstringRecommendedCoparcener PAN
coparceners[].relationshipstringRecommendedRelationship to Karta (son, grandson, father, etc.)

Required Documents for HUF:

  • HUF PAN card
  • Karta’s PAN card
  • Karta’s identity proof (Aadhaar/Passport/Voter ID)
  • HUF declaration deed (on stamp paper, signed by Karta and coparceners)
  • Address proof of HUF
  • Bank account in the name of the HUF
FieldTypeMandatoryNotes
firm_panstringYesPAN of the partnership firm
firm_namestringYesName as per PAN
registration_numberstringNoRegistrar of Firms registration number (if registered)
date_of_registrationdateConditionalMandatory if registered partnership
partnersarrayYesArray of partner details (all partners)
partners[].namestringYesFull name
partners[].panstringYesIndividual PAN
partners[].dobdateYesDate of birth
partners[].percentage_sharenumberYesProfit-sharing ratio (must total 100%)
partners[].is_authorizedbooleanYesWhether authorized to operate trading account
authorized_partnerobjectYesThe partner designated to operate the account

Required Documents for Partnership:

  • Partnership firm PAN card
  • Partnership deed (registered or unregistered)
  • PAN cards of all partners
  • Identity proof of authorized partner
  • Address proof of firm
  • Authority letter (if authorized partner is different from managing partner)
FieldTypeMandatoryNotes
country_of_residencestringYesISO country code of current country of residence
tax_id_in_country_of_residencestringYesTax Identification Number (SSN for US, SIN for Canada, etc.)
nre_nro_account_typestringYesNRE (repatriable) or NRO (non-repatriable)
pis_permission_referencestringYesRBI Portfolio Investment Scheme permission letter reference number
pis_bank_namestringYesName of the bank through which PIS operates
overseas_addressobjectYesComplete overseas address (mandatory, in addition to Indian address if any)
overseas_address.line1stringYesAddress line 1
overseas_address.line2stringNoAddress line 2
overseas_address.citystringYesCity
overseas_address.state_provincestringNoState/Province
overseas_address.zip_postal_codestringYesZIP/Postal code
overseas_address.countrystringYesISO country code
pio_oci_statusstringConditionalPIO (Person of Indian Origin), OCI (Overseas Citizen of India), NONE. Mandatory if citizenship is not Indian.
pio_oci_card_numberstringConditionalPIO/OCI card number. Mandatory if pio_oci_status is PIO or OCI.

FATCA/CRS for NRIs: NRIs have more detailed FATCA/CRS requirements since they have tax residency outside India. All tax residency countries must be declared with TINs.

Required Documents for NRI:

  • PAN card (Indian PAN is mandatory for NRI trading)
  • Passport (Indian or foreign, with valid visa for foreign passport)
  • Overseas address proof
  • PIS permission letter from RBI-authorized bank
  • NRE/NRO bank account details
  • PIO/OCI card (if applicable)
  • Photo and signature

CP Code Removal: Note that SEBI removed the requirement for Custodial Participant (CP) code for NRIs effective July 2025.

FieldTypeMandatoryNotes
trust_namestringYesFull name of trust as per registration
trust_panstringYesPAN of the trust entity
trust_registration_numberstringYesRegistrar of Trusts registration number
trust_deed_datedateYesDate of trust deed execution
trust_typestringYesPRIVATE, PUBLIC, CHARITABLE, RELIGIOUS
trusteesarrayYesArray of trustee details (multiple trustees possible)
trustees[].namestringYesFull name of trustee
trustees[].panstringYesTrustee PAN
trustees[].designationstringYesMANAGING_TRUSTEE, TRUSTEE
trustees[].is_authorizedbooleanYesWhether authorized to operate trading account
beneficiariesarrayConditionalBeneficiary information (mandatory for private trusts)
beneficiaries[].namestringYesBeneficiary name
beneficiaries[].panstringNoBeneficiary PAN (if available)
beneficiaries[].relationshipstringNoRelationship to settlor

Required Documents for Trust:

  • Trust PAN card
  • Trust deed (registered)
  • PAN cards of all trustees
  • Identity proof of authorized trustee
  • Board resolution (if applicable) authorizing trading
  • Address proof of registered office
FieldTypeMandatoryNotes
llpinstringYesLLP Identification Number (issued by MCA, 7 characters: AAA-nnnn format)
llp_namestringYesFull name as per LLP registration
llp_panstringYesPAN of the LLP
date_of_incorporationdateYesDate of LLP incorporation
designated_partnersarrayYesArray of designated partner details (minimum 2)
designated_partners[].namestringYesFull name
designated_partners[].dpinstringYesDesignated Partner Identification Number (DPIN, 8 digits)
designated_partners[].panstringYesIndividual PAN
designated_partners[].is_authorizedbooleanYesWhether authorized for trading
llp_agreement_datedateYesDate of LLP agreement

Required Documents for LLP:

  • LLP PAN card
  • Certificate of Incorporation (Form 16 issued by ROC)
  • LLP Agreement
  • PAN cards of all designated partners
  • Identity proof of authorized partner
  • Address proof of registered office

While Digio is the recommended path for Phase 1, some brokers at scale choose to integrate directly with a KRA to reduce per-transaction costs. The following section documents the direct integration approach for reference and future planning.

8. Direct KRA Integration (Alternative - for Reference)

Section titled “8. Direct KRA Integration (Alternative - for Reference)”

Direct integration with a KRA (bypassing Digio) provides more control and is cheaper at scale but requires significantly more development effort. This path is NOT recommended for Phase 1.

ParameterDetail
ProtocolSOAP 1.1 / SOAP 1.2
WSDLhttps://www.cvlkra.com/PANInquiry.asmx
Data FormatXML (SOAP envelope)
AuthSOAP header with username + password (issued by CVL after registration)
Setup Time~3 weeks (includes registration, documentation, UAT testing, go-live)
RegistrationMust register as a Point of Service (POS) with CVL KRA

SOAP Methods:

MethodPurposeRequest Type
GetPanStatusPAN status lookup across all KRAsXML with PAN
SolicitPANDetailsFetchALLKRAFetch detailed KYC recordXML with PAN + KRA identifier
InsertUpdateKYCRecordSubmit or modify 1 KYC recordFull KYC XML
GetBulkPanStatusBulk PAN status check (batch)XML with multiple PANs

Sample SOAP Request (GetPanStatus):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<AuthHeader xmlns="http://www.cvlkra.com/">
<UserName>YOUR_USERNAME</UserName>
<Password>YOUR_PASSWORD</Password>
<PosCode>YOUR_POS_CODE</PosCode>
</AuthHeader>
</soap:Header>
<soap:Body>
<GetPanStatus xmlns="http://www.cvlkra.com/">
<PanNo>ABCDE1234F</PanNo>
</GetPanStatus>
</soap:Body>
</soap:Envelope>

For bulk KYC operations, CVL KRA supports tilde (~) delimited text files uploaded through the CVL KRA portal (Utilities menu).

File Format (one record per line):

POS_CODE~APP_TYPE~APP_NO~PAN_NO~PAN_EXEMPT~PREFIX~NAME~FATHER_SPOUSE_NAME~
MOTHER_NAME~GENDER~MARITAL_STATUS~DOB~NATIONALITY~RESIDENTIAL_STATUS~
OCCUPATION~CORR_ADDR1~CORR_ADDR2~CORR_ADDR3~CORR_CITY~CORR_PIN~CORR_STATE~
CORR_COUNTRY~PERM_ADDR1~...~MOBILE_CODE~MOBILE~EMAIL~POI_TYPE~POI_DOC_NO~
POA_TYPE~POA_DOC_NO~INCOME~NET_WORTH~PEP~KYC_DATE~...

Key details:

  • Delimiter: tilde (~)
  • Encoding: UTF-8
  • No header row
  • Each field must be in the exact position per CVL specification
  • Maximum batch size: varies (contact CVL for current limits)
  • Processing: overnight batch cycle
ParameterDetail
ProtocolREST API + SOAP XML
Portalhttps://kra.ndml.in
AuthEntity-specific credentials
Setup Time~3 weeks

Similar functionality to CVL KRA with different endpoint structures.

FactorDigio (REST Wrapper)Direct KRA
Setup costMinimal (API key)Registration fee + development time
Per-query costRs.3-5 (lookup), Rs.5-10 (upload)Rs.2-3 (lookup), Rs.3-5 (upload)
Development time~2 days~3 weeks
MaintenanceDigio handles KRA protocol changesMust maintain SOAP/XML parsers, handle KRA format changes
SupportDigio support teamDirect with KRA (slower response)
Multi-KRA accessBuilt-in interoperabilityMust integrate separately or rely on KRA interop protocol

Recommendation: Use Digio for Phase 1. Consider direct CVL KRA integration for Phase 2+ when volume exceeds 50,000+ KYC operations/month and cost savings justify the development investment.


SEBI mandated dual upload to both KRA and CKYC (CERSAI) effective August 2024. This ensures that:

  1. Securities-market KYC is maintained at the KRA (for trading eligibility)
  2. Financial-sector-wide KYC is maintained at CKYC (for cross-sector interoperability)
Step 1: KRA Upload [via Digio]
|--- Submit full KYC record (Part I + Part II)
|--- Wait for acceptance
|
Step 2: CKYC Upload [via Decentro]
|--- Submit Part I data (CERSAI template)
|--- Receives 14-digit KIN (CKYC Identification Number)
|
Step 3: Update internal records
|--- Store KRA reference number + KRA status
|--- Store CKYC KIN
|--- Mark both uploads as completed

Why KRA first?

  • KRA status directly gates trading. Getting KRA acceptance first allows faster account activation.
  • CKYC upload can proceed in parallel or immediately after KRA acceptance.
  • If KRA upload fails, the client cannot trade regardless of CKYC status, so it is the critical path.
ScenarioKRA StatusCKYC StatusCan Trade?Action Required
Both acceptedRegistered/ValidatedKIN assignedYesNone
KRA accepts, CKYC rejectsRegisteredRejectedYesCKYC rejection must be resolved for compliance, but trading is not blocked
KRA rejects, CKYC acceptsRejectedKIN assignedNoKRA rejection must be resolved. Re-submit corrected KYC to KRA.
Both rejectRejectedRejectedNoFix data issues and re-submit to both
KRA accepts, CKYC pendingRegisteredUnder ProcessYesMonitor CKYC status. No action needed for trading.

The data submitted to KRA and CKYC must be consistent since both use the CERSAI Part I template for identity data. Any discrepancies between the two submissions will cause reconciliation issues during SEBI inspections.

Best practice: Use the same data payload for both KRA and CKYC submissions. Build a single “KYC Record” object in the application layer and derive both the KRA payload and CKYC payload from it.


SEBI requires that 6 key KYC attributes must be consistent across all systems where the client is registered:

#AttributeKRA FieldExchange UCC FieldDepository BO Field
1Nameapplicant_nameclient_namebo_name
2PANpanpanpan
3Addresscorrespondence_addressaddressbo_address
4Mobilemobilemobile_numbermobile
5Emailemailemail_idemail
6Income Rangegross_annual_income_rangeincome_rangeN/A (not stored at depository)
  • All 6 attributes must match exactly across KRA, Exchange (NSE/BSE/MCX), and Depository (CDSL/NSDL).
  • Name matching allows minor variations (e.g., “RAKESH KUMAR” vs “RAKESH KUMAR” with extra space) but the canonical form should be as per PAN.
  • Address matching is fuzzy — the address need not be character-for-character identical, but the same address must be represented.
  • Mobile and Email must match exactly (no variations).
  • Income Range must match the same code across all systems.
  • Client is marked non-compliant by the exchange.
  • Exchange may change client status to Not Permitted to Trade (NPTT).
  • Broker receives compliance notice during periodic reconciliation.
  • Persistent mismatches can attract SEBI regulatory action.
1. Identify which system has the mismatch (KRA, Exchange, or Depository)
2. Determine the "source of truth" (typically the most recent verified data)
3. Update the mismatched system:
- KRA: Submit modification via KRA Upload API
- Exchange: Submit UCC modification (NSE API/BSE SOAP/batch)
- Depository: Submit BO modification (CDSL CDAS/NSDL DPM)
4. Verify all 3 systems show consistent data
5. Document the correction for audit trail

In production, KRA integration encounters a range of real-world scenarios that fall outside the standard lookup-fetch-submit flow. The following edge cases require special handling in application logic, operations workflows, or both.

11.1 Customer Already KYC Registered at Another Broker

Section titled “11.1 Customer Already KYC Registered at Another Broker”

Scenario: Customer’s PAN lookup returns “KYC Registered” or “KYC Validated” with a different intermediary.

Action:

  • Fetch the full KRA record via GET /kra/fetch
  • Prefill the onboarding form with the fetched data
  • Customer verifies and confirms the data
  • No re-upload needed if data has not changed
  • If any of the 6 KYC attributes differ from the customer’s current details, submit a modification

11.2 Customer KYC Validated but Data Changed

Section titled “11.2 Customer KYC Validated but Data Changed”

Scenario: Customer moved to a new address since their last KYC.

Action:

  • Submit a KRA modification with the updated fields
  • Simultaneously update exchange UCC and depository BO
  • Monitor KRA status — should remain Registered/Validated after modification

Scenario: A minor account holder turns 18.

Action:

  • The guardian’s KYC cannot be used for the now-adult client
  • A fresh KYC upload must be submitted in the client’s own name
  • The client must provide their own PAN (not the guardian’s PAN)
  • The minor account must be converted to an individual account
  • New account opening workflow with full KYC

11.4 PAN Status Changed (E to X — Deactivated)

Section titled “11.4 PAN Status Changed (E to X — Deactivated)”

Scenario: Client’s PAN becomes inoperative (e.g., PAN-Aadhaar linking deadline missed).

Action:

  • PAN verification will return status X (deactivated)
  • KRA status may be affected — some KRAs flag records with inactive PANs
  • Trading must be blocked until PAN is reactivated
  • Client must link PAN-Aadhaar at the Income Tax portal and get PAN reactivated
  • Once PAN is E (valid) again, re-verify and re-confirm with KRA

Scenario: KRA rejects the upload with a “duplicate PAN” error.

Action:

  • This means another entity (possibly a different person with the same PAN, or a data entry error) already has a KYC record with this PAN
  • Client must verify their PAN is correct
  • If the PAN genuinely belongs to the client, they must resolve the duplicate with the Income Tax Department
  • The broker cannot override or resolve duplicate PAN issues at the KRA level
  • Document the case and escalate to compliance

Scenario: Client’s name changed from maiden name to married name.

Action:

  • Submit KRA modification with application_type: "MODIFY" and the new name
  • Supporting documents required: marriage certificate, gazette notification, or court order
  • New PAN card reflecting the updated name (if PAN was updated at ITD)
  • KRA manual review triggered — takes 3-5 working days
  • Simultaneously update all systems (exchange UCC, depository BO, CKYC)

Scenario: Account holder passes away.

Action:

  • No KRA update is possible for the deceased client’s record
  • The KRA record remains as-is
  • Account closure workflow is initiated:
    1. Transmission of securities to nominee/legal heir
    2. Settlement of pending positions and obligations
    3. UCC status changed to “Closed” at exchanges
    4. Depository BO status changed to “Closed”
    5. Records retained per SEBI retention policy (minimum 8 years under 2026 Regulations)

11.8 NRI Returning to India (Residential Status Change)

Section titled “11.8 NRI Returning to India (Residential Status Change)”

Scenario: NRI client returns to India and becomes a resident.

Action:

  • Submit KRA modification: residential_status from NON_RESIDENT to RESIDENT
  • NRE bank account must be redesignated or changed to a resident savings account
  • PIS permission is no longer needed (and should be surrendered to the bank)
  • Overseas address replaced with Indian address
  • FATCA/CRS declaration updated (tax residency now India only, if applicable)
  • Exchange UCC and depository BO must be updated accordingly

11.9 Client with Multiple Trading Accounts

Section titled “11.9 Client with Multiple Trading Accounts”

Scenario: Client has accounts with multiple brokers.

Action:

  • KRA lookup returns the existing record regardless of which broker originally uploaded it
  • Each broker maintains their own Part II data
  • The KRA record (Part I) is shared across all intermediaries
  • If one broker submits a modification, the updated record is visible to all brokers on subsequent lookup
  • Each broker is independently responsible for the 6 KYC attributes matching in their exchange UCC and depository BO

11.10 KRA System Downtime During Onboarding

Section titled “11.10 KRA System Downtime During Onboarding”

Scenario: KRA API returns 503 during a client onboarding session.

Action:

  • Continue the onboarding flow — collect all data from the client
  • Queue the KRA submission for retry
  • Account can be provisionally created (client cannot trade until KRA status is “Registered”)
  • Retry KRA submission every 15 minutes for up to 24 hours
  • If KRA remains unavailable for >24 hours, escalate to operations and notify compliance
  • SEBI allows 3 working days for KRA upload, so brief KRA downtime does not create compliance risk

TaskFrequencyMethod
KRA status check for all active clientsDaily (overnight batch)Bulk PAN status API via Digio or direct KRA download
Identify clients whose KRA status changedDailyCompare current status with previous day
Flag clients moved to “On Hold” or “Rejected”DailyAuto-block trading for affected clients
New “Registered” / “Validated” clientsDailyAuto-enable trading for newly compliant clients
TaskFrequencyMethod
6 KYC attributes cross-check (KRA vs Exchange vs Depository)Weekly or MonthlyDownload client master from all systems, compare programmatically
CKYC vs KRA consistency checkMonthlyVerify that both KRA and CKYC records exist and match for all clients
FATCA/CRS completeness checkQuarterlyEnsure all clients with non-India tax residency have complete FATCA declarations at KRA
PAN validity re-checkMonthlyRe-verify PAN status (E/F/X/D) for all active clients. Flag deactivated PANs.
Nominee declaration completenessQuarterlyEnsure all clients have either nominated or opted out (with video verification)

Digio provides a bulk status check API for verifying the KRA status of multiple PANs in a single call:

POST /kra/bulk-status
Headers:
Authorization: Basic <base64(client_id:client_secret)>
Content-Type: application/json
{
"pans": ["ABCDE1234F", "FGHIJ5678K", "KLMNO9012P", ...],
"callback_url": "https://your-server.com/webhooks/kra-bulk-status"
}

Limits: Up to 1000 PANs per request. For larger batches, paginate.

Response (async via callback):

{
"event": "kra.bulk_status.completed",
"batch_id": "BATCH-xxxx",
"results": [
{ "pan": "ABCDE1234F", "kra_status": "KYC Validated", "kra_source": "CVL" },
{ "pan": "FGHIJ5678K", "kra_status": "KYC Registered", "kra_source": "NDML" },
{ "pan": "KLMNO9012P", "kra_status": "On Hold", "kra_source": "CVL" }
]
}
ReportPurposeRetention
KRA submission logAudit trail of all KRA uploads/modifications8 years (SEBI 2026 Regulations)
KRA status change logTrack all status transitions per client8 years
6 KYC attribute mismatch reportIdentify non-compliant clientsGenerate and resolve monthly
FATCA/CRS upload confirmationProve FATCA compliance to SEBI8 years
Dual upload completion reportProve both KRA + CKYC uploads completed8 years

OperationCost per Transaction (INR)Notes
KRA PAN Status LookupRs. 3-5Per PAN query across all KRAs
KRA Full Record FetchRs. 5-8Per download of complete record
KRA Upload (New)Rs. 5-10Per submission (new KYC)
KRA Upload (Modify)Rs. 5-10Per modification request
KRA Document DownloadRs. 3-5Per document retrieval
KRA Bulk Status CheckRs. 1-2 per PANDiscounted for bulk operations

Pricing Notes:

  • Prices are indicative and subject to volume-based discounts.
  • Contact Digio for exact pricing based on expected monthly volume.
  • Digio typically offers tiered pricing: higher volumes = lower per-transaction cost.
  • Minimum monthly commitment may apply.
OperationCVL KRA Direct (INR)Notes
PAN Status LookupRs. 2-3Direct to CVL, no wrapper markup
Full Record FetchRs. 3-5
Upload (New)Rs. 3-5
Upload (Modify)Rs. 3-5
Bulk Upload (per record)Rs. 1-2Via tilde-delimited file

Direct KRA is ~30-50% cheaper but requires 3 weeks of setup, SOAP/XML development, and ongoing maintenance of protocol changes.

13.3 Estimated Cost per Onboarding (KRA Component)

Section titled “13.3 Estimated Cost per Onboarding (KRA Component)”
ScenarioOperationsEst. Cost (INR)
New client, not KYC-registeredLookup (Rs.4) + Upload (Rs.8)Rs. 12
Existing client, KYC foundLookup (Rs.4) + Fetch (Rs.6)Rs. 10
Existing client, data modificationLookup (Rs.4) + Fetch (Rs.6) + Modify (Rs.8)Rs. 18

DateChangeImpact on KRA Integration
Jul 2024FATCA/CRS upload to KRA mandatoryAll KRA uploads must include complete FATCA/CRS declaration. Failure to include FATCA data results in KRA rejection.
Aug 2024Dual upload (KRA + CKYC) mandatoryBoth KRA and CKYC uploads required within 3 working days. Build parallel upload pipelines.
Jan 2025CKYC search returns masked CKYC numberCKYC Search API now returns masked KIN ($XXXX1234$). Full CKYC Download required for unmasked number. Does not affect KRA workflow directly.
Jan 2025Up to 10 nominees allowedKRA upload Part II must support up to 10 nominees (previously 3). Nomination opt-out requires video verification.
Jun 2025SEBI Stock Brokers Master Circular updatedSEBI/HO/MIRSD/MIRSD-PoD/P/CIR/2025/90. Updated KYC requirements, reporting timelines, and compliance obligations for stock brokers.
Jul 2025CP code requirement removed for NRIsNRI clients no longer need Custodial Participant code. Simplifies NRI KRA uploads.
Jan 2026SEBI Stock Brokers Regulations 2026 notifiedReplaces the 1992 regulations entirely. New data retention requirements (8 years), updated record-keeping standards, enhanced compliance framework.

CircularDateSubject
SEBI/HO/MIRSD/MIRSD-SEC-2/P/CIR/2023/168Oct 2023KYC Master Circular — comprehensive KYC requirements for all SEBI-registered intermediaries. Covers KRA obligations, CKYC requirements, IPV/VIPV, document requirements, and timelines.
SEBI/HO/MIRSD/MIRSD-PoD/P/CIR/2025/90Jun 2025Stock Brokers Master Circular — updated operational and compliance requirements for stock brokers, including KYC, UCC, margin, and risk management.
SEBI Stock Brokers Regulations 2026Jan 7, 2026New Regulations — replaces SEBI (Stock Brokers and Sub-Brokers) Regulations 1992. New registration requirements, capital adequacy, record retention (8 years), and governance standards.
SEBI/HO/MIRSD/DOP/CIR/P/2019/136-UCC-Demat Mapping — mandatory mapping between exchange UCC and depository BO account for all clients.
DocumentSource
CVL KRA POS Manualhttps://www.cvlkra.com (POS login -> Downloads)
CVL KRA SOAP WSDLhttps://www.cvlkra.com/PANInquiry.asmx
NDML KRA Integration Guidehttps://kra.ndml.in (Member login -> API docs)
CAMS KRA Portalhttps://www.camskra.com
KFintech KRA Portalhttps://kra.kfintech.com
DOTEX KRA Portalhttps://www.absortkra.com
DocumentURL
Digio KRA API Integrationhttps://documentation.digio.in/digikyc/kra/api_integration/
Digio Android SDKhttps://documentation.digio.in/sdk/android/kyc_full/
Digio iOS SDKhttps://github.com/digio-tech/digio-iOS-KYC-SDK
Digio Gateway KYC Lite (GitHub)https://github.com/digio-tech/gateway_kyc_lite
DocumentPathRelevance
KYC Master DatasetMaster DatasetField-level specification. KRA fields map to sections R (Third-Party Results), S (Submission Records).
Vendor IntegrationsVendor IntegrationsParent document. KRA is Section V4.
KYC FlowKYC Flow9-screen user journey. KRA lookup in Screen 1, KRA upload in batch pipeline.
CKYC Integrationvendors/ckyc/CKYC.mdCKYC integration spec (if created). Dual upload companion to KRA.

  • Register with CVL KRA as intermediary (or verify existing registration)
  • Sign commercial agreement with Digio (primary KRA API vendor)
  • Obtain Digio KRA sandbox/UAT credentials
  • Download CVL KRA POS manual and batch file format specs
  • Set up UAT environment for API and batch testing
  • Implement KRA Lookup by PAN (via Digio API)
  • Implement KRA Fetch (full record retrieval)
  • Implement KRA Submit (new individual registration)
  • Implement KRA Modify (update existing record)
  • Implement KRA status code handling (Registered/Validated/On Hold/Rejected)
  • Build batch file generation (tilde-delimited format for CVL KRA)
  • Implement FATCA/CRS declaration fields in KRA upload (mandatory since Jul 2024)
  • Implement nominee data in KRA Part II (up to 10 nominees since Jan 2025)
  • Build dual upload pipeline: KRA + CKYC in parallel (mandatory since Aug 2024)
  • Implement 6 KYC attribute cross-validation (Name, PAN, Address, Mobile, Email, Income)
  • Build KRA rejection report parser and retry logic
  • Implement KRA status polling and reconciliation
  • Test: KRA Lookup — existing record (KYC Registered / Validated)
  • Test: KRA Lookup — no record found
  • Test: KRA Lookup — On Hold / Under Process status
  • Test: KRA Submit — new individual (all mandatory fields)
  • Test: KRA Submit — with FATCA/CRS declaration
  • Test: KRA Submit — with 10 nominees
  • Test: KRA Modify — update address, mobile, email
  • Test: KRA batch upload (tilde-delimited file)
  • Test: Dual upload — KRA + CKYC parallel
  • Test: 6 KYC attribute validation (mismatch detection)
  • Test: Rejection handling and resubmission
  • Test: NRI client KRA submission
  • Switch from sandbox to production credentials
  • Deploy KRA integration to production
  • Verify first live KRA Lookup + Submit
  • Set up monitoring: success rates, rejection rates, SLA compliance
  • Set up daily KRA status reconciliation
  • Set up FATCA/CRS compliance reporting
  • Document runbook for common KRA rejections and resolution steps

This document covers the KRA integration in detail for the broking KYC project. It should be read alongside Master Dataset for field-level mappings and Vendor Integrations for the broader vendor integration context.