This is the single most comprehensive reference in the entire documentation set. It defines every field the KYC system captures, stores, or generates — roughly 454 fields across 30 sections, covering everything from the customer’s PAN (Permanent Account Number) to the audit trail of every modification made to their record. You will not read this cover-to-cover, but you will come back to it regularly when building forms, writing validation logic, debugging field-mapping issues, or answering compliance questions about where a particular piece of data comes from and why it is required.
How to use this page
Use your browser’s search (Ctrl+F) to find a specific field name like pan_verify_status or a section letter like “Section G.” Each field has a unique identifier (e.g., A01, G12) that is referenced throughout the codebase and in API mapping documents.
SEBI (Securities and Exchange Board of India) mandates that KYC is split into two parts. This is not an implementation choice — it is a regulatory requirement. Part I is standardized across all intermediaries (brokers, mutual funds, insurance), while Part II is specific to each intermediary’s line of business.
Part Name Purpose Template Part I KYC Form / CIP (Customer Identification Procedure) Basic client identification - standardized across all SEBI intermediaries CERSAI prescribed template Part II CDD (Customer Due Diligence) Activity-specific information for the intermediary (trading prefs, segments, risk) Intermediary-designed
These are all the external systems our KYC application communicates with. You will see their abbreviations throughout this document and the codebase.
System Entity Purpose KRA CVL/NDML/DOTEX/CAMS/KFintech Securities-market KYC registry (SEBI regulated) CKYC (CKYCR) CERSAI / Protean Cross-sector KYC registry (RBI/SEBI/IRDAI) PAN Verification NSDL/Protean (ITD authorized) Identity & PAN-Aadhaar linkage check DigiLocker MeitY / UIDAI Consent-based document fetch (Aadhaar, PAN, DL) e-KYC Setu NPCI Aadhaar e-KYC without disclosing Aadhaar number Bank Verification Penny Drop / UPI Account ownership verification e-Sign UIDAI / CCA Aadhaar OTP-based digital signature NSE/BSE/MCX Exchanges UCC registration for trading CDSL/NSDL Depositories BO/Demat account creation
This is the high-level decision tree that determines how much data the system needs to capture from the customer. If a KRA (KYC Registration Agency) record already exists for their PAN, much of the form is prefilled. If neither KRA nor CKYC (Central KYC) has a record, the customer goes through the full capture flow.
Client Initiates -> PAN Lookup in KRA -> KRA Found?
-> Yes: KRA Fetch + CKYC Search -> Compare & Prefill -> Capture Delta
-> No: CKYC Search -> CKYC Found?
-> Yes: Download & Prefill -> Capture Delta
-> No: Fresh KYC Capture (Full)
-> PAN Verification (Protean)
-> Aadhaar/DigiLocker Consent
-> Bank Account Verification (Penny Drop)
-> Capture Remaining Data (Segments, Nominees, FATCA, DDPI)
-> Register UCC on NSE/BSE/MCX
-> Open BO Account on CDSL/NSDL
Source : CERSAI KYC Template (Part I) + KRA Fields
Required By : KRA, CKYC, NSE, BSE, MCX, CDSL, NSDL
This is the foundational identity section. Every downstream system — exchanges, depositories, KRA, CKYC — needs these fields. The name fields (A05-A07) must match the PAN card exactly; even minor spelling differences will cause KRA rejections.
# Field Name Data Type Size Mandatory Validation Source/Notes A01 panString 10 Y [A-Z]{5}[0-9]{4}[A-Z]Primary identifier. 4th char: P=Individual A02 pan_exemptBoolean 1 N Y/N Only for specific govt categories A03 pan_exempt_categoryString 2 Cond. Code table Required if pan_exempt=Y A04 prefixString 5 N Mr/Mrs/Ms/Dr Name prefix/salutation A05 first_nameString 70 Y Alpha + spaces Must match PAN card A06 middle_nameString 70 N Alpha + spaces A07 last_nameString 70 Y Alpha + spaces Must match PAN card A08 full_nameString 200 Y Derived Concatenation of A05+A06+A07 A09 maiden_prefixString 5 N A10 maiden_first_nameString 70 N If name changed after marriage A11 maiden_middle_nameString 70 N A12 maiden_last_nameString 70 N A13 father_spouse_flagString 1 Y F=Father, S=Spouse Indicates which relation A14 father_spouse_prefixString 5 Y Mr/Mrs/Ms A15 father_spouse_nameString 70 Y Full name of father or spouse A16 mother_prefixString 5 N A17 mother_nameString 70 N Mother’s full name A18 genderString 1 Y M/F/T Male/Female/Transgender A19 marital_statusString 1 N S/M/O Single/Married/Others A20 date_of_birthDate 10 Y DD/MM/YYYY Must match PAN. Age >= 18 A21 nationalityString 2 Y ISO country code IN=Indian A22 residential_statusString 2 Y RI/NRI/FN/PIO Resident Indian / NRI / Foreign National / PIO A23 aadhaar_numberString 12 N 12 digits, Verhoeff algo Masked in storage: XXXX-XXXX-1234 A24 aadhaar_reference_numberString 28 N Virtual ID or reference from DigiLocker A25 ckyc_numberString 14 N 14 digits Central KYC Identification Number (KIN) A26 dinString 8 N 8 digits Director Identification Number (if applicable) A27 place_of_birthString 50 N City/Town of birth A28 country_of_birthString 2 N ISO country code Required for FATCA A29 is_differently_abledBoolean 1 Y Y/N CKYC mandatory field A30 disability_typeString 2 Cond. Code table Required if A29=Y A31 disability_percentageNumber 3 Cond. 0-100 Required if A29=Y A32 udid_numberString 18 Cond. [A-Z]{2}\d{16}Unique Disability ID
Source : CERSAI KYC Template + KRA Fields
Required By : KRA, CKYC, NSE, BSE, CDSL, NSDL
Address data typically comes from DigiLocker (Aadhaar XML). If the permanent address is the same as the correspondence address, the customer sets perm_same_as_corr to Y and the permanent fields are auto-copied.
# Field Name Data Type Size Mandatory Validation B01 corr_address_line1String 100 Y B02 corr_address_line2String 100 N B03 corr_address_line3String 100 N B04 corr_cityString 50 Y B05 corr_districtString 50 N B06 corr_stateString 30 Y State code table B07 corr_pincodeString 6 Y 6 digits B08 corr_countryString 30 Y Default: India B09 corr_address_proof_typeString 2 Y POA code table
# Field Name Data Type Size Mandatory Validation B10 perm_same_as_corrBoolean 1 Y Y/N B11 perm_address_line1String 100 Cond. Required if B10=N B12 perm_address_line2String 100 N B13 perm_address_line3String 100 N B14 perm_cityString 50 Cond. B15 perm_districtString 50 N B16 perm_stateString 30 Cond. B17 perm_pincodeString 6 Cond. B18 perm_countryString 30 Cond. B19 perm_address_proof_typeString 2 Cond.
# Field Name Data Type Size Mandatory Validation C01 mobile_isd_codeString 5 Y Default: +91 C02 mobile_numberString 15 Y 10 digits for India, starts with 6/7/8/9 C03 alternate_mobileString 15 N C04 emailString 100 Y RFC 5322 format C05 alternate_emailString 100 N C06 phone_std_codeString 5 N Landline STD C07 phone_numberString 15 N Landline number C08 fax_std_codeString 5 N C09 fax_numberString 15 N
Officially Valid Documents (OVDs) per PMLA (Prevention of Money Laundering Act) Rules
These are the Proof of Identity documents accepted under Indian law. In practice, almost all customers use Aadhaar (via DigiLocker) or PAN as their POI (Proof of Identity).
# Field Name Data Type Size Mandatory Validation D01 poi_typeString 2 Y POI code table (see Appendix A) D02 poi_document_numberString 30 Y Format per document type D03 poi_expiry_dateDate 10 Cond. DD/MM/YYYY - for Passport, DL D04 poi_issue_dateDate 10 N D05 poi_issuing_authorityString 50 N D06 poi_verified_from_issuerBoolean 1 Y Y/N D07 poi_document_imageBLOB - Y JPEG/PNG/PDF, max 2MB
Code Document ID Format A Passport [A-Z]\d{7}B Voter ID Card [A-Z]{3}\d{7}C Driving License State-specific format D PAN Card (with photo) [A-Z]{5}\d{4}[A-Z]E Aadhaar / UID 12 digits (Verhoeff) F NREGA Job Card State-specific G NPR Letter - Z Others (Govt/Defense ID) -
POA (Proof of Address) documents have validity constraints. A utility bill older than two months is not acceptable. You will encounter these constraints in the document upload validation logic.
# Field Name Data Type Size Mandatory Validation E01 poa_typeString 2 Y POA code table E02 poa_document_numberString 30 Y E03 poa_expiry_dateDate 10 Cond. For Passport, DL E04 poa_issue_dateDate 10 N E05 poa_verified_from_issuerBoolean 1 Y E06 poa_address_same_as_corrBoolean 1 Y Y/N E07 poa_document_imageBLOB - Y JPEG/PNG/PDF, max 2MB
Code Document Validity Constraint A Passport Valid / not expired B Voter ID Card No expiry C Driving License Valid / not expired D Aadhaar / UID No expiry E Utility Bill Not older than 2 months F Bank Statement Not older than 3 months G Property/Municipal Tax Receipt Current year H Govt/Defense ID Card Valid Z Others Case-specific
Required By : PMLA/AML compliance, Segment activation, KRA (optional), Exchange registration
The financial profile drives two critical decisions: which trading segments the customer can access (F&O and Commodity require income proof), and what risk category they fall into for AML (Anti-Money Laundering) screening.
# Field Name Data Type Size Mandatory Validation Notes F01 occupationString 2 Y Occupation code table See Appendix A F02 occupation_othersString 50 Cond. If F01=99 (Others) F03 gross_annual_income_rangeString 2 Y Income range code See Appendix A F04 declared_annual_incomeDecimal 15,2 N INR Exact amount if provided F05 net_worthDecimal 15,2 N INR Lakhs F06 net_worth_dateDate 10 Cond. DD/MM/YYYY Required if F05 provided. Must be < 1 year old F07 source_of_wealthString 100 N Salary/Business/Inheritance/etc F08 income_proof_typeString 2 Cond. Required for F&O/Commodity segments F09 income_proof_documentBLOB - Cond. PDF/JPEG, max 5MB F10 income_proof_financial_yearString 9 Cond. YYYY-YYYY e.g., 2025-2026
Code Document Key Field Extracted BS Bank Statement (6 months) Average monthly balance SS Salary Slip (last 3 months) Gross monthly salary IT ITR Acknowledgement Gross total income F16 Form 16 Annual salary NW Net Worth Certificate (CA certified) Net worth amount, CA details DH Demat Holding Statement Holding value FD Fixed Deposit Receipt FD value
Code Range (INR) Proposed New Ranges (SEBI Jan 2026) 01 Below 1 Lakh 0 - 5 Lakhs 02 1 - 5 Lakhs 5 - 10 Lakhs 03 5 - 10 Lakhs 10 - 50 Lakhs 04 10 - 25 Lakhs 50 Lakhs - 1 Crore 05 25 Lakhs - 1 Crore 1 - 2 Crore 06 Above 1 Crore Above 2 Crore
Caution
SEBI proposed revised income range codes in January 2026. When these are finalized, every system that stores or transmits income range codes — KRA, exchanges, back-office — will need to be updated simultaneously. Watch for the final circular.
Required By : Broker (pay-in/pay-out), Exchange (settlement), SEBI regulation
Validation : Penny Drop verification mandatory for primary account
Multiple Accounts : Up to 5 bank accounts allowed
The bank section is where many onboarding failures occur. The penny drop verification (a Rs.1 IMPS credit to confirm the account exists and the name matches) is a blocking step. If the name returned by the bank does not match the PAN name above a configurable threshold, the application cannot proceed.
# Field Name Data Type Size Mandatory Validation G01 bank_account_seqNumber 1 Y 1-5 G02 is_primaryBoolean 1 Y Exactly one must be Y G03 bank_nameString 100 Y G04 branch_nameString 100 Y G05 account_numberString 18 Y Alphanumeric G06 ifsc_codeString 11 Y [A-Z]{4}0[A-Z0-9]{6}G07 micr_codeString 9 N 9 digits G08 account_typeString 2 Y SB=Savings, CA=Current, NRE, NRO G09 account_holder_nameString 100 Y Must match PAN name G10 bank_proof_typeString 2 Y CC=Cancelled Cheque, BS=Bank Statement G11 bank_proof_documentBLOB - Y JPEG/PNG/PDF G12 penny_drop_statusString 2 Y S=Success, F=Failed, P=Pending G13 penny_drop_refString 30 Cond. UTR from penny drop G14 penny_drop_name_returnedString 100 Cond. Name returned by bank G15 penny_drop_name_match_scoreNumber 3 Cond. 0-100 percentage G16 penny_drop_dateDateTime - Cond. ISO 8601
Required By : CDSL/NSDL (BO account), Broker (settlement)
The BO (Beneficiary Owner) ID format differs between the two depositories. CDSL uses a 16-digit numeric ID, while NSDL uses “IN” followed by 14 alphanumeric characters. You will see this distinction in every depository-related integration.
# Field Name Data Type Size Mandatory Validation Notes H01 depositoryString 4 Y CDSL/NSDL H02 dp_nameString 100 Y Depository Participant name H03 dp_idString 8 Y CDSL: 8 digits, NSDL: IN+6 digits H04 client_idString 8 Y 8 digits H05 bo_idString 16 Y CDSL: 16 digits, NSDL: IN+14 chars Derived: dp_id + client_id H06 account_typeString 2 Y IN=Individual, JO=Joint, MN=Minor H07 account_statusString 2 Y AC=Active, FR=Frozen, CL=Closed H08 bsda_flagBoolean 1 N Y/N Basic Services Demat Account H09 opening_dateDate 10 Y DD/MM/YYYY
Regulatory Basis : SEBI circular Jan 10, 2025 (up to 10 nominees), SEBI circular Jun 10, 2024 (simplified to 3 mandatory fields)
Required By : CDSL/NSDL demat, Broker trading account
Nomination rules changed significantly in 2024-2025. Previously, nomination was optional. Now, customers must either nominate at least one person or explicitly opt out — and opting out requires video verification.
# Field Name Data Type Size Mandatory Validation I01 nomination_optedBoolean 1 Y Y/N I02 opt_out_declarationBoolean 1 Cond. Required if I01=N. Needs video verification I03 number_of_nomineesNumber 2 Cond. 1-10, required if I01=Y
# Field Name Data Type Size Mandatory Validation I04 nominee_seqNumber 2 Y 1-10 I05 nominee_nameString 100 Y I06 nominee_relationshipString 2 Y Relationship code table I07 nominee_dobDate 10 Y DD/MM/YYYY I08 nominee_percentageDecimal 5,2 Y 0.01-100.00; all must sum to 100 I09 nominee_panString 10 Cond. Any one unique ID mandatory I10 nominee_aadhaarString 12 Cond. I11 nominee_passportString 8 Cond. I12 nominee_addressString 255 Y I13 nominee_cityString 50 Y I14 nominee_stateString 30 Y I15 nominee_pincodeString 6 Y I16 nominee_mobileString 15 N I17 nominee_emailString 100 N I18 nominee_is_minorBoolean 1 Y Derived from nominee_dob
# Field Name Data Type Size Mandatory Validation I19 guardian_nameString 100 Cond. Required if I18=Y I20 guardian_panString 10 Cond. I21 guardian_relationshipString 2 Cond. Relationship code I22 guardian_addressString 255 Cond.
Regulatory Basis : SEBI/HO/MIRSD/SECFATF/P/CIR/2024/12 (Feb 20, 2024) - Centralization at KRAs
Required By : KRA (upload mandatory since Jul 1, 2024), All SEBI intermediaries
FATCA (Foreign Account Tax Compliance Act) and CRS (Common Reporting Standard) are international tax compliance frameworks. India participates in both. For the vast majority of Indian-resident customers, the declaration is straightforward — they check “tax resident of India only” and move on. The complexity arises for NRIs (Non-Resident Indians) and dual citizens who have tax residency in other countries.
# Field Name Data Type Size Mandatory Validation J01 is_tax_resident_of_india_onlyBoolean 1 Y Y/N J02 is_us_personBoolean 1 Y Y/N J03 us_tin_ssnString 11 Cond. Required if J02=Y J04 us_green_card_holderBoolean 1 Cond. Required if J02=Y J05 country_of_birthString 2 Y ISO country code J06 place_of_birth_cityString 50 Y J07 citizenship_countryString 2 Y ISO country code (can be multiple)
# Field Name Data Type Size Mandatory Validation J08 tax_country_seqNumber 1 Cond. 1-5 J09 tax_countryString 2 Cond. ISO country code J10 tax_id_numberString 30 Cond. TIN for that country J11 tax_id_typeString 2 Cond. TIN/SSN/EIN etc J12 tin_not_available_reasonString 2 Cond. If TIN not provided: A=Country doesn’t issue, B=Unable to obtain, C=Not required
# Field Name Data Type Size Mandatory Validation J13 fatca_declaration_dateDate 10 Y DD/MM/YYYY J14 fatca_declaration_placeString 50 Y J15 fatca_signatureBLOB - Y Digital or scanned
Regulatory Basis : SEBI AML/CFT Master Circular (SEBI/HO/MIRSD/SECFATF/P/CIR/2024/78)
A PEP (Politically Exposed Person) is anyone who holds or has recently held a prominent public function — a minister, a senior government official, or a high-ranking military officer. Their immediate family members and close associates are also classified as PEP-related. If a customer declares PEP status, the application triggers EDD (Enhanced Due Diligence), which involves additional manual review by the compliance team.
# Field Name Data Type Size Mandatory Validation K01 is_pepBoolean 1 Y Y/N K02 is_pep_relatedBoolean 1 Y Y/N - Related to a PEP K03 pep_detailsString 200 Cond. Name, designation, relationship if K01/K02=Y K04 source_of_fundsString 100 Y Salary/Business/Investments/Inheritance/Gift/Others K05 beneficial_owner_declarationBoolean 1 Y Declare if acting for self K06 beneficial_owner_detailsString 500 Cond. If K05=N, details of actual BO
Required By : NSE/BSE/MCX UCC registration, Broker
This section determines what the customer can trade. Equity cash is the default segment that every customer gets. F&O (Futures and Options) and Commodity segments require income proof, which is why the financial profile (Section F) must be completed first.
# Field Name Data Type Size Mandatory Validation Conditions L01 segment_equity_cashBoolean 1 Y Y/N Default segment L02 segment_equity_fnoBoolean 1 Y Y/N Requires income proof L03 segment_currencyBoolean 1 Y Y/N L04 segment_commodityBoolean 1 Y Y/N Requires income proof L05 exchange_nseBoolean 1 Y Y/N L06 exchange_bseBoolean 1 Y Y/N L07 exchange_mcxBoolean 1 Cond. Y/N Required if L04=Y L08 trading_experience_equity_yearsNumber 2 N 0-50 L09 trading_experience_fno_yearsNumber 2 Cond. 0-50 Required if L02=Y L10 trading_experience_commodity_yearsNumber 2 Cond. 0-50 Required if L04=Y L11 trading_preferenceString 5 N Delivery/Intraday/Both L12 settlement_typeString 2 N T+1, T+0
Segment Income Proof Min Income Risk Disclosure Additional Equity Cash No None General RDD - Equity F&O Yes Broker-specific (typically 1-5L) F&O specific RDD Trading experience declaration Currency Derivatives No None Currency RDD - Commodity Yes Broker-specific Commodity RDD MCX registration
Regulatory Basis : SEBI guidelines on suitability and risk profiling
# Field Name Data Type Size Mandatory Validation M01 age_groupString 2 Y 01=18-25, 02=26-35, 03=36-45, 04=46-55, 05=56-65, 06=65+ M02 investment_objectiveString 2 Y CA=Capital Appreciation, IN=Income, WP=Wealth Preservation, SP=Speculation M03 risk_appetiteString 1 Y L=Low, M=Medium, H=High M04 investment_horizonString 1 Y S=Short(<1yr), M=Medium(1-3yr), L=Long(>3yr) M05 risk_profile_scoreNumber 3 N 0-100 M06 risk_categoryString 2 N
Regulatory Basis : SEBI KYC Master Circular - IPV mandatory unless Aadhaar e-KYC used
Required By : KRA (IPV flag), Broker
IPV (In-Person Verification) is a regulatory requirement to confirm that the person applying is who they claim to be. VIPV (Video In-Person Verification) is the digital equivalent — a recorded video call where a trained agent verifies the customer’s identity against their documents.
# Field Name Data Type Size Mandatory Validation Notes N01 ipv_requiredBoolean 1 Y N if Aadhaar e-KYC or DigiLocker used N02 ipv_modeString 2 Cond. PH=Physical, VI=Video(VIPV), AE=Aadhaar eKYC N03 ipv_statusString 2 Y CO=Completed, PE=Pending, FA=Failed N04 ipv_dateDate 10 Cond. DD/MM/YYYY N05 ipv_verifier_nameString 100 Cond. Authorized official N06 ipv_verifier_designationString 50 Cond. N07 ipv_verifier_organizationString 100 Cond. N08 ipv_verifier_employee_codeString 20 Cond.
# Field Name Data Type Size Mandatory Notes N09 vipv_session_idString 50 Y Unique session identifier N10 vipv_start_timeDateTime - Y ISO 8601 N11 vipv_end_timeDateTime - Y N12 vipv_duration_secondsNumber 5 Y N13 vipv_consent_obtainedBoolean 1 Y Informed consent before video N14 vipv_video_urlString 500 Y Secure, tamper-proof storage N15 vipv_video_hashString 64 Y SHA-256 integrity hash N16 vipv_otp_verifiedBoolean 1 N OTP confirmation during VIPV N17 vipv_face_match_scoreNumber 3 N 0-100 N18 vipv_liveness_scoreNumber 3 N 0-100 N19 vipv_random_questions_jsonJSON - Y Array of Q&A with timestamps N20 vipv_geolocationJSON - N {lat, lon, accuracy} N21 vipv_device_infoJSON - N {device, os, browser, app_version}
Regulatory Basis : SEBI/HO/MIRSD/DoP/P/CIR/2022/44 (replaces POA since Nov 18, 2022)
Required By : CDSL/NSDL, Broker
Note : DDPI is optional - broker cannot deny services if client refuses
DDPI (Demat Debit and Pledge Instruction) replaced the older POA (Power of Attorney) mechanism in November 2022. It authorizes the broker to debit securities from the customer’s demat account for specific purposes — settlement, pledging, mutual fund transactions, and tendering in open offers. Without DDPI, the customer must manually authorize each debit through the depository’s system (CDSL’s CDAS or NSDL’s SPEED-e).
# Field Name Data Type Size Mandatory Validation O01 ddpi_optedBoolean 1 Y Y/N O02 ddpi_bo_idString 16 Cond. BO ID from Section H O03 ddpi_dp_idString 8 Cond. DP ID O04 ddpi_authorization_dateDate 10 Cond. DD/MM/YYYY O05 ddpi_scopeString 2 Cond. AL=All transactions, SP=Specific O06 ddpi_for_settlementBoolean 1 Cond. Transfer securities for settlement O07 ddpi_for_pledgeBoolean 1 Cond. Pledge/re-pledge for margins O08 ddpi_for_mutual_fundBoolean 1 Cond. MF transactions O09 ddpi_for_tenderingBoolean 1 Cond. Tendering shares in open offers/buybacks O10 ddpi_client_signatureBLOB - Cond. Digital or physical
This section covers the legal consents and declarations that the customer must acknowledge before the application can be e-signed. Several of these are SEBI-mandated and cannot be made optional.
# Field Name Data Type Size Mandatory Notes P01 consent_kyc_data_sharingBoolean 1 Y Consent to share KYC with KRA/CKYC P02 consent_aadhaar_usageBoolean 1 Cond. If Aadhaar used for e-KYC P03 consent_digilockerBoolean 1 Cond. If DigiLocker used P04 consent_email_mobile_validationBoolean 1 Y Consent for KRA validation SMS/email P05 consent_electronic_communicationBoolean 1 Y E-contract notes, statements P06 declaration_information_trueBoolean 1 Y All info provided is true P07 declaration_not_bannedBoolean 1 Y Not debarred by SEBI/Exchange P08 risk_disclosure_acknowledgedBoolean 1 Y General Risk Disclosure Document P09 rdd_fno_acknowledgedBoolean 1 Cond. F&O risk disclosure P10 rdd_commodity_acknowledgedBoolean 1 Cond. Commodity risk disclosure P11 rdd_currency_acknowledgedBoolean 1 Cond. Currency risk disclosure P12 running_account_authorizationBoolean 1 Y Authorization for running account P13 running_account_settlement_freqString 2 Y Q1=Quarterly(1st Friday), Q2=Quarterly, M=Monthly P14 terms_conditions_acceptedBoolean 1 Y Broker T&C P15 tariff_sheet_acknowledgedBoolean 1 Y Brokerage/charges acknowledgement
# Field Name Data Type Size Mandatory Notes P16 esign_modeString 2 Y AO=Aadhaar OTP, BI=Biometric, WS=Wet Signature P17 esign_transaction_idString 50 Cond. e-Sign transaction ID P18 esign_timestampDateTime - Cond. ISO 8601 P19 esign_document_hashString 64 Cond. SHA-256 of signed document P20 esign_certificate_serialString 50 Cond. DSC serial number P21 esign_signed_document_urlString 500 Cond. Stored signed PDF P22 declaration_dateDate 10 Y DD/MM/YYYY P23 declaration_placeString 50 Y City of declaration
Master list of all documents captured during onboarding
# Document Type Format Max Size Mandatory Notes Q01 Photograph (passport size) JPEG/PNG 1 MB Y Recent, clear, colour Q02 Signature specimen JPEG/PNG 500 KB Y On white background Q03 PAN Card image JPEG/PNG/PDF 2 MB Y Both sides if applicable Q04 Proof of Identity document JPEG/PNG/PDF 2 MB Y As per POI type Q05 Proof of Address document JPEG/PNG/PDF 2 MB Y As per POA type Q06 Bank proof (cancelled cheque / statement) JPEG/PNG/PDF 2 MB Y Q07 Income proof document PDF/JPEG 5 MB Cond. For F&O/Commodity Q08 FATCA self-certification form PDF 2 MB Y Signed Q09 Nomination form PDF 2 MB Cond. If nomination opted Q10 DDPI form PDF 2 MB Cond. If DDPI opted Q11 KYC application form (signed) PDF 5 MB Y Complete AOF Part I + II Q12 VIPV recording MP4/WebM 50 MB Cond. If VIPV done Q13 DigiLocker fetched documents XML/PDF - N Auto-fetched via consent Q14 Aadhaar XML (offline) XML 1 MB N Masked Aadhaar Q15 Net worth certificate PDF 2 MB N CA certified Q16 Risk disclosure acknowledgement PDF 2 MB Y Signed RDD
Stored results from all external verification APIs
These fields are system-populated — they come from vendor API responses, not from user input. When debugging a verification failure, these are the fields you will inspect to understand what the external system returned.
# Field Name Data Type Size Notes R01 pan_verify_statusString 2 E=Valid, F=Fake, X=Deactivated, D=Deleted, N=NotFound R02 pan_verify_nameString 100 Name as per ITD R03 pan_verify_dobDate 10 DOB as per ITD R04 pan_verify_categoryString 1 P=Individual, C=Company, H=HUF, F=Firm R05 pan_aadhaar_seeding_statusString 1 Y=Linked, N=Not linked R06 pan_verify_name_matchBoolean 1 Does name match? R07 pan_verify_dob_matchBoolean 1 Does DOB match? R08 pan_verify_timestampDateTime - ISO 8601 R09 pan_verify_transaction_idString 50 API transaction reference
# Field Name Data Type Size Notes R10 bank_verify_statusString 2 S=Success, F=Failed R11 bank_verify_name_at_bankString 100 Account holder name from bank R12 bank_verify_name_match_scoreNumber 3 0-100% R13 bank_verify_name_match_resultString 20 FULL_MATCH / PARTIAL_MATCH / NO_MATCH R14 bank_verify_account_existsBoolean 1 R15 bank_verify_utrString 30 Bank UTR reference R16 bank_verify_payment_modeString 4 IMPS/NEFT/UPI R17 bank_verify_timestampDateTime - R18 bank_verify_transaction_idString 50
# Field Name Data Type Size Notes R19 digilocker_consent_idString 50 Consent transaction ID R20 digilocker_consent_dateDateTime - R21 digilocker_documents_fetchedJSON - Array of {doc_type, doc_uri, issuer, fetched_date} R22 digilocker_aadhaar_nameString 100 Name from Aadhaar via DigiLocker R23 digilocker_aadhaar_addressJSON - Structured address from Aadhaar R24 digilocker_aadhaar_dobDate 10 R25 digilocker_aadhaar_genderString 1 R26 digilocker_aadhaar_photoBLOB - Base64 photograph
# Field Name Data Type Size Notes R27 kra_lookup_statusString 20 See KRA status codes in Appendix A R28 kra_nameString 10 Which KRA holds record (CVL/NDML/DOTEX/CAMS/KFintech) R29 kra_applicant_nameString 100 Name in KRA R30 kra_application_dateDate 10 R31 kra_email_validatedBoolean 1 R32 kra_mobile_validatedBoolean 1 R33 kra_pan_aadhaar_linkedBoolean 1 R34 kra_fetch_dataJSON - Full KRA record if fetched R35 kra_fetch_timestampDateTime -
# Field Name Data Type Size Notes R36 ckyc_search_statusString 10 SUCCESS/FAILURE R37 ckyc_id_maskedString 14 Masked CKYC number from search R38 ckyc_id_unmaskedString 14 Full CKYC number from download R39 ckyc_reference_idString 20 Registry reference R40 ckyc_full_nameString 200 R41 ckyc_download_dataJSON - Full CKYC record if downloaded R42 ckyc_download_timestampDateTime -
Upload to KRA within 3 working days of KYC completion
KRA validates within 2 working days
# Field Name Data Type Size Mandatory Notes S01 kra_pos_codeString 20 Y Intermediary Point of Service code S02 kra_app_typeString 2 Y IN=Individual S03 kra_app_numberString 30 Y Unique application reference S04 kra_submission_dateDateTime - Y S05 kra_submission_statusString 2 Y SU=Submitted, AC=Accepted, RJ=Rejected S06 kra_submission_responseJSON - N KRA response payload S07 kra_validation_statusString 20 N KRA status after validation S08 kra_validation_dateDateTime - N S09 kra_rejection_reasonString 200 N If rejected S10 kra_verifier_nameString 100 Y Person who verified KYC S11 kra_verifier_designationString 50 Y S12 kra_verifier_organizationString 100 Y S13 kra_kyc_dateDate 10 Y Date of original KYC S14 kra_verification_dateDate 10 Y Date of verification
Upload to CKYC Registry (CERSAI/Protean) - mandatory since Aug 1, 2024
# Field Name Data Type Size Mandatory Notes T01 ckyc_fi_codeString 20 Y Financial institution code T02 ckyc_branch_codeString 20 Y Branch identifier T03 ckyc_reference_idString 14 Y Unique document reference T04 ckyc_submission_dateDateTime - Y T05 ckyc_submission_statusString 2 Y SU=Submitted, AC=Accepted, RJ=Rejected T06 ckyc_kin_generatedString 14 N 14-digit KIN if successful T07 ckyc_submission_responseJSON - N Full CKYC response T08 ckyc_rejection_reasonString 200 N If rejected T09 ckyc_document_submission_typeString 30 Y CERTIFIED_COPIES / EKYC / OFFLINE_VERIFICATION / DIGITAL_KYC / E_DOCUMENT / VKYC T10 ckyc_verifier_nameString 100 Y T11 ckyc_verifier_designationString 50 Y T12 ckyc_verifier_employee_codeString 20 Y
UCC = Unique Client Code, registered on each exchange the client will trade on
The UCC (Unique Client Code) is the customer’s identity on the exchange. Each exchange has its own registration process and slightly different field requirements, but the core data is the same. The UCC is assigned by the broker and submitted to the exchange for approval.
# Field Name Data Type Size Mandatory Notes U01 ucc_codeString 10 Y Alphanumeric, assigned by broker U02 ucc_client_typeString 2 Y IN=Individual, HU=HUF, NR=NRI, CO=Corporate U03 ucc_registration_dateDate 10 Y
# Field Name Data Type Size Mandatory Notes U04 nse_cm_activatedBoolean 1 Cond. Cash Market segment U05 nse_fno_activatedBoolean 1 Cond. F&O segment U06 nse_cd_activatedBoolean 1 Cond. Currency Derivatives U07 nse_com_activatedBoolean 1 Cond. Commodity segment U08 nse_ucc_statusString 2 Y AP=Approved, RJ=Rejected, PE=Pending
# Field Name Data Type Size Mandatory Notes U09 bse_cm_activatedBoolean 1 Cond. U10 bse_fno_activatedBoolean 1 Cond. U11 bse_cd_activatedBoolean 1 Cond. U12 bse_ucc_statusString 2 Y
# Field Name Data Type Size Mandatory Notes U13 mcx_com_activatedBoolean 1 Cond. Commodity on MCX U14 mcx_client_categoryString 2 Cond. HE=Hedger, SP=Speculator, AR=Arbitrageur U15 mcx_ucc_statusString 2 Cond.
Regulatory Basis : RBI PIS (Portfolio Investment Scheme), FEMA regulations
When Applicable : residential_status (A22) = NRI / FN / PIO
NRI (Non-Resident Indian) onboarding involves additional regulatory requirements that resident Indians do not face. The most significant is the PIS (Portfolio Investment Scheme) permission from an AD (Authorized Dealer) bank, which is mandatory before an NRI can trade in Indian equities.
# Field Name Data Type Size Mandatory Validation Notes V01 pis_permission_statusBoolean 1 Y (NRI)Y/N RBI PIS permission obtained V02 pis_permission_letterBLOB - Cond. PDF RBI PIS permission document V03 pis_account_numberString 20 Cond. Designated PIS bank account V04 pis_bank_nameString 100 Cond. PIS designated bank V05 pis_bank_branchString 100 Cond. PIS designated branch V06 pis_permission_dateDate 10 Cond. DD/MM/YYYY V07 pis_validity_dateDate 10 Cond. DD/MM/YYYY V08 overseas_address_line1String 100 Y (NRI)Overseas residential address V09 overseas_address_line2String 100 N V10 overseas_cityString 50 Y (NRI)V11 overseas_stateString 50 N V12 overseas_zipString 15 Y (NRI)V13 overseas_countryString 2 Y (NRI)ISO code V14 overseas_phoneString 20 N With country code V15 nre_nro_account_typeString 3 Y (NRI)NRE/NRO For fund settlement V16 nre_nro_bank_accountString 18 Y (NRI)V17 nre_nro_ifscString 11 Y (NRI)V18 nre_nro_swift_codeString 11 N For international transfers V19 repatriation_statusString 2 Y (NRI)RP=Repatriable, NR=Non-repatriable V20 tax_residency_certificateBLOB - Cond. PDF Country-specific TRC V21 nri_trading_routeString 2 Y (NRI)PI=PIS, NP=Non-PIS PIS restricts intraday V22 investment_limit_currentDecimal 15,2 N Current investment value
Route Intraday Delivery F&O Currency Commodity PIS No Yes No No No Non-PIS Yes Yes Yes No No
# Field Name Data Type Size Mandatory Validation W01 holding_typeString 2 Y SI=Single, J2=Joint(2), J3=Joint(3) W02 operation_modeString 2 Cond. ES=Either or Survivor, AS=Anyone or Survivor, JO=Jointly W03 is_minor_accountBoolean 1 Y Derived from DOB < 18 years
# Field Name Data Type Size Mandatory Notes W04 guardian_nameString 100 Y W05 guardian_panString 10 Y W06 guardian_aadhaarString 12 N W07 guardian_relationshipString 2 Y FA=Father, MO=Mother, CG=Court-appointed W08 guardian_addressString 255 Y W09 guardian_identity_proofBLOB - Y W10 guardian_address_proofBLOB - Y W11 court_order_documentBLOB - Cond. If W07=CG W12 date_of_majorityDate 10 Y DOB + 18 years (auto-calculated) W13 conversion_to_major_doneBoolean 1 N Must be done at age 18 W14 conversion_dateDate 10 Cond.
Minor Restrictions : Delivery trades only, no derivatives, max holding Rs.2 lakh across exchanges.
Complete replication of Section A (Personal Identity), Section B (Address), Section C (Contact), Section D (POI), Section E (POA), Section K (PEP), Section J (FATCA) for each additional holder. Prefix fields with holder2_ or holder3_.
# Field Name Data Type Size Mandatory Notes W15 poa_grantedBoolean 1 Y Y/N W16 poa_holder_nameString 100 Cond. W17 poa_holder_panString 10 Cond. Mandatory KYC per SEBI W18 poa_holder_aadhaarString 12 Cond. W19 poa_holder_relationshipString 50 Cond. W20 poa_execution_dateDate 10 Cond. W21 poa_registration_numberString 30 Cond. W22 poa_validity_periodString 20 Cond. W23 poa_scopeString 2 Cond. TR=Trading, DM=Demat, BO=Both W24 poa_notarizedBoolean 1 Cond. W25 poa_documentBLOB - Cond. W26 poa_revocation_dateDate 10 N If POA revoked
Regulatory Basis : SEBI peak margin norms, SEBI (Stock Brokers) Regulations 2026
# Field Name Data Type Size Mandatory Notes X01 pledge_consent_obtainedBoolean 1 Y Consent for pledging securities as margin X02 pledge_agreement_dateDate 10 Cond. X03 online_pledge_activatedBoolean 1 N X04 mtf_enabledBoolean 1 Y Margin Trading Facility X05 mtf_agreement_dateDate 10 Cond. X06 mtf_limit_sanctionedDecimal 15,2 Cond. INR X07 mtf_interest_rateDecimal 5,2 Cond. % per annum X08 collateral_type_preferenceString 2 N CA=Cash, SE=Securities, FD=Fixed Deposit, ET=ETF X09 total_pledged_valueDecimal 15,2 N Current total (with haircut) X10 daily_margin_report_statusString 2 N CO=Compliant, NC=Non-Compliant
Regulatory Basis : SEBI framework for automated deactivation (Jul 2022), SEBI (Stock Brokers) Regulations 2026
These fields track the account from activation through dormancy to closure. You will encounter them when building the account status dashboard and the automated dormancy workflows.
# Field Name Data Type Size Mandatory Notes Y01 account_statusString 2 Y AC=Active, IN=Inactive, DO=Dormant, SU=Suspended, CL=Closed Y02 account_status_dateDate 10 Y Last status change Y03 account_status_reasonString 100 N Y04 last_trade_dateDate 10 N Y05 days_inactiveNumber 5 N Auto-calculated Y06 dormancy_declaration_dateDate 10 N Typically after 12 months inactive Y07 reactivation_request_dateDate 10 N Y08 reactivation_approval_dateDate 10 N Y09 reactivation_fresh_kycBoolean 1 N Y10 closure_request_dateDate 10 N Y11 closure_reasonString 100 N Y12 closure_securities_settledBoolean 1 N Y13 closure_funds_settledBoolean 1 N Y14 final_closure_dateDate 10 N Y15 kyc_validity_startDate 10 Y Y16 kyc_validity_endDate 10 Y 5-year cycle Y17 next_kyc_review_dateDate 10 Y Y18 ovd_expiry_dateDate 10 N For Passport/DL Y19 kyc_inadequacy_reasonString 50 N If auto-deactivated Y20 auto_deactivation_dateDate 10 N SEBI framework for inadequate KYC
Regulatory Basis : SEBI (Stock Brokers) Regulations 2026 - 8-year record retention
Every change to a client record is logged. This is not optional — SEBI requires a complete, tamper-proof audit trail for eight years. The maker-checker workflow (Z09-Z15) ensures that no single person can modify a client record without a second person reviewing and approving the change.
# Field Name Data Type Size Mandatory Notes Z01 modification_idString 20 Y Unique change ID Z02 field_nameString 50 Y Which field changed Z03 old_valueString 500 Y Previous value Z04 new_valueString 500 Y New value Z05 modification_dateDateTime - Y ISO 8601 Z06 modified_by_userString 50 Y User ID Z07 modification_sourceString 2 Y CR=Client Request, CO=Compliance, KR=KRA Update, SY=System Z08 modification_reasonString 200 N
# Field Name Data Type Size Mandatory Notes Z09 approval_statusString 2 Y PE=Pending, AP=Approved, RJ=Rejected Z10 maker_idString 50 Y Z11 maker_timestampDateTime - Y Z12 checker_idString 50 Cond. Z13 checker_timestampDateTime - Cond. Z14 approval_levelString 2 N L1/L2/L3 Z15 rejection_reasonString 200 Cond.
# Field Name Data Type Size Mandatory Notes Z16 suspicious_activity_flaggedBoolean 1 N Z17 suspicious_activity_typeString 50 Cond. Z18 sar_filedBoolean 1 Cond. Suspicious Activity Report Z19 sar_filing_dateDate 10 Cond. Z20 investigation_statusString 2 Cond. OP=Open, CL=Closed
Regulatory Basis : Digital Personal Data Protection Act 2023, DPDP Rules 2025 (compliance deadline: May 13, 2027)
The DPDP (Digital Personal Data Protection) Act requires granular, informed consent before processing personal data. Each consent purpose must be separately captured and independently revocable.
# Field Name Data Type Size Mandatory Notes AA01 dpdp_consent_obtainedBoolean 1 Y AA02 dpdp_consent_dateDate 10 Y AA03 dpdp_consent_versionString 10 Y Version of consent text AA04 dpdp_consent_expiryDate 10 N AA05 dpdp_marketing_consentBoolean 1 Y Separate granular consent AA06 dpdp_third_party_sharing_consentBoolean 1 Y AA07 dpdp_analytics_consentBoolean 1 Y AA08 dpdp_cross_border_consentBoolean 1 Y AA09 dpdp_consent_withdrawal_dateDate 10 N AA10 dpdp_right_to_access_requestDate 10 N AA11 dpdp_right_to_correction_requestDate 10 N AA12 dpdp_right_to_erasure_requestDate 10 N AA13 dpdp_breach_notification_sentBoolean 1 N AA14 dpdp_breach_notification_dateDate 10 N AA15 data_retention_end_dateDate 10 Y 8 years per SEBI Regs
Regulatory Basis : SEBI circular Dec 3, 2024 (SMS/Email alerts mandatory)
# Field Name Data Type Size Mandatory Notes AB01 pref_email_notificationsBoolean 1 Y Cannot be N (mandatory per SEBI) AB02 pref_sms_notificationsBoolean 1 Y Cannot be N (mandatory per SEBI) AB03 pref_whatsapp_notificationsBoolean 1 N Optional AB04 pref_push_notificationsBoolean 1 N Mobile app AB05 pref_languageString 2 Y EN=English, HI=Hindi, regional codes AB06 pref_contract_note_modeString 2 Y EM=Email (mandatory), PH=Physical+Email AB07 pref_statement_frequencyString 2 N DA=Daily, WK=Weekly, MN=Monthly AB08 dnd_registeredBoolean 1 N Do Not Disturb (TRAI) AB09 whatsapp_optin_dateDate 10 Cond.
Regulatory Basis : SEBI guidelines effective 2025, auto-settlement for inactive accounts within 30 days
# Field Name Data Type Size Mandatory Notes AC01 ras_authorizedBoolean 1 Y Running Account Authorization AC02 ras_settlement_frequencyString 2 Y MN=Monthly, QR=Quarterly AC03 ras_next_settlement_dateDate 10 Y Auto-calculated AC04 ras_last_settlement_dateDate 10 N AC05 ras_settlement_bank_accountString 18 Y Primary bank for fund return AC06 ras_auto_settlement_trigger_daysNumber 3 Y Default: 30 days inactive AC07 ras_last_transaction_dateDate 10 N AC08 ras_optin_dateDate 10 Y AC09 ras_optout_dateDate 10 N
The code tables below are the lookup values used throughout the master dataset. You will reference these when building dropdowns, writing validation logic, or parsing data from external systems.
Code Description 01 Private Sector Service 02 Public Sector Service 03 Government Service 04 Business 05 Professional 06 Agriculturist 07 Retired 08 Housewife 09 Student 10 Forex Dealer 11 Self Employed 99 Others (specify)
Code Document A Passport B Voter ID Card C Driving License D PAN Card (with photograph) E Aadhaar / UID F NREGA Job Card G NPR Letter / Govt ID Z Others
Code Document A Passport B Voter ID Card C Driving License D Aadhaar / UID E Utility Bill (max 2 months old) F Bank Statement (max 3 months old) G Property/Municipal Tax Receipt H Govt/Defense ID Card Z Others
Status Description Trading Allowed KYC Registered Fully compliant, validated Yes KYC Validated Verified + client confirmed details Yes Under Process KRA processing, verification underway No On Hold Discrepancy in documents/validation No KYC Rejected Rejected after verification No KYC Registered - Incomplete Old record, needs update Limited Not Available No record in any KRA N/A (fresh KYC)
The two statuses that matter most
In day-to-day operations, you will mostly care about “KYC Registered” and “On Hold.” The first means the customer can trade; the second means something in their KYC did not pass validation and needs manual intervention before trading can begin.
Code Relationship FA Father MO Mother SP Spouse SO Son DA Daughter BR Brother SI Sister GF Grandfather GM Grandmother OT Others (specify)
Code State Code State AN Andaman & Nicobar MH Maharashtra AP Andhra Pradesh MN Manipur AR Arunachal Pradesh ML Meghalaya AS Assam MZ Mizoram BR Bihar NL Nagaland CH Chandigarh OD Odisha CT Chhattisgarh PY Puducherry DD Daman & Diu PB Punjab DL Delhi RJ Rajasthan GA Goa SK Sikkim GJ Gujarat TN Tamil Nadu HR Haryana TG Telangana HP Himachal Pradesh TR Tripura JK Jammu & Kashmir UP Uttar Pradesh JH Jharkhand UT Uttarakhand KA Karnataka WB West Bengal KL Kerala LA Ladakh MP Madhya Pradesh
Code Type 01 Individual 02 Partnership Firm 03 Company 04 Trust 05 HUF 06 Government Entity 07 Society 08 AOP/BOI 09 LLP 10 Others
# Topic Circular Number Date Key Impact 1 KYC Master Circular SEBI/HO/MIRSD/MIRSD-SEC-2/P/CIR/2023/168 Oct 12, 2023 Consolidated KYC norms, CERSAI templates 2 AML/CFT Guidelines SEBI/HO/MIRSD/SECFATF/P/CIR/2024/78 Jun 6, 2024 Anti-Money Laundering standards 3 FATCA/CRS at KRAs SEBI/HO/MIRSD/SECFATF/P/CIR/2024/12 Feb 20, 2024 Mandatory FATCA upload to KRA from Jul 1, 2024 4 KRA Validation Review SEBI/HO/MIRSD/SECFATF/P/CIR/2024/41 May 14, 2024 On-Hold -> KYC Registered relaxation 5 KRA Upload to CKYCRR SEBI/HO/MIRSD/SECFATF/P/CIR/2024/79 Jun 6, 2024 Mandatory CKYC upload from Aug 1, 2024 6 e-KYC & DigiLocker SEBI/HO/MIRSD/DOP/CIR/P/2020/73 Apr 24, 2020 Aadhaar e-KYC + DigiLocker permitted 7 e-KYC Setu (NPCI) SEBI press release Jun 30, 2025 Aadhaar e-KYC without sharing Aadhaar number 8 DDPI replacing POA SEBI/HO/MIRSD/DoP/P/CIR/2022/44 Apr 4, 2022 DDPI mandatory from Nov 18, 2022 9 Nomination Revamp SEBI circular Jan 10, 2025 Up to 10 nominees, video opt-out 10 Nomination Simplification SEBI circular Jun 10, 2024 Only 3 mandatory fields for nomination 11 DigiLocker for Assets SEBI/HO/OIAE/OIAE_IAD-3/P/CIR/2025/32 Mar 19, 2025 Demat statements in DigiLocker 12 Stock Brokers Master SEBI/HO/MIRSD/MIRSD-PoD/P/CIR/2025/90 Jun 17, 2025 Consolidated broker operations circular 13 KYC Overhaul Consultation SEBI consultation paper Jan 16, 2026 Proposed: centralized supplementary KYC, 5-yr review cycle
Detailed vendor comparison, recommended vendors, API endpoints, request/response formats, and complete integration sequence are in Vendor Integrations
Recommended Vendor : Decentro (see Vendor Integrations )
Endpoint : ITD-authorized service (Protean/NSDL)
Direction Field Type Notes Request pan String(10) PAN number name String For name matching dob Date For DOB matching consent String ”Y” mandatory reason String Purpose Response status String E/F/X/D/N/EA/EC/ED/EF registered_name String Name per ITD category String P=Individual dob Date DOB per ITD aadhaar_seeding_status String Y/N (PAN-Aadhaar link) name_match Boolean dob_match Boolean valid Boolean Overall validity
Method : IMPS-based Rs.1 credit
Direction Field Type Notes Request account_number String(18) ifsc String(11) [A-Z]{4}0[A-Z0-9]{6}beneficiary_name String For matching Response status String SUCCESS/FAILURE name_at_bank String Registered holder name name_match_score Integer 0-100 name_match_result String FULL_MATCH/PARTIAL_MATCH/NO_MATCH account_exists Boolean utr String Bank UTR reference payment_mode String IMPS/NEFT/UPI
Documents Fetchable :
Aadhaar (e-Aadhaar XML with demographic + address + photo)
PAN Card (number, name, father’s name, DOB)
Driving License (number, name, DOB, address, validity, vehicle classes)
Voter ID, Passport, Insurance Policy, Bank Statements
Aadhaar XML Fields Returned :
name, dob, gender, photo (base64)
Address: careOf, house, street, landmark, locality, vtc, subDistrict, district, state, country, pincode, postOffice
Direction Field Type Notes Request document_hash String SHA-256 of document aadhaar_number String(12) auth_mode String OTP/BIOMETRIC/FACE otp String(6) If auth_mode=OTP asp_id String Application Service Provider ID Response status String SUCCESS/FAILURE signed_document Base64 Digitally signed PDF signature_value Base64 Digital signature certificate_chain Array X.509 cert chain esign_txn_id String Transaction ID dsc_serial_number String DSC serial
SOAP Endpoint : cvlkra.com/PANInquiry.asmx
Method Purpose GetPanStatusCheck KYC status across all KRAs InsertUpdateKYCRecordSubmit/modify KYC record (XML) SolicitPANDetailsFetchALLKRAFetch PAN details from all KRAs
File Format : Tilde (~) delimited text file for bulk upload/download
Operation Method Key Fields Search POST document_type, id_number, consent Download POST ckyc_id or reference_id, consent Upload POST Full individual record (see Section T)
1. Client provides PAN + Mobile
2. PAN Verification (Protean) -> Validate PAN status, get name/DOB
3. KRA Lookup (by PAN) -> Check if KYC exists
4. If KRA found: KRA Fetch -> Download existing record -> Pre-fill form
5. If KRA not found: CKYC Search (by PAN) -> Download if found -> Pre-fill
6. If neither found: Fresh KYC flow
7. Aadhaar consent via DigiLocker -> Fetch Aadhaar XML (name, address, photo)
8. OR: Manual document upload (POI + POA)
9. Cross-verify: PAN name vs Aadhaar name vs KRA name
10. Capture remaining personal details not available from pre-fill
11. Bank account details -> Penny Drop verification
12. Income/Occupation details
13. Income proof upload (if F&O/Commodity segments selected)
14. FATCA/CRS self-certification
16. Risk profiling questionnaire
17. Nominee details (1-10) OR opt-out with video verification
18. DDPI authorization (optional)
19. Running account authorization
20. Segment selection (Equity/F&O/Currency/Commodity)
21. Risk disclosure acknowledgements per segment
22. IPV/VIPV (unless Aadhaar e-KYC exemption applies)
23. Review all captured data
24. e-Sign via Aadhaar OTP on complete application
25. Upload to KRA (within 3 working days)
26. Upload to CKYC (within 3 working days)
27. Register UCC on NSE/BSE/MCX
28. Open BO account on CDSL/NSDL
29. Activate trading segments
30. Generate welcome kit / credentials
31. Client ready to trade
32. Admin reviews captured data vs verification results
33. Name match check (PAN vs Aadhaar vs Bank vs KRA)
35. Bank proof validation
36. Income proof validation (for derivative segments)
39. IPV/VIPV recording review
40. Document quality check
41. KRA submission status monitoring
42. CKYC submission status monitoring
43. Exchange UCC confirmation
44. Final approval / rejection with reasons
Section Description Total Fields Mandatory A Personal Identity 32 16 B Address Details 19 10 C Contact Details 9 3 D Identity Documents (POI) 7 5 E Address Documents (POA) 7 5 F Financial Profile 10 3 G Bank Account Details (per account) 16 12 H Demat Account Details 9 8 I Nomination Details (per nominee) 22 12 J FATCA/CRS Declaration 15 8 K PEP & AML Declaration 6 4 L Trading Preferences & Segments 12 7 M Risk Profiling 6 4 N IPV / VIPV 21 5+ O DDPI Authorization 10 1 P Consent & Declarations 23 16 Q Document Images 16 8 R Third-Party Verification Results 42 - (system) S KRA Submission Data 14 10 T CKYC Submission Data 12 8 U Exchange Registration (UCC) 15 5+ V NRI-Specific Requirements 22 ~12 (NRI only) W Minor / Joint / POA Accounts 26 conditional X Margin Pledge & Collateral 10 2 Y Account Lifecycle & Dormancy 20 5 Z Audit Trail & Modification 20 ~10 (system) AA DPDP Consent Management 15 8 AB Communication Preferences 9 4 AC Running Account Settlement 9 5 TOTAL ~454 ~200
This specification covers the complete superset of data fields required for onboarding an individual customer in an Indian stock broking firm. The actual fields captured will vary based on:
Whether existing KRA/CKYC record is found (pre-fill reduces capture)
Segments selected (F&O/Commodity need income proof)
KYC method used (Aadhaar e-KYC exempts IPV)
DDPI and nomination choices
Residential status (NRI has additional requirements - see Section V)
Account type: Minor (Section W) / Joint (Section W) / POA (Section W)
Margin trading facility opted (Section X)
For third-party API specifications, vendor selection, and integration sequences, see Vendor Integrations