PUTSender eKYC (Biometric)
Initiate biometric Aadhaar eKYC to verify and upgrade a DMT sender's account.
Performs biometric Aadhaar eKYC for a DMT-Fino sender. The agent captures a live fingerprint at their terminal; the resulting PID XML and the sender's Aadhaar number are submitted here. On success an OTP is dispatched for confirmation — call Validate eKYC OTP next. A successful eKYC raises the sender's monthly limit from ₹5,000 to ₹25,000.
Biometric (PID) capture
Capture is done client-side against an RD-service device on ports 11100–11112. Supported RD services include Mantra, Morpho, SecuGen (Level 0), Precision, Startek FM220, and NEXT.
New to RDService? The
Aadhaar Biometric Authentication guide
covers the full capture flow — driver discovery, PidOptions, error codes —
for Web and Android, and includes an in-browser device tester.
The captured PidData XML uses these parameters:
<PidOptions ver="1.0"><Opts fCount="1" fType="2" pidVer="2.0" timeout="10000" env="P" wadh="E0jzJ/P8UopUHAieZn8CKqS4WPMi5ZSYXgfnlfkWjrc=" /></PidOptions>
When generating the PID block with custom code, you must include the
wadh value above alongside fCount and fType. Validate the device
response's errCode before submitting.
- DMT (Fino) — Send Money — Full Fino DMT money-transfer flow: look up the sender, onboard and biometric-eKYC them if new, pick or add the recipient, then send an OTP-verified transfer.
Request
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
customer_id | string | required | Sender's 10-digit mobile number.e.g. 9123456789 |
customer_idstringRequiredSender's 10-digit mobile number.
example: 9123456789
Body parameters
| Field | Type | Required | Description |
|---|---|---|---|
initiator_id | string | required | Registered mobile number of the API user (see Platform Credentials).e.g. 9962981729 |
client_ref_id | string | optional | Unique reference ID per API call, generated by your system (max 20 characters).e.g. 2026010100123456789 |
aadhar | string | required | 12-digit Aadhaar number of the sender.e.g. 234567890123 |
piddata | string | required | XML-encoded biometric PID data captured from a certified biometric device (fingerprint scanner).e.g. <PidData><Resp errCode="0" errInfo="Capture Success" .../></PidData> |
initiator_idstringRequiredRegistered mobile number of the API user (see Platform Credentials).
example: 9962981729
client_ref_idstringoptionalUnique reference ID per API call, generated by your system (max 20 characters).
example: 2026010100123456789
aadharstringRequired12-digit Aadhaar number of the sender.
example: 234567890123
piddatastringRequiredXML-encoded biometric PID data captured from a certified biometric device (fingerprint scanner).
example: <PidData><Resp errCode="0" errInfo="Capture Success" .../></PidData>
These headers authenticate and sign every request. See How Auth Works for details.
| Field | Type | Required | Description |
|---|---|---|---|
developer_key | string | required | Static API key issued to your account after KYC. |
secret-key | string | required | Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key))). |
secret-key-timestamp | string | required | Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time. |
content-type | string | required | application/jsone.g. application/json |
developer_keystringRequiredStatic API key issued to your account after KYC.
secret-keystringRequiredDynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key))).
secret-key-timestampstringRequiredCurrent time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time.
content-typestringRequiredapplication/json
example: application/json
Response types
| response_type_id | Meaning | Next step |
|---|---|---|
2129 | OTP sent — proceed to Validate eKYC OTP | Validate eKYC OTP |
Responses
2129OTP sent — proceed to Validate eKYC OTPNext:Validate eKYC OTP
statusnumberPrimary success indicator (0 = success).
messagestringHuman-readable response / error message.
response_status_idnumberGranular status id; see the shared error-codes table.
response_type_idnumberA unique id for every possible response shape (success or error) — useful for client logic branching and analytics.
dataobjectAPI-specific response payload.
user_codestringAgent user code associated with the KYC request.
intent_idstringReserved intent identifier (empty in the standard flow).
kyc_request_idstringUnique identifier for this KYC request. Required for the Validate eKYC OTP step.
otp_ref_idstringReference ID for the OTP sent to the sender's Aadhaar-linked mobile. Required for the Validate eKYC OTP step.
Next steps
NextPUTValidate eKYC OTPConfirm sender eKYC by verifying the OTP sent to the Aadhaar-linked mobile.Related
- Domestic Money Transfer (DMT) — details & pricingFeatures, plans and pricing for this product.
- Integrate using AIBuild agent-native integrations with MCP, SDKs and packs.
- Integrate using an SDKBrowse guides and the full developer documentation.
- Aadhaar Biometric Authentication (RDService) guideHow to capture the PID block from a fingerprint scanner on Web or Android.