Skip to content

CDSL BO Integration

Every share your client owns, every dividend they receive, every trade that settles — it all flows through a demat account at CDSL. If your firm’s trading platform is the storefront, CDSL is the vault in the back. This document is your complete guide to integrating with that vault: opening accounts, managing securities, handling pledges, and staying compliant. By the time you finish reading, you will understand not just the how of CDSL integration, but the why behind every file format quirk, every maker-checker requirement, and every circular reference number your compliance team will throw at you.

  1. Overview
  2. CDAS (Central Depository Accounting System)
  3. BO Account Opening - API Method
  4. BO Account Opening - File Upload Method
  5. BO ID Format
  6. DDPI (Demat Debit and Pledge Instruction)
  7. eDIS (Electronic Delivery Instruction Slip)
  8. easi / easiest
  9. Non-Individual Entities
  10. Nomination
  11. KYC Linkage
  12. Transaction APIs
  13. Modification & Closure
  14. Status Codes
  15. Reconciliation & Reports
  16. UCC-Demat Mapping
  17. Security & Compliance
  18. Charges
  19. Timeline & SLA
  20. Recent Circulars (2024-2026)
  21. Edge Cases
  22. Future Considerations

CDSL (Central Depository Services Limited) is one of two central depositories in India, regulated by SEBI under the Depositories Act, 1996 and the SEBI (Depositories and Participants) Regulations, 2018. CDSL facilitates holding securities in electronic (dematerialized) form and enables settlement of trades executed on stock exchanges.

  • Established: 1999 (promoted by BSE)
  • Regulator: SEBI
  • Governing Law: Depositories Act, 1996
  • BO Accounts: 12+ crore (as of 2025)
  • Active DPs: 590+
  • Market Share: ~75% of new demat accounts (as of 2025)
  • Registered Office: Mumbai, Maharashtra

CDSL operates through a DP (Depository Participant) model. A stock broker acting as a DP is the intermediary between the investor and the depository.

Investor (BO) <---> DP (Broker) <---> CDSL <---> Clearing Corporation <---> Exchange

Our role: We act as a DP of CDSL. This means:

  • We are registered with CDSL as a Depository Participant
  • We are assigned a unique 8-digit DP ID by CDSL
  • We open and maintain Beneficiary Owner (BO) accounts for our clients
  • We submit all instructions (demat, transfer, pledge, etc.) on behalf of clients
  • We are responsible for KYC compliance at the depository level
  • We pay CDSL annual fees and per-transaction charges

DP Registration Requirements:

  • SEBI registration as Stock Broker or Clearing Member
  • Net worth as prescribed by SEBI (minimum Rs. 50 lakhs for broker-DP)
  • Adequate infrastructure (CDAS connectivity, trained staff)
  • Compliance officer appointment mandatory

CVL is a wholly-owned subsidiary of CDSL that operates:

  • CVL KRA: KYC Registration Agency (one of 5 SEBI-registered KRAs)
  • CVL MF Services: Mutual fund servicing
  • CVL Academic: Certification programs

Integration note: CVL KRA is a separate integration (see V4 in Vendor Integrations). This document covers only the depository (CDSL) integration. However, we use CVL KRA status as a prerequisite for BO account opening.


2. CDAS (Central Depository Accounting System)

Section titled “2. CDAS (Central Depository Accounting System)”

CDAS is CDSL’s core technology platform through which all depository operations are processed.

AttributeDetails
System NameCDAS - Central Depository Accounting System
TypeWeb-based application + API layer
AccessBrowser (Internet Explorer/Edge for legacy, Chrome for newer modules)
URLhttps://cdas.cdslindia.com (production)
ConnectivityLeased line / VPN / Internet with certificate-based auth
Uptime SLA99.5% during market hours (9:00 AM - 5:00 PM IST, Mon-Fri)
Maintenance WindowSaturday 6:00 PM - Sunday 6:00 AM (typically)
ModulePurposeAccess Method
BO Account ManagementOpen, modify, close BO accountsWeb + API
Transaction ModuleDemat, remat, transfer, pledgeWeb + API + File upload
Corporate Action ModuleDividend, bonus, split, rightsWeb (read-only for DP)
eDIS ModuleElectronic delivery instruction slipAPI
DDPI ModuleDDPI registration and managementWeb + API
Reporting ModuleHoldings, transactions, reconciliationWeb + File download
Billing ModuleView charges, generate invoicesWeb
Admin ModuleUser management, IP configWeb

Connection Methods (in order of preference):

MethodLatencyCostRecommended For
CDSL API (REST over HTTPS)Low (~200ms)Per-transactionPrimary: automated operations
CDAS Web PortalMediumIncluded in annual feeSecondary: manual operations, reporting
File Upload (SFTP/Web)High (batch)Per-fileBulk operations (>100 accounts/day)

API Base URL: https://api.cdslindia.com/v1/ (production) Sandbox URL: https://sandbox-api.cdslindia.com/v1/ (UAT)

Connectivity Prerequisites:

  1. DP registered with CDSL and assigned DP ID
  2. Digital certificate issued by CDSL-approved CA (typically NIC or eMudhra)
  3. Static IP addresses registered with CDSL for whitelisting
  4. User IDs created in CDAS admin module (role-based: Maker, Checker, Admin)
  5. VPN tunnel established (for leased-line DPs) or HTTPS with mTLS (for API)

This is our PRIMARY method for account opening.

POST /v1/bo/setup
Content-Type: application/json
Authorization: Bearer {dp_auth_token}
X-DP-ID: {8_digit_dp_id}
X-Certificate-Thumbprint: {cert_thumbprint}
ComponentDetails
MethodCertificate-based mTLS + Bearer token
CertificateX.509 issued by CDSL-approved CA, installed on server
TokenJWT obtained via /v1/auth/token endpoint, valid 8 hours
IP WhitelistingOnly registered static IPs can call API
Rate Limit100 requests/minute per DP (BO setup), 500 requests/minute (queries)

Token Request:

POST /v1/auth/token
{
"dp_id": "12345678",
"certificate_serial": "ABCD1234...",
"timestamp": "2026-02-13T10:00:00+05:30"
}
#FieldTypeSizeMandatoryValidationNotes
1account_typeString2YIN=Individual, JO=Joint, CO=Corporate, HU=HUF, TR=Trust, PA=Partnership, MN=MinorPrimary account classification
2holder_first_nameString50YAlpha + space onlyAs per PAN card
3holder_middle_nameString50NAlpha + space
4holder_last_nameString50YAlpha + space only
5holder_full_nameString150YConcatenation of first+middle+lastMust match PAN/KRA name exactly
6panString10Y[A-Z]{5}[0-9]{4}[A-Z]Validated against NSDL/Protean DB
7dobString10YDD/MM/YYYYMust match PAN DOB
8genderString1YM=Male, F=Female, T=Transgender
9father_husband_nameString100YAs per KYC documents
10mother_nameString100N
11marital_statusString1NM=Married, S=Single, W=Widowed, D=Divorced
12nationalityString2YISO 3166-1 alpha-2; IN for Indian
13residential_statusString2YRI=Resident Indian, NR=NRI, FN=Foreign National
14occupation_codeString2YCDSL occupation code table (01-15)See Section 3.3g
15annual_income_rangeString2Y01=<1L, 02=1-5L, 03=5-10L, 04=10-25L, 05=25L-1Cr, 06=>1Cr
16mobile_numberString10YIndian 10-digit mobileMust match KRA-registered mobile
17emailString100YValid email formatMust match KRA-registered email
18aadhaar_numberString12Cond.12-digit Verhoeff checkMasked storage; last 4 digits only stored at CDSL
19ckyc_numberString14Cond.14-digit CKYC ID (KIN)If available from CKYC registry
20kra_statusString2YKR=Registered, KV=ValidatedMust be KR or KV to proceed
21politically_exposedString1YY/NPEP flag
22related_to_pepString1YY/NRelated to PEP flag
23tax_statusString2Y01=Individual, 02=NRI, 03=HUF, etc.CDSL tax status code table
#FieldTypeSizeMandatoryValidationNotes
24corr_address_line1String80YAlphanumeric + special charsFlat/House/Building
25corr_address_line2String80NStreet/Road/Locality
26corr_address_line3String80NArea/Landmark
27corr_cityString50YCity/Town/Village
28corr_stateString30YCDSL state code table
29corr_pincodeString6Y6-digit Indian PIN
30corr_countryString2YISO 3166-1 alpha-2Default: IN
31corr_phoneString15NWith STD codeLandline if any
#FieldTypeSizeMandatoryValidationNotes
32perm_same_as_corrString1YY/NIf Y, copy correspondence address
33perm_address_line1String80Cond.Required if perm_same_as_corr = N
34perm_address_line2String80N
35perm_address_line3String80N
36perm_cityString50Cond.
37perm_stateString30Cond.CDSL state code table
38perm_pincodeString6Cond.6-digit Indian PIN
39perm_countryString2Cond.ISO 3166-1 alpha-2
#FieldTypeSizeMandatoryValidationNotes
40bank_account_numberString20YAlphanumericPrimary bank account
41bank_ifscString11Y[A-Z]{4}0[A-Z0-9]{6}RBI IFSC directory validated
42bank_micrString9Cond.9-digit numericRequired if MICR available
43bank_nameString100YAuto-derived from IFSC
44bank_branchString100NAuto-derived from IFSC
45bank_account_typeString2YSB=Savings, CA=Current, NR=NRE, NO=NRO
46bank_verifiedString1YY onlyMust be penny-drop verified before submission

Additional Bank Accounts (up to 5 total):

#FieldTypeSizeMandatoryNotes
47-51bank2_account_number through bank5_account_numberString20NAdditional bank accounts
52-56bank2_ifsc through bank5_ifscString11Cond.Required if additional bank provided
57-61bank2_account_type through bank5_account_typeString2Cond.Required if additional bank provided
#FieldTypeSizeMandatoryValidationNotes
62nomination_optedString1YY/N
63nomination_opt_out_reasonString2Cond.Required if opted=N; needs video verification01=Do not wish, 02=Will submit later
64num_nomineesNumber2Cond.1-10Required if opted=Y

Per Nominee (repeat up to 10):

#FieldTypeSizeMandatoryValidationNotes
65nominee_N_nameString100YFull legal nameN = 1 to 10
66nominee_N_relationshipString2YRelationship code tableSP=Spouse, CH=Child, PA=Parent, SI=Sibling, OT=Other
67nominee_N_applicable_percentDecimal6,2Y0.01 - 100.00All nominees must sum to 100.00
68nominee_N_dobString10YDD/MM/YYYY
69nominee_N_panString10NValid PAN formatOptional but recommended
70nominee_N_address_line1String80Y
71nominee_N_cityString50Y
72nominee_N_stateString30Y
73nominee_N_pincodeString6Y
74nominee_N_is_minorString1YY/NDerived: DOB < 18 years from today
75nominee_N_guardian_nameString100Cond.Required if minor=Y
76nominee_N_guardian_panString10Cond.Required if minor=Y
77nominee_N_guardian_relationshipString2Cond.Required if minor=Y
78nominee_N_guardian_addressString255Cond.Required if minor=Y
#FieldTypeSizeMandatoryValidationNotes
79si_auto_creditString1YY/NAuto-credit securities from IPO/corporate actions
80si_auto_pledgeString1NY/NDefault: N
81si_auto_deliveryString1NY/NDefault: N; only if DDPI
82si_sms_alertString1YYMandatory for all accounts
83si_email_alertString1YYMandatory for all accounts
84si_ras_frequencyString2YQ1=Quarterly, M1=MonthlyRunning Account Settlement frequency
#FieldTypeSizeMandatoryValidationNotes
85bsda_flagString1NY/NBasic Services Demat Account (for small investors)
86fatca_countryString2Cond.ISO country codeRequired if US/foreign tax obligations
87fatca_tax_idString20Cond.Foreign TINRequired if fatca_country is not IN
88crs_country_of_birthString2YISO country code
89crs_country_of_citizenshipString2YISO country code
90gross_annual_incomeString15NNumericActual income (optional; range is mandatory)

Occupation Code Table:

CodeOccupation
01Private Sector Service
02Public Sector / Government Service
03Business / Self-Employed
04Professional (Doctor, Lawyer, CA, etc.)
05Agriculturist
06Retired
07Housewife / Homemaker
08Student
09Forex Dealer
10Government Service
11Public Sector
12Private Sector
13Not Categorized
14Others
15Not Applicable
#FieldTypeSizeMandatoryValidationNotes
91poi_typeString2YPA=PAN, PP=Passport, DL=DrivingLicense, VI=VoterIDProof of Identity type
92poi_numberString20YDocument number
93poa_typeString2YAA=Aadhaar, PP=Passport, UT=Utility, BA=BankStatementProof of Address type
94poa_numberString20YDocument number
95ipv_doneString1YYIn-Person Verification / Video IPV completed
96ipv_dateString10YDD/MM/YYYYDate of IPV
97ipv_modeString2YVP=Video, IP=In-personSEBI VIPV or physical
98photo_attachedString1YYClient photograph uploaded

Success Response (HTTP 200):

{
"status": "SUCCESS",
"bo_id": "1234567800001234",
"dp_id": "12345678",
"client_id": "00001234",
"account_status": "ACTIVE",
"opening_date": "13/02/2026",
"message": "BO account created successfully",
"reference_id": "CDSL-REF-20260213-001234"
}

Error Response (HTTP 400/422):

{
"status": "FAILED",
"error_code": "BO_ERR_045",
"error_message": "PAN verification failed - name mismatch",
"field": "holder_full_name",
"reference_id": "CDSL-REF-20260213-001235"
}

Common Error Codes:

Error CodeDescriptionResolution
BO_ERR_001Invalid DP IDVerify DP ID in request header
BO_ERR_010Duplicate PAN - account already existsCheck if BO already exists for this PAN under our DP
BO_ERR_020KRA status not validEnsure KRA status is Registered or Validated
BO_ERR_030Mandatory field missingCheck field indicated in field attribute
BO_ERR_040PAN format invalidVerify PAN format: [A-Z]{5}[0-9]{4}[A-Z]
BO_ERR_045PAN name mismatchName must match PAN database exactly
BO_ERR_050Bank account verification pendingPenny-drop must be completed first
BO_ERR_060Nominee percentage does not sum to 100Adjust nominee percentages
BO_ERR_070Minor nominee without guardianProvide guardian details
BO_ERR_080Invalid state codeUse CDSL state code table
BO_ERR_090FATCA details incompleteProvide tax residency details
BO_ERR_100Certificate authentication failedRenew/re-register certificate
BO_ERR_110IP not whitelistedRegister IP with CDSL admin
BO_ERR_120Rate limit exceededRetry after 60 seconds
  • API submission to BO ID generation: 1-2 hours (typically under 30 minutes during market hours)
  • Best case: 5-10 minutes (during low-load periods)
  • Worst case: 4 hours (end-of-day peak, system maintenance)

4. BO Account Opening - File Upload Method

Section titled “4. BO Account Opening - File Upload Method”

The file upload method uses a fixed-length positional file format where each BO account record spans exactly 7 lines. This method is used for bulk account opening (>100 accounts/day) or as a fallback when API is unavailable.

File Naming Convention: BO_SETUP_{DPID}_{YYYYMMDD}_{SEQ}.txt Example: BO_SETUP_12345678_20260213_001.txt

Upload Method: SFTP or CDAS Web Portal upload Processing: Next working day batch (cutoff: 5:00 PM IST) Max Records Per File: 10,000

PositionLengthFieldFormatMandatoryNotes
1-22Record Type01YAlways “01” for Line 1
3-108DP IDNumericY8-digit DP ID, zero-padded
11-122Account TypeAlphaYIN/JO/CO/HU/TR/PA/MN
13-6250First NameAlphaYLeft-aligned, space-padded
63-11250Middle NameAlphaNLeft-aligned, space-padded
113-16250Last NameAlphaYLeft-aligned, space-padded
163-17210PANAlphanumericY
173-18210DOBDD/MM/YYYYY
183-1831GenderAlphaYM/F/T
184-283100Father/Husband NameAlphaYLeft-aligned, space-padded
284-2852NationalityAlphaYISO 3166-1 alpha-2
286-2872Occupation CodeNumericY01-15
288-2892Residential StatusAlphaYRI/NR/FN
290-29910Mobile NumberNumericY10-digit
300-399100EmailAlphanumericYLeft-aligned, space-padded

Total Line 01 Length: 399 characters

PositionLengthFieldFormatMandatoryNotes
1-22Record Type02YAlways “02”
3-108DP IDNumericYMust match Line 01
11-9080Corr Address Line 1AlphanumericY
91-17080Corr Address Line 2AlphaN
171-25080Corr Address Line 3AlphaN
251-30050Corr CityAlphaY
301-33030Corr StateAlphaYCDSL state code
331-3366Corr PincodeNumericY
337-3382Corr CountryAlphaY
339-3391Perm Same As CorrAlphaYY/N
340-41980Perm Address Line 1AlphanumericCond.Required if field 339 = N
420-49980Perm Address Line 2AlphaN
500-57980Perm Address Line 3AlphaN
580-62950Perm CityAlphaCond.
630-65930Perm StateAlphaCond.
660-6656Perm PincodeNumericCond.
666-6672Perm CountryAlphaCond.

Total Line 02 Length: 667 characters

PositionLengthFieldFormatMandatoryNotes
1-22Record Type03YAlways “03”
3-108DP IDNumericY
11-122Number of BanksNumericY1-5

Per Bank (up to 5, each block = 144 chars):

OffsetLengthFieldFormatNotes
+020Account NumberAlphanumericLeft-padded with zeros
+2011IFSCAlphanumeric
+319MICRNumeric000000000 if not available
+40100Bank NameAlpha
+1402Account TypeAlphaSB/CA/NR/NO
+1421PrimaryAlphaY for first bank, N for others
+1431VerifiedAlphaY (must be penny-drop verified)

Bank block positions: Bank 1 at 13-156, Bank 2 at 157-300, Bank 3 at 301-444, Bank 4 at 445-588, Bank 5 at 589-732

Total Line 03 Length: 732 characters (max, with 5 banks)

PositionLengthFieldFormatMandatoryNotes
1-22Record Type04YAlways “04”
3-108DP IDNumericY
11-111Nomination OptedAlphaYY/N
12-132Number of NomineesNumericCond.01-10, required if opted=Y

Per Nominee (up to 10, each block = 310 chars):

OffsetLengthFieldFormatNotes
+0100Nominee NameAlphaFull legal name
+1002RelationshipAlphaSP/CH/PA/SI/OT
+1026PercentageNumericFormat: 099.99 (5+decimal)
+10880AddressAlphanumericFull address
+18850CityAlpha
+23830StateAlpha
+2686PincodeNumeric
+27410DOBDD/MM/YYYY
+28410PANAlphanumericBlank if not available
+2941Is MinorAlphaY/N
+295100Guardian NameAlphaRequired if minor=Y
+39510Guardian PANAlphanumericRequired if minor=Y
+4052Guardian RelationshipAlphaRequired if minor=Y

Total Line 04 Length: variable (13 + num_nominees * 407 chars)

PositionLengthFieldFormatMandatoryNotes
1-22Record Type05YAlways “05”
3-108DP IDNumericY
11-111Auto CreditAlphaYY/N
12-121Auto PledgeAlphaNY/N; default N
13-131Auto DeliveryAlphaNY/N; default N
14-141SMS AlertAlphaYMust be Y
15-151Email AlertAlphaYMust be Y
16-172RAS FrequencyAlphaYQ1/M1

Total Line 05 Length: 17 characters

PositionLengthFieldFormatMandatoryNotes
1-22Record Type06YAlways “06”
3-108DP IDNumericY
11-122Income RangeNumericY01-06 (same as API)
13-131Politically ExposedAlphaYY/N
14-141Related to PEPAlphaYY/N
15-162Tax StatusNumericYCDSL tax status code
17-171BSDA FlagAlphaNY/N
18-192FATCA CountryAlphaCond.ISO country if foreign tax
20-3920FATCA Tax IDAlphanumericCond.Foreign TIN
40-412Country of BirthAlphaYISO country code
42-432Country of CitizenshipAlphaYISO country code
44-5714CKYC NumberNumericNIf available

Total Line 06 Length: 57 characters

PositionLengthFieldFormatMandatoryNotes
1-22Record Type07YAlways “07”
3-108DP IDNumericY
11-122POI TypeAlphaYPA/PP/DL/VI
13-3220POI NumberAlphanumericY
33-342POA TypeAlphaYAA/PP/UT/BA
35-5420POA NumberAlphanumericY
55-551IPV DoneAlphaYMust be Y
56-6510IPV DateDD/MM/YYYYY
66-672IPV ModeAlphaYVP/IP
68-681Photo AttachedAlphaYMust be Y

Total Line 07 Length: 68 characters

CDSL returns a response file within 24 hours:

Response File Name: BO_SETUP_RESP_{DPID}_{YYYYMMDD}_{SEQ}.txt

PositionLengthFieldNotes
1-1010PANClient PAN from request
11-2616BO IDAssigned BO ID (blank if rejected)
27-271StatusS=Success, R=Rejected
28-127100RemarksError description if rejected
  • Alpha fields: Left-aligned, right-padded with spaces
  • Numeric fields: Right-aligned, left-padded with zeros
  • Date fields: Always DD/MM/YYYY, no padding
  • Empty optional fields: Filled with spaces to maintain positional alignment
  • Line terminator: CRLF (\r\n) after each line
  • File encoding: ASCII / ISO 8859-1 (no Unicode)

BO ID (16 digits) = DP ID (8 digits) + Client ID (8 digits)
Example:
DP ID: 12345678 (assigned by CDSL to the DP at registration)
Client ID: 00001234 (sequential, assigned by CDSL per DP)
BO ID: 1234567800001234
RuleDetails
Total LengthExactly 16 digits, all numeric
DP IDFirst 8 digits; fixed for a given DP; assigned by CDSL
Client IDLast 8 digits; sequential within the DP; starts from 00000001
UniquenessGlobally unique across all DPs in CDSL
PermanenceOnce assigned, never reused even after account closure
DisplayOften shown as DP ID - Client ID with hyphen (e.g., 12345678-00001234)
AttributeCDSLNSDL
Total Length16 digits16 characters
FormatPure numericIN + 14 alphanumeric
DP PortionFirst 8 digitsCharacters 3-8 (6 chars)
Client PortionLast 8 digitsCharacters 9-16 (8 chars)
Example1234567800001234IN30012345678901
PrefixNoneAlways starts with “IN”

5.4 Pre-Allocated Client ID (BO ID Range Reservation)

Section titled “5.4 Pre-Allocated Client ID (BO ID Range Reservation)”

By default, CDSL auto-assigns Client IDs sequentially when a BO Setup request is processed. However, CDSL also supports pre-allocation of Client ID ranges to DPs — this is critical for printing the BO ID on the account opening form before eSign.

Standard flow (auto-assignment):
Client completes KYC → eSign account opening form → Submit BO Setup to CDSL → CDSL assigns Client ID
Form does NOT contain BO ID
(because it doesn't exist yet)

The account opening form — which includes Rights & Obligations, KYC details, nominee declarations, and DDPI consent — needs to be eSigned by the client. Ideally, this form should display the client’s demat account number (BO ID) as it is the legal document of record. But CDSL assigns the Client ID only when the BO Setup file/API is processed, which happens after eSign.

CDSL allows DPs to request a contiguous block of Client IDs in advance. The DP maintains a local pool and assigns from it before submitting to CDSL.

Pre-allocation flow:
DP requests Client ID range from CDSL (one-time setup)
CDSL reserves range: e.g., 00100001 to 00200000
For each new client:
1. DP picks next available Client ID from pool (e.g., 00100042)
2. Constructs full BO ID: {DP_ID}00100042
3. Prints BO ID on account opening form
4. Client eSigns form WITH BO ID displayed
5. DP submits BO Setup to CDSL with Client ID = 00100042 (Line 01, Position 3)
6. CDSL validates ID is within pre-allocated range → Account created
7. BO ID on eSigned form matches CDSL record exactly
AspectDetails
ContactCDSL DP Relations (dprtasupport@cdslindia.com)
WhenDuring DP registration or production onboarding
What to Request”Client ID range pre-allocation for BO account opening”
SpecifyExpected volume (e.g., 100K IDs), growth projections
CDSL AssignsContiguous range (e.g., 00100001 to 00200000)
File FormatLine 01, Position 3 (Client ID field, 8 digits) populated with pre-assigned value
APIInclude client_id in the BO Setup request payload
ReplenishmentRequest additional range before exhaustion; CDSL assigns next contiguous block
RequirementDetails
Thread-Safe CounterCentralized atomic counter (database sequence or Redis INCR) — must prevent duplicate assignment under concurrent load
PersistenceCounter must survive application restarts; persist in database
Multi-Instance SafetyIf multiple app servers, use centralized counter or partitioned sub-ranges per instance
DR / FailoverDR system must either share the same counter or use a separate pre-allocated sub-range to avoid collisions
Never ReuseA Client ID consumed from the pool is permanently used, even if BO Setup fails or is rejected
Low-Watermark AlertAlert operations team when remaining pool falls below threshold (e.g., 10% remaining)
Audit TrailLog every Client ID assignment: timestamp, applicant PAN, form generation ID

5.4.5 eSign Workflow with Pre-Allocated BO ID

Section titled “5.4.5 eSign Workflow with Pre-Allocated BO ID”
┌────────────────────────────────────────────────────────────────┐
│ ACCOUNT OPENING FLOW │
├────────────────────────────────────────────────────────────────┤
│ │
│ 1. Client completes KYC journey (screens 1-8) │
│ - PAN verified, DigiLocker done, bank verified │
│ - Nominations captured, declarations accepted │
│ │
│ 2. System assigns next Client ID from pre-allocated pool │
│ - Atomic increment of pool counter │
│ - Client ID = 00100042 │
│ - Full BO ID = {DP_ID}00100042 │
│ - Persist assignment: (PAN, Client ID, timestamp) │
│ │
│ 3. Generate account opening PDF/document │
│ - KYC Part I + Part II │
│ - Rights & Obligations │
│ - Risk Disclosure │
│ - BO ID printed: "Your Demat Account: XXXXXXXX-00100042" │
│ - DDPI consent (if opted) │
│ - Nominee details │
│ │
│ 4. Client eSigns via Aadhaar OTP (Leegality/Digio) │
│ - Document contains BO ID → legally binding reference │
│ │
│ 5. DP submits BO Setup to CDSL │
│ - Client ID = 00100042 in Line 01 / API request │
│ - CDSL validates within pre-allocated range │
│ - Account created with exact BO ID │
│ │
│ 6. Welcome communication to client │
│ - BO ID matches what was on eSigned form ✓ │
│ - No re-signing required │
│ │
└────────────────────────────────────────────────────────────────┘

If pre-allocated range is exhausted or unavailable:

ScenarioHandling
Range exhaustedSubmit BO Setup without Client ID → CDSL auto-assigns → BO ID printed on Client Master Report (not on eSigned form)
Pre-assigned ID rejectedGenerate new BO Setup with next ID from pool; if persistent failure, fall back to auto-assignment
Form re-signingIf auto-assignment is used, the eSigned form will not contain BO ID; BO ID communicated separately via welcome email/SMS

Per Master Dataset Section H:

FieldValueNotes
depository (H01)CDSLFixed for our primary depository
dp_id (H03){our_8_digit_dp_id}Our DP ID
client_id (H04){8_digit_client_id}From pre-allocated pool or CDSL response
bo_id (H05){dp_id}{client_id}Concatenation; 16 digits
account_type (H06)IN / JO / MN etc.Account classification
account_status (H07)AC / FR / CLCurrent status
client_id_source (H08)PRE_ALLOCATED / AUTO_ASSIGNEDTracks assignment mode

6. DDPI (Demat Debit and Pledge Instruction)

Section titled “6. DDPI (Demat Debit and Pledge Instruction)”
AttributeDetails
SEBI CircularSEBI/HO/MIRSD/DoP/P/CIR/2022/44 (Nov 18, 2022)
Effective DateNovember 18, 2022
ReplacesPower of Attorney (POA)
NatureOne-time authorization from BO to DP
MandatoryNo - DDPI is optional; broker cannot deny services if client declines

DDPI authorizes the DP (broker) to perform the following without per-trade TPIN+OTP:

AuthorizationCodeDescription
Settlement of tradesSETransfer securities to clearing corporation for settlement
Margin pledgingPLPledge/re-pledge securities for margin requirements
Mutual fund redemptionMFTransfer MF units for redemption/switch
Tendering sharesTNTender shares in buybacks/open offers/delisting

What DDPI does NOT cover:

  • Off-market transfers (always require separate DIS/eDIS)
  • Inter-depository transfers (CDSL to NSDL or vice versa)
  • Gift transfers
  • Any transfer to a third-party account
1. Client opts in for DDPI during account opening (or later)
|
2. Broker collects DDPI form (physical or digital)
Fields: BO ID, DP ID, holder name, authorization scope, date, signature
|
3. Broker submits DDPI to CDSL via CDAS
Endpoint: POST /v1/ddpi/register
{
"bo_id": "1234567800001234",
"dp_id": "12345678",
"holder_name": "RAKESH KUMAR",
"authorization_date": "13/02/2026",
"scope": ["SE", "PL", "MF", "TN"],
"signature_mode": "DIGITAL", // or "PHYSICAL"
"esign_reference": "ESIGN-REF-123" // if digital
}
|
4. CDSL processes DDPI registration
|
5. DDPI activated within 24 hours
Status: ACTIVE
|
6. CDSL sends confirmation to client (SMS + email)

Register DDPI:

POST /v1/ddpi/register

Check DDPI Status:

GET /v1/ddpi/status?bo_id={bo_id}
Response:
{
"bo_id": "1234567800001234",
"ddpi_status": "ACTIVE",
"scope": ["SE", "PL", "MF", "TN"],
"registration_date": "13/02/2026",
"activation_date": "14/02/2026"
}

Revoke DDPI (client-initiated only):

POST /v1/ddpi/revoke
{
"bo_id": "1234567800001234",
"revocation_reason": "CLIENT_REQUEST",
"effective_date": "15/02/2026"
}
StatusDescription
NOT_REGISTEREDDDPI not submitted for this BO
PENDINGDDPI submitted, awaiting CDSL processing
ACTIVEDDPI registered and active
REVOKEDDDPI revoked by client
SUSPENDEDDDPI suspended (regulatory/compliance reason)
ScenarioWith DDPIWithout DDPI
Sell trade settlementAutomatic debitRequires eDIS (TPIN+OTP) per trade
Margin pledgingAutomatic pledgeRequires eDIS per pledge
MF redemptionAutomaticRequires eDIS per redemption
Buyback/OFS tenderingAutomaticRequires eDIS per tender
Off-market transfereDIS required (always)eDIS required (always)

7. eDIS (Electronic Delivery Instruction Slip)

Section titled “7. eDIS (Electronic Delivery Instruction Slip)”

eDIS is the per-transaction authorization mechanism. It is used:

  • When DDPI is not set up (all debit transactions require eDIS)
  • When DDPI is set up but transaction is outside DDPI scope (e.g., off-market transfer)
  • As a fallback when DDPI is temporarily suspended
Step 1: Broker initiates transaction
Broker system calls CDSL eDIS API with transaction details
|
Step 2: CDSL generates eDIS authorization page
Returns URL for client redirection
|
Step 3: Client redirected to CDSL eDIS page
Displays: ISIN, quantity, execution date, DP ID, BO ID
|
Step 4: Client enters TPIN
6-digit PIN set by client via CDSL easi portal
|
Step 5: OTP verification
CDSL sends OTP to registered mobile + email
Client enters OTP on CDSL page
|
Step 6: eDIS authorized
CDSL returns success callback to broker
Transaction can proceed
|
Step 7: Settlement
Securities debited from BO account on settlement date
AttributeDetails
Length6 digits
Set ByClient, via CDSL easi/easiest portal
ResetClient-initiated via easi portal or CDSL helpdesk
DefaultNot pre-set; client must create before first eDIS use
ExpiryNo expiry; valid until changed by client
Attempts3 wrong attempts locks TPIN; reset via easi
Our ResponsibilityGuide client to set TPIN; we cannot set it for them

Generate eDIS:

POST /v1/edis/generate
{
"bo_id": "1234567800001234",
"dp_id": "12345678",
"transactions": [
{
"isin": "INE009A01021",
"quantity": 100,
"execution_date": "13/02/2026",
"settlement_id": "2026021300001",
"transaction_type": "SELL"
}
],
"callback_url": "https://our-broker.com/edis/callback",
"redirect_url": "https://our-broker.com/edis/complete"
}
Response:
{
"edis_request_id": "EDIS-20260213-001234",
"cdsl_redirect_url": "https://edis.cdslindia.com/auth?req=EDIS-20260213-001234",
"expiry": "2026-02-13T23:59:59+05:30",
"status": "PENDING_AUTH"
}

Check eDIS Status:

GET /v1/edis/status?request_id={edis_request_id}
Response:
{
"edis_request_id": "EDIS-20260213-001234",
"status": "AUTHORIZED", // PENDING_AUTH / AUTHORIZED / REJECTED / EXPIRED / REVOKED
"authorized_at": "2026-02-13T10:15:30+05:30",
"transactions": [
{
"isin": "INE009A01021",
"quantity": 100,
"status": "AUTHORIZED"
}
]
}

Revoke eDIS (before execution):

POST /v1/edis/revoke
{
"edis_request_id": "EDIS-20260213-001234",
"revocation_reason": "CLIENT_REQUEST"
}
StatusDescription
PENDING_AUTHeDIS generated, awaiting client TPIN+OTP
AUTHORIZEDClient has authorized; transaction can proceed
REJECTEDClient rejected or wrong TPIN/OTP
EXPIREDAuthorization window expired (end of day)
REVOKEDRevoked by client before execution
EXECUTEDSecurities debited as per authorization

CDSL sends a POST callback to callback_url after client completes or rejects:

{
"edis_request_id": "EDIS-20260213-001234",
"status": "AUTHORIZED",
"bo_id": "1234567800001234",
"timestamp": "2026-02-13T10:15:30+05:30",
"signature": "SHA256_HMAC_SIGNATURE"
}

Signature verification: HMAC-SHA256 of edis_request_id|status|bo_id|timestamp using shared secret key provided by CDSL during DP onboarding.


8.1 easi (Electronic Access to Securities Information)

Section titled “8.1 easi (Electronic Access to Securities Information)”
AttributeDetails
PurposeBasic online view access for investors (BOs)
URLhttps://easi.cdslindia.com
LoginBO ID + password (set by client)

Features for Investors:

  • View current holdings (ISIN-wise)
  • View transaction history
  • View corporate action entitlements
  • Download Consolidated Account Statement (CAS)
  • Set/reset TPIN for eDIS
  • View pledge/unpledge status
  • View nomination details

8.2 easiest (Enhanced Active Securities Information Electronic System for Trading)

Section titled “8.2 easiest (Enhanced Active Securities Information Electronic System for Trading)”
AttributeDetails
PurposeEnhanced transactional access for investors
URLhttps://easiest.cdslindia.com
LoginBO ID + password + OTP (2FA mandatory)

Additional Features over easi:

  • Submit Delivery Instructions (DIS) online
  • Create/modify/revoke pledges
  • Freeze/unfreeze accounts (partial or full)
  • Submit inter-depository transfer requests
  • Update bank details, nomination, address
  • Submit DDPI online
  • Available on Android and iOS
  • Biometric login (fingerprint/face)
  • View holdings, transactions, CAS
  • eDIS authorization via app
  • Push notifications for corporate actions

As a DP, we can:

  • Provide deep links for clients to access easi/easiest
  • Pre-populate BO ID in login redirects
  • Receive status callbacks when clients perform actions via easiest (e.g., DDPI submission)
  • Access easi/easiest admin module to view client portfolios (with authorization)

API for Holdings Query (DP-side):

GET /v1/holdings?bo_id={bo_id}&as_of_date={DD/MM/YYYY}
Response:
{
"bo_id": "1234567800001234",
"as_of_date": "13/02/2026",
"holdings": [
{
"isin": "INE009A01021",
"company_name": "INFOSYS LIMITED",
"quantity": 500,
"free_balance": 400,
"pledged_balance": 100,
"lock_in_balance": 0
}
]
}

RequirementDetails
Account TypeCO
CIN21-character Corporate Identification Number (mandatory)
PANCorporate PAN (starts with A in 4th character)
Board ResolutionUpload required: authorizing demat account opening and naming authorized signatories
Authorized SignatoriesList of individuals authorized to operate the account; each needs PAN, DIN (if director), address
MOA/AOAMemorandum and Articles of Association (copy to be maintained)
Directors ListFull list of directors with DIN, PAN, addresses
Beneficial OwnershipDeclaration of beneficial owners holding > 10% (SEBI mandate since 2024)
Operating InstructionsWho can sign: singly, jointly, any two directors, etc.

Additional API Fields for Corporate:

FieldTypeSizeMandatoryNotes
cinString21YMCA CIN
company_typeString2YPV=Private, PU=Public, OPC=One Person, SE=Section 8
date_of_incorporationString10YDD/MM/YYYY
authorized_signatory_countNumber2Y1-10
signatory_N_nameString100YPer signatory
signatory_N_panString10YPer signatory
signatory_N_dinString8Cond.If signatory is director
signatory_N_designationString50YDirector/CEO/CFO/Company Secretary/Authorized Person
operating_instructionString2YSI=Singly, JO=Jointly, EO=Either or
RequirementDetails
Account TypeHU
PANHUF PAN (separate from Karta’s individual PAN)
KartaPrimary holder; operates the account
CoparcenersNot mandatory in demat account; only Karta details required
HUF DeclarationDeclaration from Karta confirming HUF status
Karta’s PANRequired in addition to HUF PAN

Additional API Fields for HUF:

FieldTypeSizeMandatoryNotes
huf_panString10YHUF PAN
karta_nameString100Y
karta_panString10YKarta’s individual PAN
karta_dobString10YDD/MM/YYYY
huf_formation_dateString10NDD/MM/YYYY
RequirementDetails
Account TypePA
PANPartnership PAN
Partnership DeedCopy required for records
Authorized PartnersList of partners authorized to operate demat account
Registration CertificateIf registered under Partnership Act

Additional API Fields for Partnership:

FieldTypeSizeMandatoryNotes
partnership_panString10YFirm PAN
partnership_registration_noString20Cond.If registered
authorized_partner_countNumber2Y
partner_N_nameString100YPer partner
partner_N_panString10YPer partner
RequirementDetails
Account Type SuffixAccount sub-type indicates NRI status
Account Sub-TypesNRE (Non-Resident External), NRO (Non-Resident Ordinary), SNRE (Special NRE), SNRO (Special NRO)
PANIndian PAN mandatory for NRIs
PIS PermissionPortfolio Investment Scheme permission from designated bank (RBI mandate)
FEMA ComplianceInvestments subject to FEMA limits; FDI sectoral caps apply
Bank Account TypeMust match: NRE demat → NRE bank account, NRO demat → NRO bank account
RepatriationNRE = fully repatriable; NRO = restricted repatriation (up to USD 1M/year)
RBI ReportingBroker must report NRI holdings to RBI via designated bank

Additional API Fields for NRI:

FieldTypeSizeMandatoryNotes
nri_account_typeString4YNRE/NRO/SNRE/SNRO
country_of_residenceString2YISO country code
overseas_address_line1String80YAddress in country of residence
overseas_address_cityString50Y
overseas_address_countryString2Y
pis_bank_nameString100YDesignated AD bank for PIS
pis_permission_numberString30YRBI PIS permission reference
pis_permission_dateString10YDD/MM/YYYY
passport_numberString20YValid passport
passport_expiryString10YDD/MM/YYYY
RequirementDetails
Account TypeTR
Trust DeedCopy required
RegistrationTrust registration number under Indian Trusts Act / Societies Act
TrusteesDetails of all trustees; at least one authorized to operate
Beneficiary InfoNot mandatory in demat; maintained at trust level

Additional API Fields for Trust:

FieldTypeSizeMandatoryNotes
trust_panString10YTrust PAN
trust_registration_numberString30Y
trust_typeString2YPR=Private, PU=Public, CH=Charitable
trustee_countNumber2Y
trustee_N_nameString100YPer trustee
trustee_N_panString10YPer trustee
RequirementDetails
Account TypeLP (or treated as PA variant)
LLPINLLP Identification Number from MCA
Designated PartnersAt least 2, with DPIN (Designated Partner Identification Number)
LLP AgreementCopy required

Additional API Fields for LLP:

FieldTypeSizeMandatoryNotes
llpinString7YMCA LLPIN (AAB-1234 format)
designated_partner_countNumber2YMinimum 2
partner_N_nameString100Y
partner_N_dpinString8YDesignated Partner ID Number
partner_N_panString10Y
RequirementDetails
Account TypeMN
GuardianMandatory; natural guardian (parent) or court-appointed guardian
Guardian PANMandatory
Minor’s PANRequired if available (PAN is mandatory for minors aged 15+)
Minor’s DOBMandatory; determines automatic conversion trigger
Automatic ConversionAt age 18, account must be converted to individual (IN) type
TradingMinors cannot trade in F&O; equity delivery only
NominationNot applicable for minor accounts (guardian is the de-facto representative)

Additional API Fields for Minor:

FieldTypeSizeMandatoryNotes
minor_dobString10YDD/MM/YYYY
minor_panString10Cond.Required if 15+ years old
guardian_nameString100Y
guardian_panString10Y
guardian_relationshipString2YFA=Father, MO=Mother, LG=Legal Guardian
guardianship_proofString2Cond.BC=Birth Certificate, CO=Court Order

CircularDetails
SEBI/HO/MIRSD/POD-1/P/CIR/2023/193Up to 10 nominees allowed (effective Jan 2025)
SEBI circular Jun 10, 2024Simplified nomination: 3 mandatory fields (name, percentage, relationship)
DeadlineMarch 1, 2025 for existing accounts to opt-in or opt-out
RuleDetails
Maximum Nominees10
Minimum Nominees1 (if nomination opted)
Percentage AllocationMust sum to exactly 100.00%
Minor NomineeGuardian details mandatory
Opt-OutAllowed, but requires video verification + signed declaration
Change After OpeningClient can add/modify/remove nominees via easi/easiest or through DP
Joint AccountsNomination can be made for joint accounts; requires consent of all holders

10.3 Mandatory Fields Per Nominee (Post Jun 2024 Simplification)

Section titled “10.3 Mandatory Fields Per Nominee (Post Jun 2024 Simplification)”
FieldMandatoryNotes
Nominee NameYFull legal name
RelationshipYRelationship code
PercentageY0.01 to 100.00
DOBYTo determine minor status
AddressYFull address
PANNOptional (previously recommended)
MobileNOptional
EmailNOptional
1. Client indicates "I do not wish to nominate" on the application
|
2. Video verification initiated (HyperVerge/Digio VIPV)
Client records: "I, [name], BO ID [number], voluntarily opt out of nomination"
|
3. Declaration form generated (physical or e-signed)
|
4. DP submits opt-out to CDSL via API or CDAS
POST /v1/nomination/opt-out
{
"bo_id": "1234567800001234",
"declaration_date": "13/02/2026",
"video_reference": "VIPV-REF-12345",
"esign_reference": "ESIGN-REF-12345"
}
|
5. CDSL records opt-out status
|
6. Client can opt-in later at any time

10.5 Transmission of Securities (Upon Nominee Claim)

Section titled “10.5 Transmission of Securities (Upon Nominee Claim)”

When the BO passes away:

  1. Nominee(s) submit claim to DP with death certificate
  2. DP verifies nominee identity and percentage allocation
  3. Securities transferred to nominee’s demat account(s) per percentage allocation
  4. No probate/succession certificate required if valid nomination exists
  5. If no nomination and no will: legal heir determination per Indian Succession Act

Before opening a BO account, the client’s KRA status must be one of:

KRA StatusBO Opening AllowedNotes
KYC RegisteredYesMinimum requirement
KYC ValidatedYesHigher tier (post exchange validation)
Under ProcessNoWait for KRA to process
On HoldNoKRA has queries; resolve first
RejectedNoRe-submit KYC to KRA
Not FoundNoSubmit fresh KYC to KRA

Our Flow: KRA pipeline and CDSL pipeline run in parallel after checker approval (see KYC Flow Section 8). However, if KRA status is not yet Registered at the time of CDSL API submission, the CDSL API will reject with BO_ERR_020.

Mitigation: Our batch pipeline checks KRA status before submitting to CDSL. If KRA is still under process, CDSL submission is deferred and retried (see retry logic in KYC Flow Section 9).

AttributeDetails
Fieldckyc_number in BO record
Length14 digits (KIN - KYC Identification Number)
SourceCKYC registry (CERSAI)
MandatoryNot mandatory for BO opening, but must be updated once available
UpdateVia BO modification API after CKYC upload is processed

SEBI mandates that the following 6 attributes must match across KRA, Exchange (NSE/BSE), and Depository (CDSL):

#AttributeNotes
1NameExact match (as per PAN)
2PANPrimary identifier; must be identical
3AddressCorrespondence address; reasonable match
4Mobile Number10-digit; must match KRA-registered mobile
5EmailMust match KRA-registered email
6Income RangeRange code must match (01-06)

Mismatch Handling: If any attribute mismatches between KRA and CDSL, the BO account may be flagged for re-KYC. Our system should ensure all 6 attributes are synchronized before submission.


TransactionAPI EndpointMethodDescription
DematerializationPOST /v1/transaction/dematAPI + FileConvert physical certificates to electronic
RematerializationPOST /v1/transaction/rematAPI + FileConvert electronic to physical certificates
Off-Market TransferPOST /v1/transaction/offmarketAPI + FileTransfer within CDSL between two BOs
Inter-Depository TransferPOST /v1/transaction/inter-depositoryAPI + FileTransfer between CDSL and NSDL
PledgePOST /v1/transaction/pledgeAPICreate pledge on securities
UnpledgePOST /v1/transaction/unpledgeAPIRelease pledge
Invocation of PledgePOST /v1/transaction/invoke-pledgeAPIPledgee invokes pledge (margin shortfall)
FreezePOST /v1/transaction/freezeAPIFreeze securities (regulatory/client)
UnfreezePOST /v1/transaction/unfreezeAPIRelease freeze
TransmissionPOST /v1/transaction/transmissionFile + ManualTransfer to legal heir/nominee on death
POST /v1/transaction/demat
{
"bo_id": "1234567800001234",
"isin": "INE009A01021",
"company_name": "INFOSYS LIMITED",
"quantity": 100,
"certificate_numbers": ["CERT-001", "CERT-002"],
"distinctive_numbers_from": "1001",
"distinctive_numbers_to": "1100",
"folio_number": "FOLIO-12345"
}

Timeline: 15-21 working days (involves RTA verification of physical certificates)

POST /v1/transaction/offmarket
{
"transferor_bo_id": "1234567800001234",
"transferee_bo_id": "1234567800005678",
"isin": "INE009A01021",
"quantity": 100,
"consideration": "MARKET", // MARKET / OFF_MARKET / GIFT
"execution_date": "13/02/2026",
"edis_reference": "EDIS-20260213-001234" // if no DDPI
}

Timeline: Same day if submitted before 4:00 PM IST

POST /v1/transaction/inter-depository
{
"source_bo_id": "1234567800001234", // CDSL BO
"target_bo_id": "IN30012345678901", // NSDL BO
"target_depository": "NSDL",
"isin": "INE009A01021",
"quantity": 100,
"reason": "CLIENT_REQUEST"
}

Timeline: T+1 (next working day)

POST /v1/transaction/pledge
{
"pledgor_bo_id": "1234567800001234",
"pledgee_bo_id": "1234567800009999", // Clearing member BO
"isin": "INE009A01021",
"quantity": 100,
"pledge_type": "MARGIN", // MARGIN / LOAN / OTHER
"reference_number": "PLEDGE-20260213-001"
}

Timeline: Real-time (if both BOs in CDSL); T+1 for inter-depository


Endpoint:

POST /v1/bo/modify
{
"bo_id": "1234567800001234",
"modifications": {
"email": "new.email@example.com",
"mobile_number": "9876543210",
"corr_address_line1": "New Address Line 1",
"corr_city": "Mumbai",
"corr_state": "Maharashtra",
"corr_pincode": "400001"
},
"supporting_documents": ["DOC-REF-123"],
"modification_reason": "CLIENT_REQUEST"
}

The following modifications trigger a re-KYC requirement:

| Field | Re-KYC Required | KRA Update Required | Notes | |-------|----------------|--------------------|----- -| | Name | Yes | Yes | Name change requires legal documents (gazette, court order) | | PAN | Yes | Yes | PAN change/merger per NSDL/Protean process | | Address | Yes (if permanent) | Yes | Correspondence address: no re-KYC; permanent: yes | | Mobile | No | Yes | KRA OTP re-validation triggered | | Email | No | Yes | KRA email re-validation triggered | | Bank Details | No | No | Penny-drop verification required for new bank | | Income Range | No | Yes | If crossing slab boundary | | Nomination | No | No | Via separate nomination API | | FATCA Details | Yes | Yes | Tax residency change | | Residential Status | Yes | Yes | RI to NR or vice versa triggers complete re-KYC |

Prerequisites:

  1. Zero securities balance (all holdings must be transferred or sold)
  2. No pending transactions (no open pledge, pending DIS, etc.)
  3. No outstanding dues to DP
  4. Client request in writing (physical form or e-signed)

Closure Endpoint:

POST /v1/bo/close
{
"bo_id": "1234567800001234",
"closure_reason": "CLIENT_REQUEST", // CLIENT_REQUEST / DUPLICATE / REGULATORY
"closure_date": "13/02/2026",
"client_confirmation": "ESIGN-REF-789"
}

Post-Closure:

  • BO ID is marked CLOSED and cannot be reactivated
  • BO ID is never reused or reassigned
  • Records retained for minimum 8 years (SEBI mandate) plus 2 years (Limitation Act)
  • UCC-Demat mapping on exchanges must be updated (delink closed BO)
AttributeDetails
DefinitionNo transactions (debit or credit) for 12+ consecutive months
AutomaticCDSL auto-flags dormant accounts
ImpactNo impact on holdings; securities remain safe
TradingDormant BO can still receive credits (dividends, bonus); debits may require reactivation
ReactivationClient submits reactivation request to DP; DP updates via CDAS
Re-KYCRequired if dormant for 24+ months

Reactivation Endpoint:

POST /v1/bo/reactivate
{
"bo_id": "1234567800001234",
"reactivation_date": "13/02/2026",
"kyc_revalidation": "COMPLETED" // or "NOT_REQUIRED" if <24 months
}

StatusCodeDescriptionCan TradeCan Receive Credits
ActiveACNormal operational stateYesYes
SuspendedSUTemporarily suspendedNoYes (credits only)
FrozenFRAccount frozen (all or partial)NoDepends on freeze type
ClosedCLPermanently closedNoNo
DormantDOInactive for 12+ monthsLimitedYes
Under ClosureUCClosure in processNoNo
Reason CodeDescriptionInitiated ByResolution
KYC_NCKYC non-complianceCDSL (auto)Update KYC; re-validate with KRA
REG_ORDRegulatory order (SEBI/Court)SEBI/CourtComply with order; file application
DP_REQDP-initiated suspensionDPDP lifts suspension
NOM_NCNomination non-compliance (post Mar 2025 deadline)CDSL (auto)Submit nomination or opt-out
FATCA_NCFATCA/CRS non-complianceCDSLSubmit FATCA declaration
PAN_INVPAN invalidated by NSDL/ProteanCDSL (auto)Resolve PAN status with IT dept
TypeDescriptionImpact
Full FreezeAll securities frozenNo debit or credit
Partial FreezeSpecific ISINs frozenOnly frozen ISINs blocked
Debit FreezeOnly debits blockedCan receive credits but cannot transfer out
Regulatory FreezeCourt/SEBI/ED orderedRequires court order to unfreeze
BO StatusEquity DeliveryF&OIPOCorporate ActionsPledge
ActiveAllowedAllowedAllowedAuto-creditedAllowed
SuspendedBlockedBlockedBlockedCredited (held)Blocked
Frozen (Full)BlockedBlockedBlockedBlockedBlocked
Frozen (Debit)Sell blocked; Buy creditedBlockedCredits onlyCreditedBlocked
DormantMay need reactivationNeed reactivationCredits OKAuto-creditedNeed reactivation
ClosedN/AN/AN/AN/AN/A

ReportDescriptionFormatDelivery Time
Client Master ReportAll BO records under our DP IDCSV/Pipe-delimited6:00 AM IST
Holdings ReportISIN-wise holdings for all BOsCSV7:00 AM IST (T+1 data)
Transaction ReportAll transactions processed previous dayCSV7:00 AM IST
Corporate Action ReportPending/processed corporate actionsCSV8:00 AM IST
eDIS Authorization ReporteDIS created/authorized/expiredCSV6:30 AM IST
Pledge/Unpledge ReportPledge activitiesCSV7:00 AM IST
DIS ReportDelivery Instructions settledCSVAfter market close
ReportFrequencyDescription
DP Activity SummaryWeeklyTransaction volumes, new accounts, closures
Dormant Account ReportMonthlyList of accounts crossing 12-month dormancy
KYC Compliance ReportMonthlyAccounts with KYC deficiencies
FATCA Compliance ReportMonthlyAccounts requiring FATCA updates
Nomination Status ReportMonthlyAccounts without nomination/opt-out
Billing StatementMonthlyCharges, fees, transaction costs

SEBI mandates a single CAS covering holdings across CDSL + NSDL + mutual funds:

  • Generated by CDSL/NSDL jointly (SEBI MDAC mandate)
  • Sent to investors monthly (if transactions) or half-yearly (if no transactions)
  • Our system receives CAS data for reconciliation

Method 1: CDAS Web Portal

  1. Login to CDAS with DP admin credentials
  2. Navigate to Reports > Download Reports
  3. Select report type, date range
  4. Download in CSV/Excel format

Method 2: SFTP

  1. CDSL pushes daily reports to assigned SFTP directory
  2. Our batch job picks up files at 7:00 AM IST
  3. Files are parsed and loaded into our back-office system

Method 3: API

GET /v1/reports/download?type={report_type}&date={YYYY-MM-DD}
Response: File download (CSV format)

Our system must reconcile daily:

ReconciliationSource ASource BFrequency
HoldingsCDSL Holdings ReportOur back-officeDaily (T+1)
TransactionsCDSL Transaction ReportOur trade logDaily
Client MasterCDSL Client MasterOur client DBDaily
Bank DetailsCDSL BO bank detailsOur verified bank listOn change
Nominee DataCDSL nominee recordsOur nominee recordsWeekly
Pledge PositionCDSL pledge reportOur margin systemReal-time

Break Resolution: Any mismatch (break) must be investigated and resolved within T+1. Unresolved breaks >3 days must be escalated to compliance officer.


CircularDetails
ReferenceSEBI/HO/MIRSD/DOP/CIR/P/2019/136
RequirementEvery UCC (Unique Client Code) registered on an exchange must be linked to a valid demat account
PurposeEnsure settlement chain integrity; every trade settles to a verified demat account
1. Client onboarded: UCC created on NSE/BSE + BO created on CDSL
|
2. UCC-Demat Mapping submitted
Method A: Exchange portal (NSE UCI / BSE BOLT)
Method B: API
|
3. Exchange verifies:
- UCC exists and is active
- BO ID exists and is active in CDSL
- PAN matches between UCC and BO
|
4. Mapping activated
Client can now trade (trades settle to this demat)
GET /v1/ucc-mapping/verify?bo_id={bo_id}&ucc={ucc_code}&exchange={NSE/BSE}
Response:
{
"bo_id": "1234567800001234",
"ucc": "ABC12345",
"exchange": "NSE",
"mapping_status": "ACTIVE", // ACTIVE / INACTIVE / PENDING / DELINKED
"pan_match": true,
"last_verified": "2026-02-13"
}

CDSL sends automatic delinking notifications when:

  • BO account is closed or suspended
  • BO PAN is changed or invalidated
  • KYC status drops below Registered

Webhook (if configured):

{
"event": "UCC_DEMAT_DELINK",
"bo_id": "1234567800001234",
"ucc": "ABC12345",
"exchange": "NSE",
"reason": "BO_SUSPENDED",
"timestamp": "2026-02-13T10:00:00+05:30"
}

Action Required: When we receive a delink notification, our system must:

  1. Block trading for the affected UCC
  2. Notify the client
  3. Resolve the underlying issue (KYC, suspension, etc.)
  4. Re-establish mapping once resolved

LayerDetails
CertificateX.509 digital certificate issued by CDSL-approved CA
Certificate ValidityTypically 2 years; must renew before expiry
mTLSMutual TLS for all API calls
Bearer TokenJWT with 8-hour validity, obtained via cert-based auth
IP WhitelistingOnly pre-registered static IPs can access CDSL APIs
User RolesMaker, Checker, Admin, Viewer (role-based access in CDAS)
RequirementDetails
RegistrationSubmit IP addresses to CDSL via CDAS admin module
Minimum2 IPs (primary + DR)
Maximum10 IPs per DP
Change ProcessSubmit request via CDAS; activated within 24 hours
NATNAT IPs are acceptable (CDSL sees public IP)
AspectRequirement
In TransitTLS 1.2+ mandatory for all API communication
At RestAES-256 encryption for BO data stored in our system
PANStore encrypted; display masked (XXXX1234X) in UI
AadhaarStore only last 4 digits; never store full Aadhaar
Bank AccountStore encrypted; display masked in UI
TPINNever stored by DP; managed solely by CDSL

CDSL requires DPs to maintain audit trails for:

EventRetention PeriodDetails
BO Account Opening10 yearsAll fields, documents, IPV record
BO Modification10 yearsBefore/after values, who modified, when
Transaction Instructions8 yearsFull instruction details, authorization record
eDIS Authorizations8 yearsRequest, authorization, execution
DDPI Registration/Revocation10 yearsFull lifecycle
Client Communications5 yearsEmails, SMS, letters related to demat
Reconciliation Records5 yearsDaily reconciliation output
RegulationRequirement
SEBI (Depositories and Participants) Regulations 2018Primary governing regulation for DPs
SEBI Circular on Cyber Security (Jul 2024)Mandatory SOC-2 / ISO 27001 for DPs processing >1L accounts
SEBI Circular on Business Continuity (Dec 2023)DR site mandatory; RTO < 4 hours, RPO < 1 hour
SEBI Circular on Investor Grievance (ongoing)SCORES integration mandatory; resolve within 21 days
CDSL DP Operating InstructionsDetailed operational guidelines (updated periodically)
PMLA (Prevention of Money Laundering Act)AML/CFT compliance for all demat transactions

Charge TypeAmount (Approximate)Frequency
DP Annual FeeRs. 5,000 - 25,000Annual
BO Account OpeningRs. 5 - 10 per accountPer account
Transaction Charge (On-market)Rs. 3.50 per instructionPer instruction
Transaction Charge (Off-market)Rs. 5 per instructionPer instruction
Pledge CreationRs. 12 per instructionPer instruction
Inter-Depository TransferRs. 10 per instructionPer instruction
DematerializationRs. 5 per certificatePer certificate
RematerializationRs. 10 per certificate + postalPer certificate
Account ClosureNil-
CAS ChargesNil (SEBI subsidized)-

Note: Charges are subject to revision by CDSL. GST applicable at 18% on all charges.

Charge TypeTypical RangeNotes
Account OpeningRs. 0 (free)Most brokers offer free opening
Annual Maintenance Charge (AMC)Rs. 0 - 300/yearMany discount brokers: Rs. 0
Transaction (Sell)Rs. 5 - 25 per scripPer scrip per day
Pledge/UnpledgeRs. 0 - 30Per instruction
Off-Market TransferRs. 25 - 50Per instruction
Physical StatementRs. 25 - 50Per statement (electronic is free)
Failed TransactionRs. 0 - 50DP discretion

For small investors, SEBI mandates free/low-cost demat accounts:

CriterionBSDA Eligibility
Holdings ValueUp to Rs. 10 lakhs
No. of Demat AccountsOnly 1 demat across all DPs (CDSL + NSDL)
Individual OnlyOnly for individual BO (not HUF/Corporate/etc.)
AMCRs. 0 (up to Rs. 4 lakh holdings); Rs. 100 (Rs. 4-10 lakh)
Transaction ChargesSame as regular account

OperationSLABest CaseWorst Case
BO Opening (API)1-2 hours5-10 minutes4 hours
BO Opening (File)Next working daySame day (if before cutoff)T+2 (if Friday submission)
DDPI Activation24 hours4-6 hours48 hours
eDIS AuthorizationReal-timeInstant (after TPIN+OTP)N/A (client-dependent)
Off-Market TransferSame day30 minutesEnd of day
Inter-Depository TransferT+1T+1 (no faster)T+2
Dematerialization15-21 working days10 working days30 working days
Rematerialization15-30 working days15 working days45 working days
Pledge CreationReal-timeInstant30 minutes
Account Closure1-3 working daysSame day5 working days
Reactivation (Dormant)1-2 working daysSame day3 working days
BO Modification1-2 hours (API)30 minutesNext working day (file)
WindowAvailability
Market Hours (9:00 AM - 3:30 PM)Full availability
Pre-Market (7:00 AM - 9:00 AM)Available (reduced load)
Post-Market (3:30 PM - 5:00 PM)Full availability
Evening (5:00 PM - 11:00 PM)Available (batch processing)
Night (11:00 PM - 7:00 AM)Available (maintenance window possible)
WeekendsLimited (Saturday AM for maintenance; Sunday off)
HolidaysExchange holidays: limited availability

20.1 Key SEBI/CDSL Circulars Affecting Our Integration

Section titled “20.1 Key SEBI/CDSL Circulars Affecting Our Integration”
DateCircular / ReferenceSubjectImpact on Integration
Jan 7, 2026SEBI Stock Brokers Regulations 2026Replaces 1992 regulations entirelyReview all DP compliance requirements under new framework
Jan 10, 2025SEBI/HO/MIRSD/POD-1/P/CIR/2023/193Up to 10 nomineesUpdate nomination fields in BO setup API (previously 3 max)
Mar 1, 2025Nomination compliance deadlineAll existing accounts must have nomination or opt-outRun campaigns for non-compliant accounts; flag at risk of suspension
Jun 10, 2024SEBI simplified nomination circular3 mandatory fields for nominationSimplified form; fewer mandatory fields
Aug 2024SEBI dual upload mandate (KRA + CKYC)Both KRA and CKYC upload mandatoryEnsure CKYC number is populated in BO record
Jul 2024SEBI FATCA/CRS to KRAFATCA/CRS upload to KRA mandatoryInclude FATCA fields in BO setup; sync with KRA
Dec 2024SEBI distinct mobile/email circularUnique mobile and email per clientValidate at BO opening; reject duplicates
Nov 18, 2022SEBI/HO/MIRSD/DoP/P/CIR/2022/44DDPI replaces POAImplement DDPI flow; stop accepting POA
Feb 1, 2025UPI Block Mechanism mandatory for QSBsASBA-like for secondary marketMay affect settlement flow for qualifying brokers
DateUpdateImpact
2025 Q1eDIS API v2.0New endpoints for batch eDIS; enhanced callback mechanism
2025 Q2BO Setup API v3.010-nominee support; FATCA fields added
2024 Q4Enhanced reconciliation reportsNew report formats; ISIN-level detail
2024 Q3TPIN reset workflowClients can reset TPIN via easi without calling DP

21.1 Minor Turning 18 (Automatic Conversion)

Section titled “21.1 Minor Turning 18 (Automatic Conversion)”
Trigger: Minor's DOB + 18 years = today's date
|
1. CDSL system flags account for conversion
|
2. DP (us) receives notification via daily report / webhook
|
3. Action required within 30 days:
a. Obtain fresh KYC from the now-adult client
b. Client submits own PAN (if not already provided)
c. Update account type from MN to IN
d. Remove guardian linkage
e. Client sets own TPIN for eDIS
f. Client can now opt for DDPI independently
g. F&O segment activation becomes possible
|
4. If not converted within 30 days:
Account may be frozen (debit freeze)
Client must visit DP to complete conversion

Resident to NRI:

  1. Client notifies DP of change in residential status
  2. Existing demat account must be redesignated as NRO (or new NRE account opened)
  3. Bank account must be converted to NRO (or NRE opened)
  4. PIS permission from designated bank required
  5. Update KRA, CKYC, exchange UCC
  6. Some securities may face FEMA restrictions; existing F&O positions must be squared off
  7. DDPI may need re-registration under NRI rules

NRI to Resident:

  1. Client returns to India; notifies DP
  2. NRE/NRO account redesignated to Resident
  3. PIS permission surrendered
  4. Update all registrations (KRA, CKYC, Exchange, CDSL)
  5. Simpler transition than Resident to NRI
ScenarioAction
PAN correction (typo in name)Modify BO record; update KRA; exchange re-mapping
PAN merger (duplicate PANs)Retain one PAN; close BO linked to surrendered PAN; transfer holdings
PAN invalidated by IT deptBO suspended automatically; client must obtain valid PAN

21.4 Deceased Account Holder (Transmission)

Section titled “21.4 Deceased Account Holder (Transmission)”
1. Legal heir/nominee informs DP of BO holder's death
|
2. Documents required:
- Death certificate (original or notarized copy)
- If nominee exists: nominee's identity proof + demat account details
- If no nominee: succession certificate / probate / legal heir certificate
- Transmission request form
|
3. DP verifies documents
|
4. DP submits transmission request to CDSL
File-based process (not API currently)
|
5. CDSL processes transmission
Securities transferred to nominee/legal heir BO account
|
6. Timeline: 7-30 working days (depending on documentation completeness)
|
7. If multiple nominees: securities split per percentage allocation
If percentages result in fractional shares: rounded down, remainder cash-settled
AspectDetails
Maximum Holders3 (first holder, second holder, third holder)
PAN RequiredFor all holders
KYC RequiredFor all holders (each must be KRA Registered)
Operating ModeAO=Anyone or Survivor, JO=Jointly, FS=First or Survivor
NominationAllowed; requires consent of all holders
Death of First HolderAccount continues with surviving holder(s) per operating mode
Death of All HoldersTransmission to nominee/legal heir
ScenarioCDSL Behavior
Same PAN, same DPRejected with BO_ERR_010 (duplicate)
Same PAN, different DPAllowed (investor can have multiple demat accounts)
Same PAN, CDSL + NSDLAllowed (cross-depository)
BSDA checkIf BSDA requested but client already has demat elsewhere, rejected
Failure PointRecovery Action
API timeoutRetry with idempotency key; check if BO was created via query API
KRA status invalidQueue in our system; retry when KRA status updates
PAN mismatchReturn to client for name correction; re-verify PAN
Bank verification pendingQueue; submit after penny-drop completes
CDSL system downFile upload as fallback; process next working day

Corporate account opening is more complex than individual:

  • Multiple authorized signatories with individual KYC
  • Board resolution digitization and verification
  • CIN verification via MCA API
  • Beneficial ownership declaration (SEBI 2024 mandate)
  • Operating instructions matrix (singly, jointly, any two, etc.)

Recommendation: Phase 2 implementation after individual flow is stable. Use file upload initially for corporate accounts while building API integration.

22.2 FPI (Foreign Portfolio Investor) Accounts

Section titled “22.2 FPI (Foreign Portfolio Investor) Accounts”
  • Custodian model: FPIs operate through SEBI-registered custodians
  • Our DP may not directly open FPI accounts unless we have custodian capabilities
  • DDPs (Designated Depository Participants) handle FPI registrations
  • CDSL has a separate FPI module in CDAS

Recommendation: Not in scope for Phase 1. Evaluate if we plan to serve FPI clients.

  • myEasi app allows investors to manage their demat accounts
  • CDSL is expanding mobile-first features (biometric auth, eDIS via app)
  • Deep linking from our trading app to myEasi for eDIS can improve UX
  • Push notifications from CDSL app can supplement our communications

22.4 UDiFF (Unified Distilled File Formats)

Section titled “22.4 UDiFF (Unified Distilled File Formats)”
  • SEBI MDAC (Market Data Advisory Committee) mandate for standardized formats
  • ISO-tagged data types across NSDL and CDSL
  • Implementation completed March 30, 2024; old format discontinued May 15, 2024
  • Our system should support UDiFF for any file-based interactions
  • T+1 settlement is now standard (since Jan 2023)
  • T+0 (instant settlement) is being piloted for select stocks
  • Impact on eDIS: faster authorization cycles needed
  • Impact on pledge: real-time margin checks become critical
  • CDSL has piloted blockchain-based solutions for certain processes
  • e-Voting (corporate governance) already uses blockchain
  • Future: tokenized securities may change demat operations fundamentally
  • No immediate integration impact, but worth monitoring

For detailed coverage of specific CDSL topics, see these dedicated pages:

GuideTopics Covered
DDPI Deep DiveDDPI lifecycle, 4 authorization types, vs POA comparison, file format, revocation
MTF & Pledge OperationsMargin pledge, re-pledge, MTF funding, eLAS, automated release, CUSPA, file formats
BO ModificationsAddress, bank, nominee, PAN, email/mobile changes, account closure, dormancy
Integration GuideUAT/production environments, request tracking, security architecture, SEBI circulars

CodeState
ANAndaman and Nicobar Islands
APAndhra Pradesh
ARArunachal Pradesh
ASAssam
BRBihar
CHChandigarh
CGChhattisgarh
DDDadra and Nagar Haveli and Daman and Diu
DLDelhi
GAGoa
GJGujarat
HRHaryana
HPHimachal Pradesh
JKJammu and Kashmir
JHJharkhand
KAKarnataka
KLKerala
LALadakh
MPMadhya Pradesh
MHMaharashtra
MNManipur
MLMeghalaya
MZMizoram
NLNagaland
ODOdisha
PYPuducherry
PBPunjab
RJRajasthan
SKSikkim
TNTamil Nadu
TGTelangana
TRTripura
UPUttar Pradesh
UKUttarakhand
WBWest Bengal

CodeRelationship
SPSpouse
FAFather
MOMother
SOSon
DADaughter
BRBrother
SISister
GFGrandfather
GMGrandmother
GSGrandson
GDGranddaughter
CHChild
PAParent
UNUncle
AUAunt
NENephew
NINiece
COCousin
FRFriend
LGLegal Guardian
OTOther

CodeTax Status
01Individual - Resident Indian
02Individual - NRI
03HUF
04Company - Private
05Company - Public
06Partnership Firm
07Trust
08Society
09AOP/BOI
10LLP
11Government
12Local Authority
13Artificial Juridical Person
14FII/FPI

#ItemStatusNotes
1DP ID assigned by CDSLPendingApplication submitted
2Digital certificate obtainedPendingeMudhra CA
3Static IPs registered with CDSLPendingPrimary + DR IPs
4CDAS user accounts createdPendingMaker, Checker, Admin, API Service
5BO Setup API tested in sandboxPendingAll account types
6eDIS API tested in sandboxPendingGenerate, verify, revoke
7DDPI registration testedPendingRegister, status check, revoke
8File upload format validatedPending7-line format, all 10K test records
9Reconciliation reports automatedPendingDaily download + parse + compare
10UCC-Demat mapping flow testedPendingNSE + BSE mapping
11Error handling for all BO_ERR codesPendingRetry logic, alerting
12Audit trail logging implementedPendingAll CDSL operations logged
13DR site connectivity verifiedPendingFailover test
14SEBI compliance reviewPendingLegal sign-off
15Client-facing TPIN guidance docsPendingHow to set TPIN via easi
16Nomination workflow (10 nominees)PendingEnd-to-end test
17Minor account conversion workflowPendingAge-18 trigger test
18NRI account flow (NRE/NRO)PendingWith PIS linkage
19BSDA eligibility checkPendingCross-DP duplicate check
20Production certificate deploymentPendingAfter all sandbox tests pass

Appendix E: Quick Reference - API Endpoints Summary

Section titled “Appendix E: Quick Reference - API Endpoints Summary”
EndpointMethodPurpose
/v1/auth/tokenPOSTObtain JWT token
/v1/bo/setupPOSTOpen new BO account
/v1/bo/modifyPOSTModify BO details
/v1/bo/closePOSTClose BO account
/v1/bo/reactivatePOSTReactivate dormant account
/v1/bo/statusGETCheck BO account status
/v1/bo/searchGETSearch BO by PAN/name
/v1/holdingsGETQuery holdings for a BO
/v1/ddpi/registerPOSTRegister DDPI
/v1/ddpi/statusGETCheck DDPI status
/v1/ddpi/revokePOSTRevoke DDPI
/v1/edis/generatePOSTGenerate eDIS authorization
/v1/edis/statusGETCheck eDIS status
/v1/edis/revokePOSTRevoke eDIS
/v1/nomination/updatePOSTAdd/modify nominees
/v1/nomination/opt-outPOSTRecord nomination opt-out
/v1/transaction/dematPOSTDematerialization request
/v1/transaction/rematPOSTRematerialization request
/v1/transaction/offmarketPOSTOff-market transfer
/v1/transaction/inter-depositoryPOSTInter-depository transfer
/v1/transaction/pledgePOSTCreate pledge
/v1/transaction/unpledgePOSTRelease pledge
/v1/transaction/invoke-pledgePOSTInvoke pledge
/v1/transaction/freezePOSTFreeze securities
/v1/transaction/unfreezePOSTUnfreeze securities
/v1/ucc-mapping/verifyGETVerify UCC-Demat mapping
/v1/reports/downloadGETDownload reports