Skip to content

Leegality


Leegality is an Indian document infrastructure platform providing e-Sign, e-Stamp, document automation, and digital contracting services. The platform is operated by Grey Swift Private Limited (CIN: U74999HR2016PTC066380), headquartered in Gurugram, Haryana.

Founded: 2016 Founders: Sapan Parekh, Shivam Singla, Prakhar Agrawal Funding: $6.63M across 3 rounds (latest: $5M Series A, October 2022) Scale: 55M+ eSigns processed, 33M+ documents, 5.2M+ stamps digitized (as of 2025) Clients: 1,500+ Indian businesses across BFSI, lending, insurance, real estate

ProductDescription
Aadhaar eSignOTP-based and biometric electronic signatures via CCA-compliant ESPs
DSC Token SigningDigital Signature Certificate-based signing using hardware tokens
Virtual SignNon-Aadhaar electronic acknowledgement via OTP + signature pad
QuickSignOTP-less digital acknowledgement for non-critical documents
Fingerprint eSignBiometric signing via fingerprint capture devices
Doc SignerOrganizational Document Signer Certificate for automated broker-side signing
BharatStampDigital stamp paper procurement across 25+ Indian states
Document AssemblyTemplate engine with dynamic field injection and conditional sections
ConsentinDPDP (Digital Personal Data Protection) Act compliance platform
Verifier APIPost-signing verification for tampering detection and certificate validation
ConcernLeegality’s Value
Stock broker-specific use caseDedicated use case page; supports KYC, DDPI, demat opening, sub-broker agreements
Single OTP ceremonyCustomer signs all documents (KYC + AOF + DDPI + RDD) with one Aadhaar OTP in a 4-touch process
ESP redundancyDual Aadhaar eSign connections — NSDL (primary) and eMudhra (backup); auto-switch on downtime
80% less downtimeAuto-Switch to best ESP, fallbacks for OTP and biometrics, Non-Aadhaar Routing
e-Stamp integrationBuilt-in BharatStamp for DDPI stamp duty (DDPI requires stamping per SEBI circular)
Pay-per-successCharges only for successful eSigns; failed eSign = zero cost
Fraud preventionFace Match, Geofencing, Smart Liveliness, Verifier API built into signing flow
API 3.0 (Smart API)Workflow-based API; configure once in dashboard, pass Workflow ID in API; no code changes for config updates
WhatsApp PingsSend signing links, reminders, and signed PDFs via WhatsApp (high open rates vs SMS/email)
SEBI complianceExplicit support for SEBI DDPI digitization, Section 65B audit trail
Zero license feeBasic plan includes Aadhaar eSign, Digital Stamping, and API Access at zero license fee

Leegality serves stock brokers, banks, NBFCs, insurance companies, and fintechs. IIFL Finance is a publicly known enterprise client (engaged Consentin for DPDP compliance, Sep 2025). Specific broker client names should be confirmed during vendor evaluation.

ResourceURL
Main Websitehttps://www.leegality.com
Stock Broker Use Casehttps://www.leegality.com/stock-brokers
API Documentationhttps://docs.leegality.com
API 3.0 JSON Schemahttps://github.com/prakharmittal/leegality-apidocs/blob/master/api_3_0.json
Knowledge Basehttps://knowledge.leegality.com
Support Portalhttps://support.leegality.com
Digital Stampinghttps://www.leegality.com/digital-stamping
Legal Primerhttps://www.leegality.com/legalprimer
DDPI FAQshttps://www.leegality.com/blog/sebi-ddpi
Verifier Toolhttps://verifier.leegality.com

FeatureAadhaar eSign (OTP)Aadhaar eSign (Biometric)DSC TokenVirtual SignQuickSignFingerprint eSign
Legal basisIT Act 2000, Schedule IIIT Act 2000, Schedule IIIT Act 2000, Section 3IT Act 2000, Section 10AIT Act 2000, Section 10AIT Act 2000, Section 10A
Legal equivalenceEquivalent to wet-inkEquivalent to wet-inkEquivalent to wet-inkContractual validityContractual validityContractual validity
AuthenticationAadhaar number + OTPAadhaar number + fingerprint/irisHardware token + PINPhone/email OTP + signature padNo OTP; digital acknowledgementFingerprint + OTP
Requires AadhaarYes (linked to mobile)Yes (biometric device needed)No (CA-issued certificate)NoNoYes (for authentication)
SEBI acceptanceYes (primary for KYC)YesYes (for entities)For non-mandatory docs onlyFor acknowledgements onlyNot yet SEBI-prescribed
Cost~Rs.25/sign~Rs.30/signFree (token cost upfront)~Rs.5/sign~Rs.2/sign~Rs.15/sign
Use in our flowPrimary for customer signingFallback for OTP issuesBroker-side signing (Doc Signer)NRI/non-Aadhaar fallbackRDD acknowledgementField office operations
Device neededMobile phoneBiometric device (Mantra MFS-100)USB tokenMobile phoneMobile phoneMantra MFS-100

This is the primary signing method for individual customer onboarding.

How it works:

  1. Customer enters 12-digit Aadhaar number (or last 4 digits if Aadhaar retrieved via DigiLocker)
  2. UIDAI sends OTP to Aadhaar-linked mobile number
  3. Customer enters OTP
  4. ESP (NSDL or eMudhra) authenticates via UIDAI, generates DSC
  5. CAdES-compliant digital signature applied to document hash
  6. Signed PDF returned with embedded DSC

Regulatory chain:

Customer --> Leegality (ASP) --> NSDL/eMudhra (ESP) --> UIDAI --> OTP --> Authenticate
|
v
Certifying Authority (CA)
|
v
Issue DSC --> Apply to document hash
|
v
CAdES-compliant signed PDF

Key constraint: Aadhaar must be linked to an active Indian mobile number. NRIs with Indian Aadhaar + Indian mobile can use this. NRIs without Indian mobile must use DSC or Virtual Sign fallback.

2.3 DSC Token Signing (For Non-Individuals and Broker-Side)

Section titled “2.3 DSC Token Signing (For Non-Individuals and Broker-Side)”

DSC (Digital Signature Certificate) tokens are USB devices issued by Certifying Authorities after KYC verification. Used by:

  • Company directors for entity account opening
  • Chartered Accountants for MCA filings
  • Broker organizations for automated document countersigning via Doc Signer

Doc Signer Certificate (broker-side):

  • Organizational DSC installed on broker’s server
  • Qualifies as Special Purpose Certificate under CCA Interoperability Guidelines
  • Issued after thorough organizational KYC
  • Private key remains on broker’s server (exclusive control)
  • Auto-signs documents within 20 seconds of all other signers completing

Leegality’s Secure Virtual Signature is a non-Aadhaar electronic authentication mechanism:

  1. Signer receives OTP on registered phone or email
  2. Signer authenticates by entering OTP
  3. Signer affixes representation of signature on virtual pad
  4. System captures authentication trail

Use cases for broking:

  • Signer’s Aadhaar not linked to mobile
  • NRI without Indian mobile
  • Cheaper alternative for non-mandatory documents
  • Supplementary signatures on internal broker documents

Legal validity: Valid under Section 10A of IT Act (electronic contracts). Not equivalent to Schedule II eSign for SEBI-mandatory documents. Use only where SEBI does not explicitly require Aadhaar eSign.


CircularReferenceRelevance
SEBI KYC Master CircularSEBI/HO/MIRSD/MIRSD-SEC-2/P/CIR/2023/168 (Oct 2023)Aadhaar eSign accepted in lieu of wet signature on KYC documents
SEBI Stock Brokers MasterSEBI/HO/MIRSD/MIRSD-PoD/P/CIR/2025/90 (Jun 2025)eSign provisions for account opening documents
SEBI DDPI CircularSEBI/HO/MIRSD/DoP/CIR/P/2022/51 (Apr 2022)DDPI can be digitally signed; replaces POA; requires stamping
SEBI eKYC NotificationSEBI/HO/MIRSD/DOP/CIR/P/2020/73 (Apr 2020)eSign + Video KYC for end-to-end digital onboarding
IT Act 2000, Section 5Central legislationElectronic signatures given legal recognition
e-Authentication GuidelinesCCA, MeitY (May 2019)Regulatory framework for Aadhaar eSign operations
Gazette NotificationGSR 61(E) (Jan 2015)Aadhaar eSign added to Schedule II of IT Act
DocumenteSign RequiredStamp DutyNotes
KYC Form (Part I - CERSAI)Yes — Aadhaar eSignNoIdentity + address attestation
KYC Form (Part II - Intermediary)Yes — Aadhaar eSignNoTrading preferences, segments, income
Account Opening Form (AOF)Yes — Aadhaar eSignNoTrading account agreement
DDPI AuthorizationYes — Aadhaar eSignYes (varies by state)Replaced POA since Nov 2022; stamp duty mandatory
Risk Disclosure Document (RDD)Acknowledgement sufficientNoCustomer must read; QuickSign or Virtual Sign acceptable
Tariff/Brokerage ScheduleAcknowledgement sufficientNoFee structure acknowledgement
Nomination FormYes — Aadhaar eSignNoUp to 10 nominees (since Jan 2025)
Nomination Opt-Out DeclarationYes — Aadhaar eSignNoRequires video verification per SEBI
Running Account AuthorizationYes — Aadhaar eSignNoQuarterly/monthly settlement preference
Rights & ObligationsAcknowledgement sufficientNoCustomer must read before signing
MANDATORY (Aadhaar eSign required by SEBI):
- KYC application (Part I + Part II)
- Account Opening Form
- DDPI authorization (+ stamp duty)
- Nomination form / Nomination opt-out
ACKNOWLEDGEMENT ONLY (QuickSign or Virtual Sign acceptable):
- Risk Disclosure Document
- Tariff/Brokerage schedule
- Rights & Obligations document
- Policies and Procedures document
BROKER-SIDE (Doc Signer / organizational DSC):
- Broker's countersignature on agreements
- Contract notes (daily)
- Compliance certificates

SEBI permits a single Aadhaar OTP to sign multiple documents in one session. Our approach:

  1. Generate all mandatory documents as a single combined PDF (KYC Part I + Part II + AOF + DDPI + Nomination)
  2. Customer reviews the combined document
  3. Single Aadhaar OTP signs the entire package
  4. Acknowledgement documents (RDD, Tariff, R&O) collected via QuickSign in same session
  5. Broker countersigns via Doc Signer Certificate (automated, within 20 seconds)

This maps to the “4-touch process” referenced in Leegality’s stock broker documentation:

  • Touch 1: Customer enters Aadhaar number
  • Touch 2: Customer enters OTP
  • Touch 3: Customer confirms signature placement
  • Touch 4: Submission complete

Leegality uses API 3.0 (Smart API) which is workflow-driven. All signing configurations are saved in the Leegality Dashboard as “Workflows”. The API call only needs:

  1. Workflow ID (pre-configured in dashboard)
  2. Variable parameters (signer details, document data)

This means changes to signing configuration (number of signers, stamp paper, verification options) require zero code changes — only dashboard updates.

ParameterDescription
HeaderX-Auth-Token: <your_auth_token>
SourceObtained from API Settings tab in Leegality Dashboard
IP WhitelistOptional; configure allowed IPs in API Settings
Webhook VerificationHMAC-SHA1 on documentId using Private Salt from API Settings
POST /api/v3.0/document/create
Content-Type: application/json
X-Auth-Token: <auth_token>
EnvironmentBase URLPurpose
Sandbox / UAThttps://sandbox.leegality.comIntegration testing (contact Leegality for sandbox credentials)
Productionhttps://app.leegality.comLive signing operations

Note: Sandbox credentials and specific base URLs should be confirmed during vendor onboarding. The GitHub API docs reference https://contract-backend-dev.legistrak.com for development endpoints.

Based on the API 3.0 JSON schema (https://github.com/prakharmittal/leegality-apidocs/blob/master/api_3_0.json):

EndpointMethodDescription
/api/v3.0/document/createPOSTUpload document + create signing invitation
/api/v3.0/document/{documentId}GETGet document details, status, signer info
/api/v3.0/document/{documentId}/downloadGETDownload signed PDF
/api/v3.0/document/{documentId}/audit-trailGETDownload Secure Audit Trail
/api/v3.0/document/{documentId}/deleteDELETEDelete/cancel unsigned document
/api/v3.0/documents/searchGETSearch documents by filters
/api/stamp-integration/get-stamp-shcilGETRetrieve e-Stamp from organization wallet

4.5 Document Create (Primary Integration Point)

Section titled “4.5 Document Create (Primary Integration Point)”

Request:

{
"workflowId": "WF_KYC_INDIVIDUAL_V1",
"file": {
"name": "KYC_Application_ABCDE1234F.pdf",
"contentType": "application/pdf",
"content": "<base64_encoded_pdf>"
},
"signers": [
{
"name": "Rahul Sharma",
"email": "rahul.sharma@example.com",
"phone": "+919876543210",
"signerType": "AADHAAR_ESIGN",
"signerPosition": {
"page": 12,
"x": 100,
"y": 650,
"width": 200,
"height": 50
},
"fields": {
"pan": "ABCDE1234F",
"applicationId": "APP-20260213-001"
}
}
],
"stamp": {
"required": true,
"state": "Maharashtra",
"denomination": 500,
"purpose": "DDPI Authorization"
},
"callbackUrl": "https://kyc.ourbroker.com/api/webhooks/leegality",
"redirectUrl": "https://kyc.ourbroker.com/application/{applicationId}/esign-complete",
"expiryDays": 7,
"customMessage": "Please sign your KYC application for account opening with Our Broker.",
"metadata": {
"applicationId": "APP-20260213-001",
"panNumber": "ABCDE1234F",
"stage": "KYC_ESIGN"
}
}

Key fields:

FieldTypeRequiredDescription
workflowIdstringYesPre-configured workflow ID from Leegality Dashboard
file.contentstringYesBase64-encoded PDF document
file.namestringYesFilename for identification
signers[]arrayYesArray of signer objects
signers[].signerTypestringYesAADHAAR_ESIGN, DSC, VIRTUAL_SIGN, QUICK_SIGN
signers[].phonestringYesSigner’s mobile number (for signing link delivery)
signers[].emailstringNoSigner’s email (for signing link delivery)
signers[].signerPositionobjectYesSignature placement coordinates on PDF (page, x, y, width, height)
stampobjectNoRequired only for DDPI and stamped agreements
stamp.statestringConditionalState for stamp duty (e.g., “Maharashtra”, “Karnataka”)
stamp.denominationnumberConditionalStamp value in INR
callbackUrlstringYesWebhook URL for signing events
redirectUrlstringNoURL to redirect customer after signing ceremony
expiryDaysnumberNoSigning link expiry (default varies by plan)
metadataobjectNoCustom key-value pairs returned in webhooks

Response (Success):

{
"status": "success",
"data": {
"documentId": "DOC-xxxx-xxxx-xxxx",
"signingUrl": "https://app.leegality.com/sign/xxxx-xxxx",
"signers": [
{
"signerId": "SGN-xxxx",
"name": "Rahul Sharma",
"status": "PENDING",
"signingUrl": "https://app.leegality.com/sign/xxxx-yyyy"
}
],
"createdAt": "2026-02-13T10:30:00Z",
"expiresAt": "2026-02-20T10:30:00Z"
}
}

Request:

GET /api/v3.0/document/DOC-xxxx-xxxx-xxxx
X-Auth-Token: <auth_token>

Response:

{
"status": "success",
"data": {
"documentId": "DOC-xxxx-xxxx-xxxx",
"documentStatus": "SIGNED",
"signers": [
{
"signerId": "SGN-xxxx",
"name": "Rahul Sharma",
"status": "SIGNED",
"signedAt": "2026-02-13T10:35:22Z",
"signMethod": "AADHAAR_ESIGN",
"espProvider": "NSDL",
"certificateDetails": {
"serialNumber": "xxxx",
"issuer": "NSDL e-Governance Infrastructure Limited",
"validFrom": "2026-02-13T10:35:22Z",
"validTo": "2026-02-13T10:35:22Z",
"signerName": "RAHUL SHARMA"
}
}
],
"auditTrail": {
"available": true,
"downloadUrl": "/api/v3.0/document/DOC-xxxx/audit-trail"
},
"stampDetails": {
"stampId": "SHCIL-xxxx",
"state": "Maharashtra",
"denomination": 500,
"defacementId": "DEF-xxxx"
}
}
}
GET /api/v3.0/document/DOC-xxxx-xxxx-xxxx/download
X-Auth-Token: <auth_token>
Response: Binary PDF (application/pdf)
Content-Disposition: attachment; filename="KYC_Application_ABCDE1234F_signed.pdf"
ApproachWhen to Use
Webhooks (recommended)Primary method. Leegality pushes events to your callbackUrl
Status PollingFallback if webhook delivery fails. Poll GET /document/{id} with exponential backoff
Redirect URLCustomer-facing; redirects browser after signing ceremony completes

Polling strategy (fallback only):

Initial: Poll at T+30s after signing link sent
Then: Exponential backoff: 30s, 60s, 120s, 240s, 480s
Max: Poll every 10 minutes until expiry
Timeout: Stop polling after document expiry (7 days default)

#DocumentSource TemplateDynamic FieldseSign TypeStamp Required
1KYC Form Part I (CERSAI)SEBI prescribed formatName, PAN, DOB, Address, Photo, Aadhaar detailsAadhaar eSignNo
2KYC Form Part II (Broker)Broker’s templateSegments, income, bank details, nominee, DP preferencesAadhaar eSignNo
3Account Opening FormBroker’s templateAll KYC data + trading preferencesAadhaar eSignNo
4DDPI AuthorizationSEBI prescribed formatClient name, BO ID, broker detailsAadhaar eSignYes
5Risk Disclosure DocumentExchange prescribedClient name, dateQuickSignNo
6Tariff/Brokerage ScheduleBroker’s templatePlan details, chargesQuickSignNo
7Nomination FormSEBI prescribedNominee name, relationship, share %, guardian if minorAadhaar eSignNo
8Nomination Opt-OutSEBI prescribedClient declarationAadhaar eSignNo
9Running Account AuthorizationBroker’s templateSettlement frequency preferenceAadhaar eSignNo
10Rights & ObligationsExchange prescribedClient name, dateQuickSignNo

For our 9-screen KYC flow, we generate documents as follows:

COMBINED PDF (signed with single Aadhaar OTP):
Page 1-4: KYC Part I (CERSAI format)
Page 5-8: KYC Part II (trading details)
Page 9-11: Account Opening Form
Page 12-14: DDPI Authorization (with stamp paper affixed)
Page 15-16: Nomination Form
Page 17: Running Account Authorization
SEPARATE ACKNOWLEDGEMENTS (QuickSign):
Doc A: Risk Disclosure Document
Doc B: Rights & Obligations
Doc C: Tariff/Brokerage Schedule

5.3 Field Mapping: KYC Master Dataset to Document Templates

Section titled “5.3 Field Mapping: KYC Master Dataset to Document Templates”
Template SectionMaster Dataset FieldsField IDs
Personal DetailsFull name, father’s name, DOB, genderA01-A04, A05-A08, A15, A18, A20
PAN DetailsPAN number, PAN statusA09, R01
AddressFull address, city, state, PINB01-B08
ContactMobile, emailC01-C04
Bank AccountBank name, branch, IFSC, a/c numberF01-F10
SegmentsCash, F&O, commodity, currencyG01-G08
IncomeAnnual income bracketH01-H02
NomineeNominee name, relationship, shareL01-L15
DDPIClient name, BO ID, broker TM codeCustom fields

Cross-reference: See Master Dataset for complete field specifications.


6.1 End-to-End Flow (Screen 9 of KYC Journey)

Section titled “6.1 End-to-End Flow (Screen 9 of KYC Journey)”
┌──────────────────────────────────────────────────────────────────────┐
│ SCREEN 9: Review + Face Match + e-Sign │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ Step 1: DOCUMENT GENERATION (our backend) │
│ ├── Collect all data from Screens 1-8 │
│ ├── Generate combined PDF from templates │
│ ├── Affix stamp paper for DDPI (via Leegality BharatStamp API) │
│ └── Upload PDF to Leegality via Document Create API │
│ └── Returns: documentId + signingUrl │
│ │
│ Step 2: FACE MATCH (HyperVerge) [before signing] │
│ ├── Customer takes selfie │
│ ├── Match against Aadhaar photo from DigiLocker │
│ └── Threshold: >= 80% match + liveness pass │
│ │
│ Step 3: SIGNING CEREMONY (Leegality) │
│ ├── Embed signing URL in iframe / redirect to signing page │
│ ├── Customer reviews document pages │
│ ├── Touch 1: Customer enters Aadhaar number │
│ ├── Touch 2: Customer enters OTP (sent by UIDAI) │
│ ├── Touch 3: Customer confirms signature placement │
│ ├── Touch 4: Submission complete │
│ └── Leegality fires webhook: document.signed │
│ │
│ Step 4: ACKNOWLEDGEMENTS (Leegality QuickSign) │
│ ├── RDD, R&O, Tariff schedule shown │
│ └── Customer acknowledges (no OTP needed) │
│ │
│ Step 5: BROKER COUNTERSIGN (Leegality Doc Signer) │
│ ├── Automated within 20 seconds │
│ └── Organizational DSC applied to combined document │
│ │
│ Step 6: POST-SIGNING │
│ ├── Download signed PDF + Audit Trail from Leegality │
│ ├── Store in our document management system │
│ ├── Send signed PDF to customer via WhatsApp/email │
│ └── Update application status: GATE_CHECK --> e_SIGNED │
│ │
│ Time: ~60 seconds total (per KYC Flow timing) │
└──────────────────────────────────────────────────────────────────────┘
ModeDescriptionRecommended For
RedirectCustomer redirected to Leegality’s hosted signing page, then back to redirectUrlSimple integration; good for mobile web
Iframe EmbedSigning page loaded in iframe within our applicationSeamless UX; customer stays in our app
SDK / API-drivenFull API control over signing flowMaximum customization; requires more dev effort
WhatsAppSigning link sent via WhatsApp PingsAsync signing; customer completes later
SMS/EmailTraditional signing link deliveryFallback delivery channel

Our recommended approach: Iframe Embed for web application, Redirect for mobile app. This keeps the customer within our KYC flow while leveraging Leegality’s signing UX.

ChannelMethodOpen RateDrop-off
In-app (iframe/redirect)Direct embed on Screen 9100%Lowest
WhatsApp PingsLeegality sends via WhatsApp APIVery highLow
SMSLeegality sends SMS with linkMediumMedium
EmailLeegality sends email with linkLowHigh

For our KYC flow, the signing happens in-app on Screen 9, so link delivery via SMS/WhatsApp/email is not needed for the primary flow. These channels are useful for:

  • Retry scenarios (customer abandons Screen 9 and returns later)
  • Multi-signatory flows (non-individual accounts)
  • Sending signed PDF copy to customer after completion
ConfigurationDefaultOur Setting
Link expiry7 days24 hours (for real-time KYC; abandoned sessions expire quickly)
Auto-reminderConfigurable1 reminder at T+4 hours if not signed
Max retriesNo limit3 OTP attempts, then fallback to Virtual Sign

Leegality’s Template Engine allows pre-filling of digital PDF templates with data before they are sent for signing:

FeatureDescription
Pre-fill fieldsInject customer data (name, PAN, address) from KYC database into PDF form fields
Document AssemblyCombine multiple templates into single document
Conditional sectionsShow/hide sections based on data (e.g., F&O risk disclosure only if F&O segment selected)
Signature positioningDefine exact coordinates (page, x, y, width, height) for signature placement
Template versioningMaintain versions; deploy new templates without code changes
Data linkingAssociate documents with application IDs for easy retrieval

7.2 Template Configuration for Our Documents

Section titled “7.2 Template Configuration for Our Documents”
DocumentTemplate FormatDynamic FieldsConditional Sections
KYC Part ICERSAI prescribed PDFName, PAN, DOB, gender, address, photoNone (fixed format)
KYC Part IICustom HTML-to-PDFSegments, income, bank, trading preferencesF&O section if futures selected; Commodity section if commodity selected
DDPISEBI format PDFClient name, BO ID, broker TM code, dateNone (fixed format)
NominationSEBI formatUp to 10 nominee blocksAdditional nominee blocks based on count
RDDExchange formatClient name, dateF&O risk only if F&O selected; Commodity risk only if commodity selected

Approach A: Generate PDF ourselves, upload to Leegality for signing only

  • We generate the complete PDF using our own template engine (HTML-to-PDF)
  • Upload the pre-filled PDF to Leegality
  • Leegality handles only the signing ceremony
  • More control over document layout
  • Recommended for our architecture

Approach B: Use Leegality’s Template Engine for generation + signing

  • Define templates in Leegality Dashboard
  • Pass data fields via API; Leegality generates and signs
  • Less code on our side
  • Less control over layout; dependency on Leegality for template changes

For our combined PDF, signature placement coordinates:

{
"signerPositions": [
{
"label": "KYC Part I Signature",
"page": 4,
"x": 350,
"y": 680,
"width": 200,
"height": 50
},
{
"label": "KYC Part II Signature",
"page": 8,
"x": 350,
"y": 680,
"width": 200,
"height": 50
},
{
"label": "DDPI Signature",
"page": 14,
"x": 350,
"y": 680,
"width": 200,
"height": 50
},
{
"label": "Nomination Signature",
"page": 16,
"x": 350,
"y": 680,
"width": 200,
"height": 50
}
]
}

Note: Exact coordinates will be determined during template design. All positions refer to the single Aadhaar OTP signing ceremony; the customer authenticates once and the signature is applied at all defined positions.


The DDPI authorization requires stamping per SEBI circular SEBI/HO/MIRSD/DoP/CIR/P/2022/51. Unlike other KYC documents, simple eSign is not sufficient for DDPI — it must be both signed AND stamped.

“The DDPI shall also be adequately stamped.” — SEBI DDPI Circular

BharatStamp is Leegality’s digital stamping network:

FeatureDetail
Coverage25+ Indian states and Union Territories
ProcurementLeegality procures stamp papers from authorized vendors nationwide
DefacementUnique ID generated, stamp paper defaced and tied to electronic document
Dynamic StampingStamp value calculated as percentage (ad-valorem) or fixed amount
ComplianceFully compliant with Indian Stamp Act, 1899 and state stamp acts
IntegrationCombined e-Stamp + e-Sign in single API flow
Scale5.2M+ stamps digitized; 400+ businesses using BharatStamp
Step 1: Our backend determines stamp duty requirement
├── Document type: DDPI
├── Customer's state: From address (field B06)
└── Stamp denomination: Look up state-specific rate
Step 2: Request stamp via Leegality API
├── Include stamp.state and stamp.denomination in Document Create request
└── Leegality procures from SHCIL or state stamp vendor
Step 3: Leegality affixes stamp
├── Stamp paper defaced with unique ID
├── Defaced stamp affixed to DDPI pages of combined PDF
└── Document ready for signing
Step 4: Combined e-Stamp + e-Sign
├── Customer signs the stamped document
└── Both stamp and signature in single ceremony

SHCIL (Stock Holding Corporation of India Limited) is the central e-Stamp agency:

DetailValue
API endpointhttps://contract-backend-dev.legistrak.com/api/stamp-integration/get-stamp-shcil
AuthenticationX-Auth-Token (Leegality token)
FunctionRetrieve e-Stamp from organization’s pre-funded stamp wallet
WalletPre-fund wallet with Leegality; stamps drawn from wallet per transaction

8.5 Stamp Duty Rates for Broker Agreements (Major States)

Section titled “8.5 Stamp Duty Rates for Broker Agreements (Major States)”

Stamp duty for DDPI / Power of Attorney type instruments varies by state. The rates below are indicative and must be verified against current state stamp acts:

StateInstrument TypeStamp Duty (Indicative)Notes
MaharashtraAuthority/Power of AttorneyRs.500 flatFor non-commercial POA-equivalent
KarnatakaAuthority/Power of AttorneyRs.500 flatFixed rate
DelhiAuthority/Power of AttorneyRs.100 flatLower rate
Tamil NaduAuthority/Power of AttorneyRs.100-500Depends on instrument classification
GujaratAuthority/Power of AttorneyRs.100-500Depends on instrument classification
TelanganaAuthority/Power of AttorneyRs.500 flatFixed rate
RajasthanAuthority/Power of AttorneyRs.100-500Variable
Uttar PradeshAuthority/Power of AttorneyRs.100 flatLower rate

Important: Stamp duty rates change. Always consult your legal counsel and the relevant state stamp act. Leegality can advise on current rates during integration.

Implementation note: Our system determines the customer’s state from field B06 (state in address) and passes the appropriate stamp denomination to Leegality. The stamp cost is typically borne by the broker, not the customer.


Entity TypeWho SignsSigning MethodAdditional Requirements
IndividualAccount holderAadhaar eSign (OTP)Standard flow
CompanyAuthorized signatory(ies)DSC Token or Aadhaar eSignBoard resolution appointing signatories
HUFKartaAadhaar eSignHUF deed, Karta declaration
PartnershipAll partners or authorized partnerAadhaar eSign per partnerPartnership deed, authority letter
TrustTrustee(s)DSC or Aadhaar eSignTrust deed, trustee resolution
NRIAccount holderAadhaar eSign (if Indian mobile) or DSCPIS permission letter, NRE/NRO bank a/c proof

Leegality supports multiple signers on a single document:

Sequential signing (ordered):

Signer 1 (Partner A) signs first
--> Signer 2 (Partner B) signs second
--> Signer 3 (Authorized Rep) signs third
--> Doc Signer (Broker) auto-signs last

Parallel signing (any order):

Signer 1 (Partner A) \
Signer 2 (Partner B) } -- All sign independently in any order
Signer 3 (Partner C) /
--> Doc Signer (Broker) auto-signs after all complete

Configuration: Set signing order in Workflow Builder. The workflow saves the configuration for number of signatories and their sequence.

ScenarioSolution
NRI with Indian Aadhaar + Indian mobileStandard Aadhaar OTP eSign works
NRI with Indian Aadhaar but no Indian mobileCannot use Aadhaar OTP; use DSC Token or Virtual Sign
NRI without AadhaarMust use DSC Token (physical signing at Indian consulate or via video verification)
OCI/PIO holderSame as NRI; depends on Aadhaar availability

Fallback for NRIs: Virtual Sign (OTP to email + signature pad). While not Schedule II equivalent, SEBI circulars do not explicitly prohibit this for NRI account opening. Confirm with compliance team.

9.4 Board Resolution / Authority Verification

Section titled “9.4 Board Resolution / Authority Verification”

For non-individual accounts, before triggering eSign:

  1. Upload board resolution / partnership deed / trust deed as supporting document
  2. Verify authorized signatory names match the eSign invitees
  3. Cross-reference signatory PAN with entity records
  4. Store authority documents alongside signed KYC documents

EventTriggerAction in Our System
document.createdDocument uploaded and signing invitation createdLog creation; start monitoring
document.viewedSigner opened the document for reviewUpdate UI: “Customer is reviewing documents”
document.signedAll signers have signedDownload signed PDF; update status to e_SIGNED
document.partially_signedSome signers signed (multi-signatory)Track per-signer progress
document.rejectedSigner explicitly rejectedAlert ops team; allow retry
document.expiredSigning link expired without completionSend reminder or generate new link
document.failedeSign failed (ESP error, UIDAI down)Trigger fallback flow
{
"event": "document.signed",
"documentId": "DOC-xxxx-xxxx-xxxx",
"timestamp": "2026-02-13T10:35:22Z",
"data": {
"documentStatus": "SIGNED",
"signers": [
{
"signerId": "SGN-xxxx",
"name": "RAHUL SHARMA",
"status": "SIGNED",
"signedAt": "2026-02-13T10:35:22Z",
"signMethod": "AADHAAR_ESIGN",
"espProvider": "NSDL",
"ipAddress": "103.x.x.x",
"geoLocation": {
"latitude": 19.0760,
"longitude": 72.8777
}
}
],
"stampDetails": {
"stampId": "SHCIL-xxxx",
"state": "Maharashtra",
"denomination": 500
}
},
"metadata": {
"applicationId": "APP-20260213-001",
"panNumber": "ABCDE1234F",
"stage": "KYC_ESIGN"
},
"mac": "a1b2c3d4e5f6..."
}

Leegality signs webhook payloads using HMAC-SHA1. Verify every webhook to prevent spoofing:

import hmac
import hashlib
def verify_leegality_webhook(document_id: str, received_mac: str, private_salt: str) -> bool:
"""
Verify Leegality webhook HMAC.
The MAC is calculated by applying HMAC-SHA1 on documentId
with the Private Salt from API Settings.
"""
calculated_mac = hmac.new(
private_salt.encode('utf-8'),
document_id.encode('utf-8'),
hashlib.sha1
).hexdigest()
return hmac.compare_digest(calculated_mac, received_mac)
AttemptDelayNotes
1stImmediateFirst delivery attempt
2nd5 minutesAuto-retry on HTTP 4xx/5xx or timeout
3rd30 minutesSecond retry
4th2 hoursThird retry
5th12 hoursFinal retry
After 5thStopsManual re-trigger via Leegality dashboard, or use polling fallback

Our webhook endpoint requirements:

  • Respond with HTTP 200 within 5 seconds
  • Idempotent: handle duplicate deliveries gracefully (use documentId as dedup key)
  • Log all payloads for audit trail

┌─────────────────┐
│ Leegality Vault │
│ (Cloud Storage) │
│ │
│ - Signed PDFs │
│ - Audit Trails │
│ - Stamp records │
└───────┬───────────┘
Download via API
┌───────▼───────────┐
│ Our Document │
│ Management System │
│ │
│ - S3 / blob store │
│ - Mapped to Q02 │
│ - 8+ year retain │
└───────────────────┘
ArtifactSourceFormatMaster Dataset FieldRetention
Signed Combined PDFLeegality Download APIPDF (CAdES-signed)Q02 (e-Sign document)8 years after account closure
Secure Audit TrailLeegality Audit Trail APIPDF (digitally signed by Leegality)Q03 (Audit trail)Same as signed PDF
e-Stamp CertificateLeegality Stamp APIPart of signed PDFEmbedded in DDPI pagesSame as signed PDF
Acknowledgement PDFsLeegality QuickSignPDFQ04 (Acknowledgements)5 years minimum
Signing metadataWebhook payloadJSONR-section fieldsSame as signed PDF

Leegality’s Secure Audit Trail captures:

Data PointDescription
Signer identityName as per Aadhaar (from UIDAI authentication)
TimestampExact date and time of signature (ISO 8601)
IP addressSigner’s IP address at time of signing
GeolocationGPS coordinates (if geofencing enabled)
Device infoBrowser, OS, device type
OTP verificationUIDAI authentication result
Document hashSHA-256 hash of document at time of signing
Certificate detailsDSC serial number, issuer, validity period
ESP providerNSDL or eMudhra (whichever processed the transaction)

The audit trail PDF is digitally signed by Leegality, giving it a presumption of non-tampering under the IT Act. No separate Section 65B certificate is needed from Leegality — the digitally signed audit trail serves as evidence.

OperationExpected Time
Download signed PDF< 2 seconds
Download audit trail< 2 seconds
Search documents by metadata< 5 seconds
Bulk exportContact Leegality for batch download

Per SEBI and PMLA requirements:

Document Type Retention Period
───────────────── ──────────────────────────────
KYC records 8 years after account closure
Signed documents 8 years after account closure
Audit trails 8 years after account closure
e-Stamp certificates 8 years after account closure
DDPI authorization Lifetime of account + 8 years
Transaction records 8 years from date of transaction

After downloading from Leegality, store in our blob storage (S3 or equivalent) with:

  • Encryption at rest (AES-256)
  • Version control
  • Access logging
  • Immutable storage (WORM) for compliance

12.1 Where eSign Fits in the 9-Screen Journey

Section titled “12.1 Where eSign Fits in the 9-Screen Journey”

Per KYC Flow:

Screen 1: Mobile + OTP
Screen 2: PAN Entry + DigiLocker
Screen 3: DigiLocker Consent (Aadhaar XML + PAN)
Screen 4: Personal Details Review
Screen 5: Bank Account + Penny Drop
Screen 6: Segments + Income
Screen 7: Nominations
Screen 8: Declarations + BLOCKING GATE
└── All async checks (PAN, KRA, CKYC, AML, Bank) must pass
Screen 9: Review + Face Match + e-Sign <-- LEEGALITY INTEGRATION HERE
T=0 User reaches Screen 9
T+1s Backend: Generate combined PDF
├── Pull all data from Screens 1-8
├── Render HTML templates to PDF
└── Include DDPI stamp requirement
T+3s Backend: Call Leegality Document Create API
├── Upload combined PDF
├── Set signer details (name, phone, email from C01-C04)
├── Set signature positions
├── Set stamp requirements (state from B06)
└── Receive documentId + signingUrl
T+5s Frontend: Face Match (HyperVerge)
├── Customer takes selfie
├── Match vs Aadhaar photo (from DigiLocker Q01)
└── Pass/Fail (threshold >= 80%)
T+10s Frontend: Load signing ceremony
├── Embed signingUrl in iframe
├── Customer reviews document
├── Enters Aadhaar number
└── Enters OTP
T+50s Leegality: Signing complete
├── Webhook: document.signed --> our backend
├── Backend: Download signed PDF
├── Backend: Download audit trail
└── Backend: Store in document management system
T+55s Frontend: QuickSign for acknowledgements
├── RDD, R&O, Tariff shown
└── Customer acknowledges (no OTP)
T+60s Backend: Doc Signer auto-countersign
├── Broker's organizational DSC applied
└── Final signed document ready
T+65s Backend: Update application status
├── Status: GATE_CHECK --> e_SIGNED
├── Queue for maker-checker review
└── Send signed PDF to customer (WhatsApp/email)

Before reaching Screen 9 (eSign), the Blocking Gate (Screen 8) must verify:

#CheckVendorPass CriteriaPer
1PAN VerifiedDecentroStatus = E (valid)Decentro.md
2KRA StatusDigioNot RejectedKYC Flow Section 5
3CKYC DownloadedDecentroSearch successfulKYC Flow Section 5
4AML ClearTrackWizzNo matches / false positive clearedKYC Flow Section 5
5Bank VerifiedDecentroPenny drop success + name match >= 70%Decentro.md

If any check fails, the customer cannot proceed to eSign. This follows the principle: “Fail fast, fail gracefully. If blocking check fails, stop user before e-Sign. Don’t waste their time.”

After successful eSign, the following batch processes are triggered:

eSign Complete
├── Immediate: Store signed PDF (Q02) in document management
├── Immediate: Store audit trail (Q03)
├── Immediate: Send signed PDF to customer
├── Queued: KRA Upload (signed KYC form to CVL/NDML/DOTEX)
├── Queued: CKYC Upload (signed form to CERSAI)
├── Queued: UCC Registration (NSE/BSE/MCX)
├── Queued: BO Account Opening (CDSL/NSDL)
└── Maker-Checker Review
├── Checker verifies all documents
├── Approves or returns for correction
└── On approval: activate trading account

ComponentCost (Indicative)Notes
Platform license feeRs.0Zero license fee on Basic plan
Aadhaar eSign (OTP)~Rs.20-25 per signatureVolume-dependent; per successful sign only
Virtual Sign~Rs.3-5 per signatureCheaper alternative
QuickSign~Rs.1-2 per acknowledgementFor non-critical documents
Doc Signer (organizational)Included in planAfter DSC setup
e-Stamp (BharatStamp)Stamp duty + procurement feeStamp duty varies by state; procurement fee ~Rs.50-100
WhatsApp PingsAdditional per-message costContact Leegality for WhatsApp pricing
Face Match (add-on)~Rs.3-5 per matchWe use HyperVerge separately; may skip Leegality’s
Geofencing (add-on)Included in higher plansGPS capture during signing
API accessIncludedAll plans include API access
ItemCountUnit CostTotal
Aadhaar eSign (combined KYC doc)1Rs.25Rs.25
QuickSign (RDD + R&O + Tariff)3Rs.2Rs.6
e-Stamp for DDPI1Rs.50 (procurement) + Rs.500 (stamp duty avg)Rs.550
Doc Signer (broker countersign)1Rs.0Rs.0
Total per individual onboarding~Rs.581
Total without DDPI stamp~Rs.31

Note: Stamp duty cost (Rs.500 avg) is the dominant cost. If DDPI is optional (customer opts out), eSign cost drops to ~Rs.31 per onboarding.

Leegality offers volume-based pricing. Indicative tiers:

Monthly VolumeAadhaar eSign RateNotes
< 1,000~Rs.25/signStandard rate
1,000 - 10,000~Rs.18-22/signVolume discount
10,000 - 50,000~Rs.12-18/signEnterprise negotiation
> 50,000~Rs.8-15/signCustom enterprise pricing

Actual rates should be negotiated directly with Leegality based on projected volumes.

VendorAadhaar eSign Coste-StampIntegration EffortKey Difference
Leegality~Rs.25/signBuilt-in (BharatStamp)<2 days (Smart API)Workflow-based API; dual ESP; stock broker focus
Digio~Rs.15-25/signNot built-in (separate integration)2-3 daysBroader KYC suite (also does KRA, DigiLocker)
Setu eSign~Rs.15-20/signNot available2-3 daysSetu ecosystem (AA, RPD); acquired by Pine Labs
Protean (NSDL)~Rs.5.90/signNot built-in5-7 days (older API)Cheapest per-sign; direct from CA; less features
eMudhra~Rs.8-15/signSeparate5-7 daysSAP/Oracle connectors; enterprise focus
SignDesk~Rs.20-30/signAvailable3-5 daysDocument workflow focus

ScenarioCauseHandling
OTP delayedUIDAI congestion, telecom delayAllow 2-minute wait; “Resend OTP” button triggers retry
OTP not received (3 attempts)Mobile number mismatch with Aadhaar, telecom blockShow error: “OTP could not be delivered. Please ensure your Aadhaar is linked to your current mobile number.” Offer Virtual Sign fallback
UIDAI service downPlanned/unplanned maintenanceLeegality Auto-Switch redirects to backup ESP (eMudhra). If both ESPs down, show “eSign service temporarily unavailable” with retry timer
ScenarioHandling
Customer abandons mid-signingSigning link remains active until expiry (24 hours in our config). Send WhatsApp reminder at T+4 hours
Link expired before signingGenerate new document and signing link. Old document auto-cancelled
Customer returns after expiryRe-enter from Screen 9. Regenerate PDF (data may have changed)
ScenarioHandling
Partner A signed, Partner B has notTrack per-signer status via document.partially_signed webhook. Send reminder to Partner B
One signer rejectsDocument status becomes REJECTED. All signers must start over
Signer order violation (sequential)Leegality enforces sequence; Signer B cannot sign before Signer A
ScenarioHandling
Aadhaar registered with old mobileCustomer must visit nearest Aadhaar center to update mobile, OR use DSC/Virtual Sign fallback
Aadhaar-mobile link suspendedSame as above. Show message with Aadhaar update center link
Non-Aadhaar RoutingLeegality can auto-route to Virtual Sign if Aadhaar eSign fails (configurable in Workflow)

Fingerprint eSign requires Mantra MFS-100 device. If unavailable:

  • Fall back to Aadhaar OTP eSign (default for digital journeys)
  • Fingerprint eSign is primarily for field office / branch operations
ScenarioLeegality Response
NSDL ESP downAuto-Switch to eMudhra backup CA
eMudhra backup also downNon-Aadhaar Routing to Virtual Sign (if configured)
Both ESPs + Virtual Sign downShow “eSign service temporarily unavailable. Please try again later.” Retry after 15 minutes
Planned UIDAI maintenanceLeegality may provide advance notice. Block eSign during maintenance window
LayerMechanism
PDF signatureCAdES digital signature embedded in PDF. Any modification after signing invalidates the signature
Verifier APIPOST-signing verification API checks signature certificate, signer identity, tampering
Secure Audit TrailDigitally signed by Leegality; independent proof of signing event
SHA-256 hashDocument hash at time of signing recorded in audit trail
ScenarioSupport
Indian citizen abroad (with Indian mobile)Aadhaar OTP works if international roaming is active and SMS is received
NRI with Indian Aadhaar but no Indian SIMCannot use OTP eSign. Use DSC Token or Virtual Sign
Foreign national (no Aadhaar)Not applicable for individual KYC (Aadhaar/PAN required for Indian broking)

FeatureLeegalityDigioSetu eSignSignDeskProtean (NSDL)
Aadhaar eSign (OTP)YesYesYesYesYes (direct CA)
Aadhaar eSign (Biometric)YesYesNoYesYes
DSC TokenYesYesNoYesNo
Virtual SignYesNoNoYesNo
QuickSign (OTP-less)YesNoNoNoNo
Fingerprint eSignYesNoNoNoNo
Doc Signer (Org DSC)YesYesNoNoNo
e-Stamp (BharatStamp)Yes (25+ states)NoNoYesNo
Face MatchYes (built-in)Yes (separate)NoNoNo
GeofencingYesNoNoNoNo
Smart LivelinessYesNoNoNoNo
WhatsApp PingsYesNoNoNoNo
Dual ESP (auto-switch)Yes (NSDL + eMudhra)Single ESPSingle ESPSingle ESPN/A (is the ESP)
Non-Aadhaar RoutingYesNoNoNoN/A
Verifier APIYesNoNoNoNo
Section 65B ComplianceYes (digitally signed audit trail)YesBasicYesBasic
Template EngineYesBasicNoYesNo
DPDP Compliance (Consentin)YesNoNoNoNo
Workflow BuilderYes (API 3.0)NoNoNoNo
Stock Broker Use CaseDedicated page + flowGeneral BFSIGeneralGeneralGeneral
KRA IntegrationNoYesNoNoNo
DigiLockerNoYesNoNoNo
CKYCNoYes (via partner)NoNoNo
Per-Sign Cost~Rs.25~Rs.15-25~Rs.15-20~Rs.20-30~Rs.5.90
License FeeRs.0VariesRs.0VariesRs.0
Integration Time<2 days2-3 days2-3 days3-5 days5-7 days
Scale (eSigns processed)55M+Higher (670% revenue of Leegality)GrowingMediumVery high

Primary: Leegality — Chosen for our KYC system because:

  1. Dedicated stock broker use case with DDPI support
  2. Built-in e-Stamp (BharatStamp) — critical for DDPI which requires stamping
  3. Dual ESP auto-switch minimizes downtime
  4. Smart API 3.0 (workflow-based) means faster integration and easier maintenance
  5. QuickSign for acknowledgement documents reduces cost
  6. Comprehensive fraud prevention (Face Match, Geofencing, Verifier API)
  7. Zero license fee + pay-per-success model

Alternative: Digio — Already in our stack for KRA, DigiLocker, and CKYC. Could consolidate eSign under Digio to reduce vendor count. However:

  • No built-in e-Stamp (separate integration needed for DDPI)
  • Single ESP (no auto-switch on downtime)
  • No QuickSign equivalent (every document needs full eSign)
  • Lacks stock broker-specific features

Backup: Protean (NSDL) — Cheapest at Rs.5.90/sign but:

  • Minimal feature set (no templates, no stamp, no workflow)
  • Older API design; longer integration time
  • No fraud prevention add-ons

RegulationLeegality Compliance
IT Act 2000, Section 5Electronic signatures given legal recognition; Aadhaar eSign recognized under Schedule II
IT Act 2000, Section 10AElectronic contracts valid (Virtual Sign, QuickSign)
CCA FrameworkLeegality operates under CCA (Controller of Certifying Authorities, MeitY) regulatory framework
ESP EmpanelmentLeegality’s parent Grey Swift Pvt Ltd is registered ASP (Application Service Provider) with NSDL ESP
Certifying AuthoritiesPartners: NSDL, Verasys, CDSL, CDAC via NeSL
Indian Evidence ActDigitally signed audit trail enjoys presumption of non-tampering; Section 65B compliance
SEBI KYC CircularseSign accepted for all KYC and account opening documents
SEBI DDPI CircularExplicit DDPI digitization support with mandatory stamping
DPDP Act 2023Consentin platform for consent management compliance
PMLAAudit trail meets customer due diligence record-keeping requirements
Controller of Certifying Authorities (CCA)
└── MeitY, Government of India
├── Licensed ESPs (eSign Service Providers):
│ ├── NSDL e-Governance (primary)
│ └── C-DAC
├── Licensed Certifying Authorities (CAs):
│ ├── NSDL
│ ├── eMudhra
│ ├── Verasys
│ ├── CDSL
│ └── C-DAC via NeSL
└── Registered ASPs (Application Service Providers):
└── Grey Swift Private Limited (Leegality)
└── Registered with NSDL ESP

Important: Leegality itself is NOT an ESP or CA. It is an ASP empanelled with ESPs. The actual DSC is issued by the Certifying Authority (NSDL, eMudhra, Verasys). Leegality facilitates the signing ceremony and document management.

LayerImplementation
Data in transitTLS 1.2+ encryption for all API communications
Data at restAES-256 encryption for stored documents
Aadhaar dataLeegality does NOT store Aadhaar numbers; authentication happens at UIDAI via ESP
Document accessAPI token + optional IP whitelisting
Webhook securityHMAC-SHA1 verification on all callbacks
Audit loggingAll API calls logged with timestamps; accessible via dashboard
Penetration testingPeriodic security audits (confirm schedule during vendor evaluation)

The signed PDF contains:

PDF Document
└── Digital Signature (CAdES-B or CAdES-T)
├── SignedInfo
│ ├── Document hash (SHA-256)
│ └── Signing algorithm (RSA-2048 or higher)
├── SignatureValue (encrypted hash)
├── KeyInfo
│ ├── Signer's public key
│ └── Certificate chain (CA --> Intermediate --> End entity)
└── SignedProperties
├── Signing time
├── Signer's certificate reference
└── Signature policy reference

Any modification to the PDF after signing invalidates the digital signature. This is verifiable:

  • Using Adobe Acrobat’s built-in signature validation
  • Using Leegality’s Verifier tool (https://verifier.leegality.com)
  • Using Leegality’s Verifier API (programmatic)
RequirementHow We Meet It
Signed KYC documents on demandDownload from our storage or Leegality vault within seconds
Audit trail for each signatureLeegality Secure Audit Trail with IP, timestamp, geolocation, device info
Proof of customer consentAadhaar OTP authentication = customer actively consented
Document integrityCAdES digital signature; any tampering detectable
Stamp duty complianceBharatStamp records with defacement ID and stamp certificate
Retention compliance8+ years in encrypted immutable storage
Section 65B certificateLeegality’s digitally signed audit trail serves as evidence; additional 65B certificate can be obtained from Leegality/CAs if needed in court proceedings

Section titled “17.1 eSign-Related SEBI Circulars (2024-2026)”
DateCircularImpact on eSign
Jan 2025Nomination changesUp to 10 nominees allowed; nomination opt-out requires video verification. eSign needed for each nominee form
Jun 2025SEBI Stock Brokers Master CircularSEBI/HO/MIRSD/MIRSD-PoD/P/CIR/2025/90 consolidates all stock broker requirements including eSign provisions
Jan 2026SEBI Stock Brokers Regulations 2026Replaces 1992 regulations entirely. eSign provisions continue; digital onboarding remains valid
Jun 2025NPCI e-KYC SetuAadhaar eKYC without AUA/KUA license (SEBI allowed). Does not change eSign requirements but changes how Aadhaar data is fetched
Feb 2025UPI Block Mechanism (mandatory for QSBs)No direct impact on eSign, but affects overall onboarding flow
DateUpdateImpact
May 2019e-Authentication GuidelinesCurrent framework under which Aadhaar eSign operates
Jan 2015GSR 61(E)Aadhaar eSign added to IT Act Schedule II (still current)
OngoingESP empanelmentNSDL and C-DAC remain the only two ESPs. No new ESPs announced

The Digital Personal Data Protection Act 2023 impacts how we collect, store, and process customer data including eSign-related data:

RequirementOur Approach
Consent for data processingLeegality’s Consentin platform available; integrate consent collection before eSign
Data minimizationLeegality does not store Aadhaar numbers (only authenticates via UIDAI)
Right to erasureSigned documents are legal records with retention requirements; exempt from erasure for regulatory compliance
Data localizationLeegality servers in India; signed documents stored in India

#ItemOwnerStatus
1Sign commercial agreement with Leegality (Grey Swift Pvt Ltd)Legal + Procurement[ ]
2Obtain Leegality dashboard credentialsLeegality account manager[ ]
3Obtain API Auth Token from API Settings tabEngineering[ ]
4Obtain Private Salt for webhook HMAC verificationEngineering[ ]
5Configure IP whitelist (production servers)Engineering + DevOps[ ]
6Set up sandbox/UAT environment credentialsLeegality[ ]
7Define Workflow in Dashboard: Individual KYC eSignProduct + Engineering[ ]
8Define Workflow in Dashboard: DDPI eSign + StampProduct + Engineering[ ]
9Define Workflow in Dashboard: Non-Individual eSignProduct + Engineering[ ]
10Define Workflow in Dashboard: QuickSign for RDD/R&OProduct + Engineering[ ]
11Set up Doc Signer Certificate for broker countersignCompliance + Leegality[ ]
12Pre-fund BharatStamp wallet for DDPI stamp dutyFinance + Leegality[ ]
#ItemOwnerStatus
13Design KYC Part I template (CERSAI format)Product + Legal[ ]
14Design KYC Part II template (broker-specific)Product + Legal[ ]
15Design Account Opening Form templateProduct + Legal[ ]
16Design DDPI template (SEBI format)Product + Legal[ ]
17Design Nomination form templateProduct + Legal[ ]
18Determine signature placement coordinates for combined PDFEngineering[ ]
19Test PDF generation with sample dataQA[ ]
#ItemOwnerStatus
20Implement Document Create API callBackend Engineering[ ]
21Implement Webhook receiver endpointBackend Engineering[ ]
22Implement HMAC verification on webhooksBackend Engineering[ ]
23Implement Document Download (signed PDF)Backend Engineering[ ]
24Implement Audit Trail DownloadBackend Engineering[ ]
25Implement iframe/redirect signing integrationFrontend Engineering[ ]
26Implement QuickSign for acknowledgement documentsFrontend Engineering[ ]
27Implement status polling (fallback for webhooks)Backend Engineering[ ]
28Implement retry logic for failed eSignsBackend Engineering[ ]
29Implement Doc Signer auto-countersign triggerBackend Engineering[ ]
#ItemOwnerStatus
30Test Aadhaar OTP eSign end-to-end in sandboxQA[ ]
31Test DDPI with e-Stamp in sandboxQA[ ]
32Test webhook delivery and HMAC verificationQA[ ]
33Test ESP failover (NSDL to eMudhra auto-switch)QA + Leegality[ ]
34Test signing link expiry and reminder flowQA[ ]
35Test multi-signatory flow (non-individual)QA[ ]
36Test QuickSign for acknowledgement documentsQA[ ]
37Test Doc Signer auto-countersignQA[ ]
38Test signed PDF download and verificationQA[ ]
39Test edge cases: OTP failure, abandonment, expiryQA[ ]
40Load test: concurrent signing requestsQA + DevOps[ ]
#ItemOwnerStatus
41Switch from sandbox to production environmentEngineering + DevOps[ ]
42Verify production webhook URL is accessibleDevOps[ ]
43Verify production IP whitelistDevOps[ ]
44Fund BharatStamp production walletFinance[ ]
45Pilot with internal test accounts (10-20 users)QA + Compliance[ ]
46Pilot with real customers (50-100 users)Operations[ ]
47Monitor success rates, latency, failure reasonsEngineering + Ops[ ]
48Full production rolloutAll teams[ ]
#ItemOwnerFrequency
49Monitor eSign success rate (target: >95%)Ops + EngineeringDaily
50Monitor ESP uptime and auto-switch eventsEngineeringDaily
51Review failed eSigns and root causesOpsWeekly
52Replenish BharatStamp walletFinanceMonthly
53Review Leegality invoices vs actual usageFinanceMonthly
54Check for SEBI circular updates affecting eSignComplianceQuarterly
55Review and update templates if regulation changesProduct + LegalAs needed
56Leegality API version upgradesEngineeringAs released

Common error scenarios based on Leegality support documentation:

Error CodeDescriptionResolution
ESP_EDD002ESP service error (NSDL/eMudhra)Auto-retry; if persistent, check ESP status on Leegality dashboard
AUTH_INVALIDInvalid or expired Auth TokenRegenerate token from API Settings
SIGNER_NOT_FOUNDSigner details mismatchVerify signer phone/email matches invitation
OTP_EXPIREDOTP expired (typically 10 minutes)Customer must request new OTP
OTP_INVALIDWrong OTP enteredAllow retry (max 3 attempts)
UIDAI_DOWNUIDAI authentication service unavailableLeegality auto-switches ESP; if both down, retry after 15 min
DOC_EXPIREDSigning link expiredCreate new document and signing invitation
STAMP_INSUFFICIENTInsufficient balance in stamp walletReplenish BharatStamp wallet
IP_NOT_WHITELISTEDAPI call from non-whitelisted IPAdd IP to whitelist in API Settings

TermDefinition
ASPApplication Service Provider — entity that provides eSign interface to end users (Leegality/Grey Swift)
ESPeSign Service Provider — entity authorized by CCA to facilitate Aadhaar eSign (NSDL, C-DAC)
CACertifying Authority — entity authorized to issue Digital Signature Certificates (NSDL, eMudhra, Verasys)
CCAController of Certifying Authorities — apex regulatory body under MeitY
DSCDigital Signature Certificate — cryptographic certificate for digital signing
CAdESCMS Advanced Electronic Signatures — signature format standard (RFC 5126)
DDPIDemat Debit and Pledge Instruction — replaced POA for stock broker operations
SHCILStock Holding Corporation of India Limited — central e-Stamp agency
BharatStampLeegality’s digital stamping product covering 25+ Indian states
Doc SignerOrganizational DSC for automated broker-side signing
QuickSignOTP-less digital acknowledgement for non-critical documents
Virtual SignNon-Aadhaar electronic signature via OTP + signature pad
Secure Audit TrailDigitally signed log of all signing events (IP, timestamp, device, geolocation)
Verifier APIPost-signing API to detect tampering and verify signer identity

Appendix C: Data Mapping to Master Dataset

Section titled “Appendix C: Data Mapping to Master Dataset”
Leegality Response FieldMaster Dataset FieldField IDSection
data.documentStatusesign_statusR20R: Third-Party Results
data.signers[].signedAtesign_timestampR21R: Third-Party Results
data.signers[].signMethodesign_methodR22R: Third-Party Results
data.signers[].espProvideresign_espR23R: Third-Party Results
data.signers[].certificateDetails.serialNumberesign_cert_serialR24R: Third-Party Results
data.signers[].certificateDetails.issueresign_cert_issuerR25R: Third-Party Results
data.stampDetails.stampIdestamp_idR26R: Third-Party Results
data.stampDetails.stateestamp_stateR27R: Third-Party Results
data.stampDetails.denominationestamp_denominationR28R: Third-Party Results
Signed PDF (binary)e-Sign documentQ02Q: Documents
Audit Trail PDF (binary)Audit trail documentQ03Q: Documents
metadata.applicationIdapplication_idAA01AA: System

Cross-reference: See Master Dataset for complete field specifications (field IDs R20-R28 should be added if not present).