Skip to content

CKYC

Central KYC (CKYC) is India’s unified identity registry for all financial institutions, operated by CERSAI (Central Registry of Securitisation Asset Reconstruction and Security Interest of India) through its technology partner Protean (formerly NSDL e-Governance Infrastructure Limited). Unlike the KRA (KYC Registration Agency) system which serves only the securities market, CKYC spans banking, insurance, securities, and NBFCs (Non-Banking Financial Companies) — making it the single most comprehensive KYC repository in the Indian financial ecosystem.

Every individual in the registry is assigned a unique 14-digit KIN (KYC Identification Number) that serves as a permanent cross-sector identity reference. When a customer completes KYC at any financial institution, that record becomes available to all other regulated entities through search and download operations. This is the “do KYC once, use everywhere” vision that CKYC was designed to fulfill — eliminating redundant identity verification across institutions and reducing onboarding friction for customers.

Since August 2024, SEBI (Securities and Exchange Board of India) mandates dual upload to both KRA and CKYC for every new account. This page covers the complete CKYC integration: search, download, and upload operations via Decentro (our primary aggregator), the SFTP batch pipeline for bulk processing, dual upload orchestration with KRA, and handling of the January 2025 masking change that altered how CKYC numbers are returned in search responses.

  1. Overview
  2. CKYC Operations
  3. SFTP Batch Upload
  4. Via Decentro (Primary Aggregator)
  5. CKYC + KRA Dual Upload Flow
  6. Non-Individual Entities
  7. CKYC Number (KIN)
  8. Edge Cases
  9. Data Privacy
  10. Pricing
  11. Recent Changes (2024-2026)
  12. Key References

The Central KYC Registry (CKYCR) is a centralized repository of KYC records maintained by CERSAI (Central Registry of Securitisation Asset Reconstruction and Security Interest of India). Protean (formerly NSDL e-Governance Infrastructure Limited) is the technology partner that operates the CKYC system on behalf of CERSAI.

CKYC provides a single KYC record per individual accessible by all regulated financial institutions across sectors:

  • Banks (RBI-regulated)
  • Stock brokers and intermediaries (SEBI-regulated)
  • Insurance companies (IRDAI-regulated)
  • Mutual fund houses (SEBI-regulated via AMFIs)
  • NBFCs and payment banks

When a customer completes KYC at any financial institution, that record is uploaded to the CKYC registry. Any other financial institution can then search and download the existing record instead of re-doing KYC from scratch. This is the “do KYC once, use everywhere” vision.

Every individual in the CKYC registry is assigned a 14-digit CKYC Identification Number (KIN). This is the unique identifier for a person across all financial institutions in India.

  • Format: 14 numeric digits (e.g., 50000012345678)
  • Assigned by CERSAI upon successful upload
  • One KIN per person (deduplicated by PAN + DOB + name)
  • Permanent — does not change even when records are updated
AspectCKYC (CKYCR)KRA
RegulatorRBI (via CERSAI)SEBI
ScopeAll financial sectors (banking, insurance, securities, pensions)Securities market only (brokers, DPs, MFs)
OperatorProtean (single registry)5 KRAs (CVL, NDML, DOTEX, CAMS, KFintech)
TemplateCERSAI Part I template (identity-focused)KRA form (includes trading-specific fields)
Unique ID14-digit KINPAN-based (no separate ID)
Impact on tradingNo direct impact — regulatory compliance onlyDirect impact — KRA status determines trading permission
MandateRBI circular + SEBI circular (Aug 2024)SEBI KYC norms (longstanding)

Since August 1, 2024, SEBI mandates that all intermediaries must upload KYC records to both KRA and CKYC:

  • Circular: SEBI/HO/MIRSD/SECFATF/P/CIR/2024/79 (Jun 6, 2024)
  • Previously, brokers only uploaded to KRA; CKYC upload was optional
  • Now both are mandatory for every new account opening

With the conceptual groundwork established, this section walks through the four core API operations — Search, Download, Upload, and Modify — that make up the real-time CKYC integration via Decentro.

Search the CKYC registry to check if a customer already has an existing CKYC record.

Endpoint: POST /kyc/ckyc/search Decentro Docs: https://docs.decentro.tech/reference/kyc-and-onboarding-api-reference-identities-ckyc-services-search

{
"reference_id": "CKYC_SEARCH_20260213_001",
"document_type": "PAN",
"id_number": "ABCDE1234F",
"consent": true,
"consent_purpose": "KYC verification for stock broking account opening"
}

Supported search document types:

Document TypeAPI ValueNotes
PANPANPrimary search key (recommended)
AadhaarAADHAAR12-digit Aadhaar number
Voter IDVOTER_IDEPIC number
PassportPASSPORTPassport number
Driving LicenceDRIVING_LICENCEDL number
{
"decentroTxnId": "DTX-CKYC-20260213-xxxx",
"status": "SUCCESS",
"responseCode": "S00000",
"message": "CKYC record found",
"data": {
"ckycId": "$XXXX1234$",
"ckycReferenceId": "REF123456789",
"fullName": "RAKESH KUMAR",
"fathersFullName": "SURESH KUMAR",
"dob": "1990-05-15",
"gender": "M",
"kycDate": "2023-06-15",
"lastUpdated": "2024-03-10",
"photo": "<BASE64_ENCODED_PHOTO>",
"identityDetails": [
{
"idType": "PAN",
"idNumber": "ABCDE1234F"
},
{
"idType": "AADHAAR",
"idNumber": "XXXX XXXX 5678"
}
]
}
}
{
"decentroTxnId": "DTX-CKYC-20260213-yyyy",
"status": "SUCCESS",
"responseCode": "S00001",
"message": "No CKYC record found for the given document",
"data": null
}

Since January 2025, CERSAI introduced a privacy enhancement: CKYC Search returns a masked CKYC number in the format $XXXX1234$ (only last 4 digits visible). The full 14-digit KIN is only available via the Download operation.

Implications:

  • Search alone is no longer sufficient to get the full KIN
  • If you need the KIN for KRA upload or depository records, you must call Download
  • The masked ID can still be used to identify that a record exists
  • The ckycReferenceId from search can be used as input to the Download API
CodeMeaningAction
S00000Success — record foundProceed to Download if full record needed
S00001No record foundProceed with fresh CKYC upload after KYC capture
E00001Invalid document typeCheck document_type parameter
E00002Invalid document numberValidate format before calling
E00003Consent not providedEnsure consent: true is set
E00010CKYC registry unavailableRetry after delay (see edge cases)
E00011Rate limit exceededImplement exponential backoff

Download the complete CKYC record for a customer, including all personal details, addresses, identity documents, and images.

Endpoint: POST /kyc/ckyc/download Decentro Docs: https://docs.decentro.tech/reference/kyc-and-onboarding-api-reference-identities-ckyc-services-download

{
"reference_id": "CKYC_DOWNLOAD_20260213_001",
"ckyc_number": "50000012345678",
"consent": true,
"consent_purpose": "KYC verification for stock broking account opening"
}

Alternative input (when full CKYC number is not available):

{
"reference_id": "CKYC_DOWNLOAD_20260213_002",
"document_type": "PAN",
"id_number": "ABCDE1234F",
"consent": true,
"consent_purpose": "KYC verification for stock broking account opening"
}

The Download response returns the complete CKYC record. Fields are grouped below:

Personal Details:

FieldTypeDescription
prefixStringMr/Mrs/Ms/Dr etc.
firstNameStringFirst name
middleNameStringMiddle name (optional)
lastNameStringLast name / surname
maidenNameStringMaiden name (if applicable)
fullNameStringConcatenated full name
fathersFullNameStringFather’s name
spouseFullNameStringSpouse’s name (if married)
mothersFullNameStringMother’s maiden name
dobDateDate of birth (YYYY-MM-DD)
genderStringM/F/T
maritalStatusStringSingle/Married/Widowed/Divorced
nationalityStringNationality code
citizenshipStringIN for Indian citizen
residentialStatusStringResident/NRI/FPI
occupationTypeStringOccupation code (01-08)
occupationDetailStringFree text occupation
annualIncomeStringIncome range code

Correspondence Address:

FieldTypeDescription
corrAddressLine1StringLine 1 (building/flat)
corrAddressLine2StringLine 2 (street/road)
corrAddressLine3StringLine 3 (landmark)
corrCityStringCity/Town
corrDistrictStringDistrict
corrStateStringState code
corrPincodeString6-digit PIN code
corrCountryStringCountry code (IN)
corrAddressTypeStringResidential/Business/Registered Office
corrAddressProofTypeStringDocument type used as proof

Permanent Address (same structure as correspondence, prefixed perm):

FieldTypeDescription
permAddressLine1 through permCountryStringPermanent address fields
sameAsCorrespondenceBooleanTrue if permanent = correspondence

Contact Details:

FieldTypeDescription
mobileNumberString10-digit mobile
mobileCountryCodeString+91 for India
emailStringEmail address
phoneNumberStringLandline (optional)
faxNumberStringFax (optional, legacy)

Identity Documents:

FieldTypeDescription
panStringPAN number
aadhaarStringMasked Aadhaar (XXXX XXXX 1234)
voterIdStringVoter ID / EPIC number
passportNumberStringPassport number
passportExpiryDatePassport expiry date
drivingLicenceStringDL number
dlExpiryDateDL expiry date

Tax / FATCA Details:

FieldTypeDescription
taxResidencyCountryStringCountry of tax residency
taxIdentificationNumberStringTIN for non-India tax residency
birthCountryStringCountry of birth
birthCityStringCity of birth
isPoliticallyExposedBooleanPEP status as declared

Images (Base64 encoded):

FieldTypeDescription
photoStringPassport-size photo (Base64, JPEG/PNG)
signatureStringSignature image (Base64, JPEG/PNG)
identityProofImageStringScanned copy of ID proof
addressProofImageStringScanned copy of address proof

Metadata:

FieldTypeDescription
ckycNumberStringFull 14-digit KIN (unmasked)
kycDateDateOriginal KYC date
lastUpdatedDateLast modification date
uploadedByStringFI code of institution that uploaded
verificationMethodStringIPV/OVD/eKYC/VKYC

When CKYC Download returns a full record for a returning customer:

  1. Pre-fill the KYC form with downloaded data (name, DOB, address, contact)
  2. Show the photo and signature from CKYC for visual confirmation
  3. Compare with PAN/Aadhaar data from DigiLocker for consistency
  4. Customer reviews pre-filled data and corrects any outdated information
  5. Only capture delta fields (trading preferences, nominee details, segment selection — Part II data not in CKYC)

Submit a new CKYC record for a customer who does not have an existing CKYC record.

Endpoint: POST /kyc/ckyc/upload Decentro Docs: https://docs.decentro.tech/reference/kyc-and-onboarding-api-reference-identities-ckyc-services-upload-individuals

The upload payload is the most complex CKYC operation. It must conform to the CERSAI Part I template.

{
"reference_id": "CKYC_UPLOAD_20260213_001",
"fi_code": "SEBI_BROKER_CODE",
"branch_code": "HO_001",
"verifier": {
"name": "Priya Sharma",
"designation": "Compliance Officer",
"employee_code": "EMP-CO-001",
"place": "Mumbai",
"date": "2026-02-13"
},
"individual_record": {
"prefix": "Mr",
"first_name": "Rakesh",
"middle_name": "",
"last_name": "Kumar",
"maiden_name": "",
"fathers_full_name": "Suresh Kumar",
"mothers_full_name": "Kamla Devi",
"spouse_full_name": "",
"dob": "1990-05-15",
"gender": "M",
"marital_status": "01",
"nationality": "IN",
"citizenship": "IN",
"residential_status": "01",
"occupation_type": "01",
"pan": "ABCDE1234F",
"mobile": "9876543210",
"email": "rakesh.kumar@email.com"
},
"disability_info": {
"is_differently_abled": false,
"disability_type": "",
"udid_number": ""
},
"current_address": {
"line1": "Flat 402, Tower B, Green Heights",
"line2": "Sector 62, Noida",
"line3": "",
"city": "Noida",
"district": "Gautam Buddha Nagar",
"state": "09",
"pincode": "201301",
"country": "IN",
"address_type": "01",
"proof_type": "AADHAAR"
},
"permanent_address": {
"same_as_current": true
},
"poa": {
"document_type": "AADHAAR",
"document_number": "XXXX XXXX 5678",
"issue_date": "",
"expiry_date": ""
},
"kyc_verification_details": {
"verification_type": "DIGITAL_KYC",
"verification_date": "2026-02-13",
"verification_place": "Online"
},
"documents": [
{
"document_type": "PHOTO",
"file_name": "photo.jpg",
"file_content": "<BASE64_JPEG_MAX_1MB>",
"mime_type": "image/jpeg"
},
{
"document_type": "ADDRESS_PROOF",
"file_name": "aadhaar.jpg",
"file_content": "<BASE64_JPEG_MAX_1MB>",
"mime_type": "image/jpeg"
},
{
"document_type": "SIGNATURE",
"file_name": "signature.jpg",
"file_content": "<BASE64_JPEG_MAX_1MB>",
"mime_type": "image/jpeg"
}
],
"ids": [
{
"id_type": "PAN",
"id_number": "ABCDE1234F"
},
{
"id_type": "AADHAAR",
"id_number": "XXXX XXXX 5678"
}
],
"consent": true,
"consent_purpose": "CKYC record creation for stock broking account"
}
#Field GroupRequired FieldsNotes
1FI Infofi_code, branch_code, reference_idAssigned by CERSAI during registration
2Verifiername, designation, employee_code, place, dateMust be an authorized signatory
3Personalfirst_name, last_name, dob, gender, panLast name mandatory even if single-word name
4AddressAt least correspondence address (line1, city, state, pincode, country)Permanent address if different
5Contactmobile (mandatory), email (recommended)At least one contact method
6Disabilityis_differently_abled (Boolean)Mandatory container even if false
7DocumentsPhoto (mandatory), Address proof (mandatory)Base64, max 1MB each, JPEG/PNG
8IDsAt least PANAadhaar strongly recommended
9Verificationverification_type, verification_dateType from: CERTIFIED_COPIES / EKYC / OFFLINE_VERIFICATION / DIGITAL_KYC / E_DOCUMENT / VKYC
{
"decentroTxnId": "DTX-CKYC-UP-20260213-xxxx",
"status": "SUCCESS",
"responseCode": "S00000",
"message": "CKYC record submitted successfully",
"data": {
"ckycNumber": "50000098765432",
"referenceId": "CKYC_UPLOAD_20260213_001",
"submissionStatus": "ACCEPTED",
"submissionDate": "2026-02-13T14:30:00+05:30"
}
}
{
"decentroTxnId": "DTX-CKYC-UP-20260213-yyyy",
"status": "FAILURE",
"responseCode": "E00020",
"message": "CKYC record rejected",
"data": {
"referenceId": "CKYC_UPLOAD_20260213_001",
"submissionStatus": "REJECTED",
"rejectionReasons": [
"Photo quality below minimum resolution (300x300px)",
"Address proof document expired"
]
}
}
ReasonResolution
Photo quality below minimum resolutionRe-capture photo at minimum 300x300 px, clear face visible
Signature image unclearRe-capture with white background, dark ink
Address proof expiredRequest customer to provide valid address proof
PAN not verified / PAN inactiveCheck PAN status via V1 (PAN Verification) first
Name mismatch between PAN and submitted nameEnsure exact name match or provide supporting documents
Mandatory field missingValidate all mandatory fields before submission
Duplicate record existsPerform CKYC Search first to avoid duplicates
Invalid state/pincode combinationValidate against India Post pincode database
  • Immediate: Decentro returns a submission acknowledgment with reference ID
  • 4-5 working days: CERSAI processes the record and generates KIN
  • Notification: Decentro provides a webhook/callback for status updates, or poll using the reference ID
  • KIN available: Once accepted, the 14-digit KIN can be fetched and stored

When a customer’s data changes (address change, name change after marriage, mobile number change), submit a modification request to update the existing CKYC record.

Change TypeRe-verification Needed?Supporting Documents
Address changeNoNew address proof
Mobile / Email changeNoNone (self-declaration)
Name change (marriage)YesMarriage certificate + gazette notification
Name change (other)YesCourt order / gazette notification
DOB correctionYesBirth certificate / passport
Photo / Signature updateNoNew photo/signature
PAN correctionYesPAN card copy
  1. Retrieve existing CKYC record via Download
  2. Prepare modification payload with only changed fields + supporting documents
  3. Submit via POST /kyc/ckyc/update (or vendor-specific modify endpoint)
  4. CERSAI processes the modification (5-7 working days for re-verification cases)
  5. Updated record available for all FIs
  • Only the uploading FI or the customer’s current FI can modify the record
  • If the original upload was done by a bank and the customer is now opening a broking account, the broker uploads a fresh record (CERSAI handles dedup)
  • Modification requests with re-verification take longer (5-7 working days vs 2-3 for simple changes)

While the API operations above handle real-time, per-customer interactions with CKYC, high-volume scenarios — particularly the nightly batch after maker-checker approval — call for a bulk upload mechanism via SFTP.

For bulk uploads — typically used after maker-checker approval in the admin system for processing multiple records in a single batch.

CERSAI supports two batch formats:

JSON-Lines Format (recommended):

{"reference_id":"BATCH_001","fi_code":"SEBI_BROKER","individual_record":{...},"documents":[...]}
{"reference_id":"BATCH_002","fi_code":"SEBI_BROKER","individual_record":{...},"documents":[...]}
{"reference_id":"BATCH_003","fi_code":"SEBI_BROKER","individual_record":{...},"documents":[...]}

Each line is a self-contained JSON record matching the upload payload structure.

<FI_CODE>_<DATE>_<SEQUENCE>.<extension>
Examples:
SEBI_BROKER_20260213_001.jsonl
SEBI_BROKER_20260213_002.jsonl
ParameterValue
HostCERSAI-provided SFTP endpoint
Port22 (standard SFTP)
AuthenticationSSH key + FI credentials
Upload directory/upload/individual/
Response directory/response/individual/
Max file size50MB per file
Max records per file1000 records
1. Admin approves batch of KYC records (maker-checker complete)
|
2. System generates SFTP batch file (JSON-lines format)
|
3. File uploaded to CERSAI SFTP server
| Path: /upload/individual/<FI_CODE>_<DATE>_<SEQ>.jsonl
|
4. CERSAI processes file (T+1 to T+3 working days)
|
5. Response file generated in /response/individual/
| Filename: <FI_CODE>_<DATE>_<SEQ>_RESPONSE.jsonl
|
6. System polls SFTP for response file
|
7. Parse response: extract KIN for accepted records, log rejections
|
8. Update internal database with KIN and status per record
{"reference_id":"BATCH_001","status":"ACCEPTED","ckyc_number":"50000012345678","message":""}
{"reference_id":"BATCH_002","status":"REJECTED","ckyc_number":"","message":"Photo below minimum resolution"}
{"reference_id":"BATCH_003","status":"ACCEPTED","ckyc_number":"50000012345679","message":""}

The batch pipeline (defined in KYC Flow v2.0) uses SFTP batch for CKYC uploads:

Batch Pipeline Step 6: CKYC Upload
|--- Trigger: After maker-checker approval (Step 5)
|--- Input: All approved records pending CKYC upload
|--- Method: SFTP batch (primary) or API per-record (fallback)
|--- Frequency: Daily batch at 10 PM IST
|--- Monitoring: Response file polling every 4 hours from T+1

Decentro is our recommended primary vendor for CKYC integration because it abstracts away the complexity of direct CERSAI integration.

OperationEndpointSupported
SearchPOST /kyc/ckyc/searchYes
DownloadPOST /kyc/ckyc/downloadYes
Upload (Individual)POST /kyc/ckyc/uploadYes
Upload (Non-Individual)POST /kyc/ckyc/upload/non-individualYes
Modify/UpdatePOST /kyc/ckyc/updateYes
Bulk UploadVia API batching or SFTP passthroughLimited

API Docs: https://docs.decentro.tech/docs/kyc-and-onboarding-identities-ckyc-services

ParameterValue
Base URL (Production)https://in.decentro.tech/v2
Base URL (Sandbox)https://in.staging.decentro.tech/v2
AuthenticationAPI Key + Secret in headers (client_id, client_secret, module_secret)
Rate Limit100 requests/minute (default, negotiable)
Response FormatJSON
Timeout30 seconds (recommended client-side)
Webhook SupportYes — for async status updates on uploads
AspectVia DecentroDirect CERSAI
Setup time1-2 weeks3-4 weeks
PrerequisitesDecentro account, API keyFI code registration, digital signature certificate, CKYC public key, keystore configuration
API formatSimple REST/JSONComplex — XML/SOAP for some operations, specific encryption requirements
AuthenticationAPI key + secretDigital signature per request + FI credentials
SandboxYes (staging environment)Limited test environment
MonitoringDecentro dashboard + webhooksManual log review
Cost per transactionSlight markup (Rs. 1-3 over CERSAI)Base CERSAI pricing
Cost at scaleHigher at 10K+ records/monthLower at scale
SupportDecentro support team + Slack channelCERSAI helpdesk (slower response)
Recommended forStartups, mid-size brokers, quick go-to-marketLarge brokers with dedicated integration team, cost sensitivity at scale

Use Decentro for initial launch and API-based real-time operations (search, download, individual upload). Consider direct CERSAI SFTP for batch uploads once volumes exceed 5,000 records/month to optimize costs.

Digio also offers CKYC integration but with a different setup:

ParameterValue
API Docshttps://documentation.digio.in/digikyc/ckyc/api_integration/
RequirementsFI code, CKYC public key, keystore configuration
RuntimeJava 17 or Docker
SDKhttps://github.com/digio-tech/gateway_kyc_lite
Setup time2-3 weeks
Best forIf already using Digio for KRA (single vendor)

With both the API and batch pathways for CKYC covered, this section addresses the orchestration challenge: how to coordinate CKYC uploads alongside the mandatory KRA upload so that neither system becomes a bottleneck for account activation.

Since August 2024, every new KYC record must be uploaded to both:

  1. KRA (via Digio — V4 integration) — for securities market KYC status
  2. CKYC (via Decentro — V5 integration) — for cross-sector KYC registry
Customer KYC Complete + Maker-Checker Approved
|
+---> [Step 1] KRA Upload (via Digio) -----> BLOCKING for trading
| |
| +---> KRA Status: "KYC Registered" / "On Hold" / "Rejected"
|
+---> [Step 2] CKYC Upload (via Decentro) -> NON-BLOCKING for trading
| (runs in parallel)
+---> CKYC Status: "Accepted" / "Rejected" / "Pending"

KRA first because:

  • KRA status directly determines whether the client can trade
  • KRA “Registered” or “Validated” = trading allowed
  • KRA “On Hold” / “Rejected” = trading blocked
  • KRA processing is typically faster (1-2 working days vs 4-5 for CKYC)

CKYC in parallel because:

  • CKYC does not impact trading permission
  • CKYC is purely for regulatory compliance and cross-sector data sharing
  • Failure in CKYC upload should not delay account activation
KRA StatusCKYC StatusAction
RegisteredAcceptedAll good — no action needed
RegisteredRejectedClient can trade. Retry CKYC with corrected data. Log for compliance.
RegisteredPendingClient can trade. Monitor CKYC status asynchronously.
On HoldAcceptedTrading blocked. Resolve KRA issues (document upload, address proof).
On HoldRejectedTrading blocked. Resolve both KRA and CKYC issues.
RejectedAcceptedTrading blocked. Re-submit KRA with corrected data.
RejectedRejectedTrading blocked. Review all KYC data for errors, re-submit both.

For CKYC upload failures:

  1. Immediate retry (1x) — for transient errors (timeout, server error)
  2. Delayed retry (after 1 hour) — for rate limiting or temporary unavailability
  3. Manual review queue — after 3 failed attempts, route to compliance team
  4. Daily batch retry — unresolved failures included in nightly batch upload

The following 6 attributes must match across KRA and CKYC records:

AttributeNotes
NameExact match (or fuzzy match >95%)
PANMust be identical
AddressCorrespondence address match
Mobile10-digit number match
EmailCase-insensitive match
Income RangeSame range code

Discrepancies between KRA and CKYC uploads for the same client will trigger compliance flags. Ensure the same data source is used for both uploads.


CKYC supports non-individual entities with a different template and additional requirements.

CodeEntity TypeKey Additional Fields
01IndividualStandard fields (covered above)
02Partnership FirmFirm PAN, registration number, all partner details
03CompanyCIN, date of incorporation, registered office, directors, UBO
04TrustTrust deed reference, trustee details, settler details
05HUFHUF PAN, Karta details, coparcener information
06Government EntityEntity code, department details
07SocietyRegistration number, governing body members
08AOP/BOIFormation document, member details
09LLPLLPIN, LLP agreement reference, designated partner details
10OthersCase-by-case basis

Additional mandatory fields:

  • CIN (Corporate Identification Number) from MCA
  • Date of Incorporation
  • Registered office address
  • Director details (name, DIN, PAN, address) for all directors
  • Authorized signatory details (name, designation, PAN, specimen signature)
  • Board Resolution authorizing account opening (upload as document)
  • UBO (Ultimate Beneficial Owner) declaration — individuals holding >10% stake or exercising control

UBO Requirements (per PMLA/SEBI norms):

  • Full KYC of each UBO (name, PAN, address, DOB, photo, signature)
  • Ownership chain tracing to natural person(s)
  • Declaration of all persons with >10% voting rights / capital

Additional mandatory fields:

  • HUF PAN (separate from Karta’s individual PAN)
  • Karta details (full individual KYC — name, PAN, DOB, address, photo)
  • Coparcener information (name, relationship, PAN for each)
  • HUF declaration document upload

Note: Karta acts as the primary contact and decision-maker. Karta must also have individual CKYC.

Additional mandatory fields:

  • Firm PAN
  • Firm registration number (if registered)
  • Partnership deed reference
  • All partner information (name, PAN, DOB, address, capital share %)
  • Authorized partner designated for correspondence
  • At least one partner must complete individual CKYC

NRI accounts use the individual template (Code: 01) but with additional requirements:

RequirementDetails
Overseas addressMandatory — correspondence address outside India
Indian addressRequired for communication within India (optional but recommended)
Tax residencyFATCA/CRS self-certification mandatory
Tax IDForeign TIN (Tax Identification Number) in country of residence
PassportCopy mandatory (as identity + address proof abroad)
Country of residenceISO country code
NRE/NRO bank accountBank verification on NRE/NRO account
PIO/OCI statusIf applicable, OCI/PIO card copy

Trust (Constitution Code: 04) / LLP (Constitution Code: 09)

Section titled “Trust (Constitution Code: 04) / LLP (Constitution Code: 09)”

Trust additional fields:

  • Trust deed registration number and date
  • Settler details (individual KYC)
  • Trustee details (individual KYC for each trustee)
  • Beneficiary information (if determinable)
  • Purpose of trust

LLP additional fields:

  • LLPIN (LLP Identification Number) from MCA
  • LLP agreement date and registration details
  • Designated Partner details (name, DPIN, PAN, KYC)
  • Non-designated Partner details
  • Authorized signatory

KIN: 50000012345678
| |
14 digits total
Assigned by CERSAI
Unique per natural person
  • Length: Exactly 14 numeric digits
  • Assignment: By CERSAI upon successful CKYC upload
  • Uniqueness: One KIN per person, deduplicated by PAN + DOB + biometrics
  • Permanence: KIN does not change even when the CKYC record is updated or modified

The KIN must be stored in the broker’s system at multiple levels:

SystemFieldPurpose
Customer masterckyc_number (Field A25)Primary reference for all CKYC operations
KRA upload recordOptional field in KRA payloadCross-reference between KRA and CKYC
Depository (CDSL/NSDL)BO account recordCDSL/NSDL may request KIN for records
Exchange UCCUCC registration dataNSE/BSE may include in UCC records
CKYC submission logckyc_kin_generated (Field T06)Audit trail for CKYC submission
ContextFormatExampleSource
CKYC Search response (post Jan 2025)Masked$XXXX1234$Search API
CKYC Download responseFull (unmasked)50000012345678Download API
Internal databaseFull (unmasked)50000012345678Stored after download
Display to customerMaskedXXXXXXXXXX5678UI display
Regulatory reportsFull50000012345678Compliance submissions
1. Customer has no CKYC record
|--- KIN: None
|
2. Broker uploads CKYC record
|--- Status: Submitted (no KIN yet)
|
3. CERSAI processes and accepts record (T+4-5 days)
|--- KIN assigned: 50000012345678
|--- Status: Accepted
|
4. Broker fetches KIN from response/webhook
|--- Store KIN in customer master (Field A25)
|
5. Customer opens account at another FI (e.g., insurance)
|--- Insurance company searches CKYC by PAN
|--- Finds existing record with KIN 50000012345678
|--- Downloads full record -- no re-KYC needed
|
6. Customer updates address at bank
|--- Bank submits CKYC modification
|--- Same KIN, updated address
|--- Broker can re-download to get latest data

The specifications above describe the happy path, but production systems inevitably encounter scenarios that require special handling. The cases below capture the most common real-world complications and the recommended resolution for each.

8.1 Customer Already Has CKYC from Another FI

Section titled “8.1 Customer Already Has CKYC from Another FI”

Scenario: Customer completed KYC at a bank. Now opening a broking account.

Flow:

  1. CKYC Search by PAN returns existing record (from bank upload)
  2. CKYC Download retrieves full record with photo, address, etc.
  3. Pre-fill KYC form with downloaded data
  4. Customer reviews and confirms (or updates outdated fields)
  5. Broker captures Part II data (trading preferences, nominees, segments)
  6. No fresh CKYC upload needed — record already exists
  7. But broker still uploads to KRA (KRA is separate from CKYC)

Exception: If the existing CKYC record is outdated (e.g., old address, old photo), the broker may submit a CKYC modification with updated data and fresh documents.

8.2 Data Mismatch Between CKYC and Customer-Provided Data

Section titled “8.2 Data Mismatch Between CKYC and Customer-Provided Data”

Scenario: CKYC record says “RAKESH KUMAR” but PAN card says “RAKESH KUMAR SHARMA”.

Resolution:

  1. Flag discrepancy in the system with specific mismatch details
  2. Show both values to the customer in the form UI
  3. Customer provides supporting document (gazette notification, marriage certificate, court order)
  4. Use PAN name as authoritative (PAN is the primary ID for securities market)
  5. Submit CKYC modification to correct the name if needed
  6. Proceed with KYC using PAN name; do not block onboarding for CKYC name mismatch alone

Scenario: Customer was uploaded to CKYC by two different banks with slightly different data.

Resolution:

  • CERSAI handles deduplication internally using PAN + DOB + biometric matching
  • Search returns the primary/latest record
  • If duplicates exist, CERSAI merges them (retaining the most recent data)
  • The broker always gets a single record from search/download
  • No action needed from the broker side

Scenario: CERSAI/Protean systems are unavailable during onboarding.

Resolution:

  1. CKYC Search failure should not block onboarding — CKYC is non-blocking for trading
  2. Log the failure and proceed with KRA upload (which is the trading blocker)
  3. Queue the CKYC upload for retry when system is available
  4. Retry strategy: 3 retries with exponential backoff (1 min, 5 min, 30 min)
  5. If still unavailable after retries, add to daily batch upload queue
  6. CKYC upload deadline: within 10 working days of account opening (SEBI norm)

Scenario: Opening a demat account for a minor (allowed with guardian).

Flow:

  1. Minor’s CKYC record created with guardian’s details
  2. Guardian’s individual CKYC must also exist
  3. Minor’s record includes: minor’s name, DOB, guardian name, guardian relationship, guardian PAN
  4. When minor turns 18: fresh CKYC record as an independent individual (new KIN may be assigned)
  5. Old minor record linked to new adult record via PAN

Scenario: NRI customer with overseas address and foreign tax residency.

Additional steps:

  1. CKYC Search may not find existing record (NRI may not have Indian CKYC)
  2. Upload must include overseas address as correspondence address
  3. FATCA/CRS self-certification mandatory (country of tax residence, TIN)
  4. Passport copy mandatory as identity proof
  5. Processing may take longer (7-10 working days) due to additional verification

Scenario: KRA upload succeeds immediately but CKYC upload fails.

Impact: None on trading. The client can trade. But:

  1. Non-compliance risk if CKYC not uploaded within deadline
  2. Add to CKYC retry queue
  3. Compliance dashboard should flag “CKYC Pending” accounts
  4. Escalate if not resolved within 10 working days

Scenario: CKYC upload fails because PAN is inactive/deactivated.

Resolution:

  • This should be caught earlier in the flow (V1: PAN Verification — status E/F/X/D/N)
  • PAN must be active (status “E” = Existing and valid) before CKYC upload
  • If PAN inactive: onboarding blocked at PAN verification stage itself, before CKYC

Because CKYC centralizes sensitive personal data across all financial sectors, a robust privacy and consent framework governs every interaction with the registry. This section outlines the key data handling obligations that the broker’s implementation must satisfy.

  • Aadhaar is stored in masked form within CKYC records (last 4 digits visible)
  • Full Aadhaar number is never stored or transmitted in CKYC APIs
  • Aadhaar masking format: XXXX XXXX 5678
  • Aadhaar as address proof: only masked version submitted to CKYC
Consent TypeWhen RequiredFormat
CKYC Search consentBefore every searchAPI parameter (consent: true, consent_purpose: "...")
CKYC Download consentBefore downloading full recordAPI parameter
CKYC Upload consentPart of KYC form consent (Section P: consent_kyc_data_sharing)Signed declaration
Data sharing consentImplicit — CKYC is a pull modelCustomer acknowledged at KYC time

CKYC operates on a pull model:

  • Customer’s data is uploaded by the FI that performed KYC
  • Other FIs can search for the record only when the customer approaches them for a new relationship
  • The customer implicitly consents when they provide PAN/Aadhaar for KYC at a new FI
  • No FI can “push” or proactively access another FI’s customer records
  • Each search/download is logged by CERSAI for audit
  • CKYC records are permanent — there is no auto-deletion
  • Records persist even after the customer closes all FI relationships
  • Modification updates the existing record (no versioning visible externally)
  • CERSAI maintains internal audit trail of all modifications
ObligationDetails
Store KIN securelyEncrypted at rest in customer master database
Mask KIN in UIShow only last 4 digits to customer-facing staff
Log all CKYC API callsAudit trail with timestamp, reference ID, outcome
Do not cache full CKYC recordsDownload fresh when needed; do not store downloaded images long-term
Purge downloaded imagesAfter extracting and storing relevant data, delete base64 images from API response logs

OperationVia DecentroVia DigioDirect CERSAINotes
SearchRs. 3-5Rs. 3-5Rs. 1-2Per query
DownloadRs. 5-8Rs. 5-8Rs. 3-5Per download (includes images)
Upload (Individual)Rs. 8-12Rs. 8-10Rs. 5-7Per record
Upload (Non-Individual)Rs. 10-15Rs. 10-15Rs. 7-10More complex validation
Modify/UpdateRs. 5-8Rs. 5-8Rs. 3-5Per modification
Batch Upload (SFTP)N/A (API only)N/ARs. 3-5 per recordVolume discount at scale

Scenario 1: New customer (no existing CKYC)

CKYC Search (no result) : Rs. 3-5
CKYC Upload (after KYC) : Rs. 8-12
----------
Total : Rs. 11-17

Scenario 2: Returning customer (existing CKYC)

CKYC Search (found) : Rs. 3-5
CKYC Download (pre-fill) : Rs. 5-8
----------
Total : Rs. 8-13
(No upload needed)
Monthly VolumeDiscount TierEffective Rate (Search)
< 1,000StandardRs. 5
1,000 - 5,000Tier 1Rs. 4
5,000 - 20,000Tier 2Rs. 3
> 20,000CustomNegotiated
ItemCostFrequency
FI Code registrationRs. 25,000One-time
Digital Signature CertificateRs. 5,000 - 10,000Annual renewal
Annual maintenanceRs. 10,000Annual
Integration setupInternal engineering costOne-time

DateChangeImpactReference
Jun 6, 2024SEBI mandates dual KRA + CKYC uploadAll intermediaries must upload to both KRA and CKYCSEBI/HO/MIRSD/SECFATF/P/CIR/2024/79
Aug 1, 2024Dual upload effective dateCompliance deadline for all new accountsSame circular
Jan 2025CKYC Search returns masked KINDownload required for full 14-digit KINCERSAI system update
Ongoing (2025-2026)CERSAI system scalability upgradesImproved uptime and response times expectedCERSAI internal
Q1 2026CKYC integration with e-KYC Setu (NPCI)Future: Aadhaar eKYC data may flow directly to CKYCUnder discussion
  • CKYC for all existing customers: SEBI may mandate retrospective CKYC upload for existing clients (currently only new accounts required)
  • CKYC interop with AA framework: Potential integration with Account Aggregator for data sharing
  • Real-time KIN generation: CERSAI working on reducing processing time from 4-5 days to real-time or T+1

DocumentReferenceDate
SEBI KYC Master CircularSEBI/HO/MIRSD/MIRSD-SEC-2/P/CIR/2023/168Oct 12, 2023
SEBI KRA Upload to CKYCRRSEBI/HO/MIRSD/SECFATF/P/CIR/2024/79Jun 6, 2024
RBI Master Direction on KYCRBI/2016-17/49Updated periodically
PMLA Rules (UBO, CDD)Prevention of Money Laundering Act, 2002Amended 2023
ResourceURL
CERSAI CKYC Portalhttps://ckyc.cersai.org.in
Protean CKYC (Direct FI Registration)https://ckyc.protean-tech.in
Decentro CKYC API Docshttps://docs.decentro.tech/docs/kyc-and-onboarding-identities-ckyc-services
Decentro CKYC Search Referencehttps://docs.decentro.tech/reference/kyc-and-onboarding-api-reference-identities-ckyc-services-search
Decentro CKYC Download Referencehttps://docs.decentro.tech/reference/kyc-and-onboarding-api-reference-identities-ckyc-services-download
Decentro CKYC Upload Referencehttps://docs.decentro.tech/reference/kyc-and-onboarding-api-reference-identities-ckyc-services-upload-individuals
Digio CKYC Docshttps://documentation.digio.in/digikyc/ckyc/api_integration/
Digio CKYC SDK (GitHub)https://github.com/digio-tech/gateway_kyc_lite
ArtifactSectionRelevance
Master DatasetSection A (Fields A25, A29)CKYC number field, disability flag
Master DatasetSection T (Fields T01-T12)CKYC submission data fields
Master DatasetSection R5 (Fields R36-R42)CKYC search/download result fields
Master DatasetAppendix A7CKYC constitution type codes
Vendor IntegrationsSection 7 (V5)Original CKYC vendor research
KYC FlowSteps 4, 21, Batch Pipeline Step 6CKYC search in onboarding, CKYC upload in batch

  • Register as Financial Institution (FI) with CERSAI (or use Decentro as proxy)
  • Obtain CERSAI FI code and digital certificate (if direct integration)
  • Set up Decentro CKYC sandbox credentials (if aggregator path)
  • Configure SFTP access for batch upload (if direct integration)
  • Obtain UAT environment access
  • Implement CKYC Search by PAN (via Decentro API)
  • Handle masked CKYC number in search response (Jan 2025 change)
  • Implement CKYC Download (full record with unmasked KIN)
  • Implement CKYC Upload for individual customers (50+ fields)
  • Implement CKYC Upload field mapping from Master Dataset
  • Build SFTP batch upload pipeline (for bulk uploads)
  • Implement dual upload flow (KRA + CKYC in parallel)
  • Build CKYC record parser (XML/JSON response → internal model)
  • Implement KIN storage and tracking in customer record
  • Build prefill logic: CKYC Download → onboarding form fields
  • Handle CKYC Upload validation errors and rejection codes
  • Implement retry logic for CERSAI downtime
  • Test: CKYC Search — existing record found (masked KIN)
  • Test: CKYC Search — no record found
  • Test: CKYC Download — full record retrieval
  • Test: CKYC Upload — new individual record (all mandatory fields)
  • Test: CKYC Upload — validation error handling
  • Test: SFTP batch upload — multiple records
  • Test: Dual upload — KRA + CKYC parallel submission
  • Test: Prefill flow — CKYC data populates onboarding form
  • Test: Edge cases — CERSAI timeout, duplicate PAN, name mismatch
  • Test: Non-individual upload (Corporate/HUF) if applicable
  • Switch from sandbox to production credentials
  • Deploy CKYC integration to production
  • Verify first live CKYC Search + Download
  • Verify first live CKYC Upload (confirm KIN generation)
  • Set up monitoring: success rates, latency, rejection tracking
  • Set up daily reconciliation of CKYC upload status
  • Document runbook for CERSAI downtime and common rejections | vendors/identity/KRA.md | (Planned) | KRA integration — dual upload counterpart |

Appendix A: Field Mapping — CKYC Upload to Master Dataset

Section titled “Appendix A: Field Mapping — CKYC Upload to Master Dataset”

Mapping between the CKYC upload payload and our internal Master Dataset fields:

CKYC Upload FieldMaster Dataset FieldSection
fi_codeckyc_fi_code (T01)T
branch_codeckyc_branch_code (T02)T
reference_idckyc_reference_id (T03)T
first_namefirst_name (A02)A
last_namelast_name (A04)A
dobdate_of_birth (A06)A
gendergender (A07)A
panpan_number (A12)A
mobilemobile_number (A13)A
emailemail_address (A14)A
occupation_typeoccupation (A18)A
is_differently_abledis_differently_abled (A29)A
address_line1corr_address_line1 (B01)B
citycorr_city (B04)B
statecorr_state (B06)B
pincodecorr_pincode (B07)B
verification_typeckyc_document_submission_type (T09)T
verifier_nameckyc_verifier_name (T10)T
StatusCodeMeaningAction
SubmittedSURecord submitted to CERSAI, pending processingWait for processing (4-5 working days)
AcceptedACRecord accepted, KIN generatedStore KIN, mark CKYC complete
RejectedRJRecord rejected with reasonsFix issues, re-submit
Under ProcessUPRecord being processed by CERSAINo action, wait
Modification PendingMPModification submitted, pending approvalWait (5-7 working days for re-verification)
CodeTypeWhen Used
CERTIFIED_COPIESPhysical document copies certified by authorized personIn-branch KYC
EKYCAadhaar-based e-KYC (OTP or biometric)Aadhaar OTP verification
OFFLINE_VERIFICATIONOffline Aadhaar XML or DigiLockerDigiLocker-based KYC
DIGITAL_KYCGeo-tagged photo + OVD verificationDigital KYC (RE visit)
E_DOCUMENTElectronically fetched documents (DigiLocker, e-PAN)Document pull via APIs
VKYCVideo KYC per RBI/SEBI normsVideo call verification