POSTAePS Cash Withdrawal
Withdraw cash from any Aadhaar-linked bank account using biometric fingerprint authentication — no card or PIN required.
Allows a customer to withdraw cash from their bank account at an agent/BC point by providing their Aadhaar number and a live fingerprint scan. The agent's biometric device captures a PID XML blob which is passed verbatim to this API. The customer's Aadhaar is RSA-encrypted before transmission. Requires the agent to have completed AePS Fingpay activation, OTP-based eKYC, and the daily 2FA authentication for the current day.
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
customer_id | string | required | Customer's registered mobile number.e.g. 9876543210 |
customer_idstringRequiredCustomer's registered mobile number.
example: 9876543210
Body parameters
| Field | Type | Required | Description |
|---|---|---|---|
initiator_id | string | required | Registered mobile number of the API user (see Platform Credentials).e.g. 9962981729 |
user_code | string | required | User code of the retailer/agent the service is run for.e.g. 20810200 |
client_ref_id | string | optional | Unique reference id per API call, generated by your system.e.g. REQ-20260101-001 |
bank_code | string | required | Bank IIN/IFS code identifying the customer's bank. Obtain from the bank list API.e.g. 607153 |
amount | number | required | Withdrawal amount in Indian Rupees (integer). Must be greater than 0 for cash withdrawal.e.g. 1000 |
aadhaar | string | required | RSA-encrypted, Base64-encoded Aadhaar number. Encrypt the 12-digit Aadhaar using the Eko RSA public key with OPENSSL_SSLV23_PADDING, then Base64-encode the ciphertext.e.g. BASE64_ENCRYPTED_AADHAAR |
piddata | string | required | PID data captured from the UIDAI-certified biometric device, as a raw XML string. Must use Data type='X' (XML, not Protobuf). DeviceInfo must include the 'mc' (device certificate) parameter. fType must be 2.e.g. <?xml version='1.0'?><PidData><Data type='X'>...</Data><DeviceInfo mc='...' /></PidData> |
pipe | number | required | Routing pipe selector. Use 0 (default).e.g. 0 |
notify_customer | number | required | Send SMS notification to the customer. 1 = yes, 0 = no.e.g. 1 |
latlong | string | required | GPS coordinates of the transaction origin in 'latitude,longitude' format.e.g. 28.6139,77.2090 |
source_ip | string | required | IP address of the merchant/agent system initiating the transaction.e.g. 103.56.78.90 |
reference_id | string | required | 2FA reference ID obtained from the Daily Authentication (daily eKYC) API. Required for every Cash Withdrawal transaction due to compliance 2FA mandate.e.g. DAKYC20240101001 |
initiator_idstringRequiredRegistered mobile number of the API user (see Platform Credentials).
example: 9962981729
user_codestringRequiredUser code of the retailer/agent the service is run for.
example: 20810200
client_ref_idstringoptionalUnique reference id per API call, generated by your system.
example: REQ-20260101-001
bank_codestringRequiredBank IIN/IFS code identifying the customer's bank. Obtain from the bank list API.
example: 607153
amountnumberRequiredWithdrawal amount in Indian Rupees (integer). Must be greater than 0 for cash withdrawal.
example: 1000
aadhaarstringRequiredRSA-encrypted, Base64-encoded Aadhaar number. Encrypt the 12-digit Aadhaar using the Eko RSA public key with OPENSSL_SSLV23_PADDING, then Base64-encode the ciphertext.
example: BASE64_ENCRYPTED_AADHAAR
piddatastringRequiredPID data captured from the UIDAI-certified biometric device, as a raw XML string. Must use Data type='X' (XML, not Protobuf). DeviceInfo must include the 'mc' (device certificate) parameter. fType must be 2.
example: <?xml version='1.0'?><PidData><Data type='X'>...</Data><DeviceInfo mc='...' /></PidData>
pipenumberRequiredRouting pipe selector. Use 0 (default).
example: 0
notify_customernumberRequiredSend SMS notification to the customer. 1 = yes, 0 = no.
example: 1
latlongstringRequiredGPS coordinates of the transaction origin in 'latitude,longitude' format.
example: 28.6139,77.2090
source_ipstringRequiredIP address of the merchant/agent system initiating the transaction.
example: 103.56.78.90
reference_idstringRequired2FA reference ID obtained from the Daily Authentication (daily eKYC) API. Required for every Cash Withdrawal transaction due to compliance 2FA mandate.
example: DAKYC20240101001
Headers
| 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
Responses
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.
tx_statusstringTransaction state: 0=Success, 1=Fail, 2=Awaited, 3=Refund Pending, 4=Refunded, 5=On Hold.
txstatus_descstringHuman-readable transaction status.
dataobjectAPI-specific response payload.
tidstringEko's internal transaction ID. Use for reconciliation and support queries.
amountnumberWithdrawal amount processed in the transaction (INR).
bank_namestringName of the customer's bank where the debit occurred.
bank_ref_numstringBank/NPCI reference number for the transaction.
balancestringRemaining balance in the customer's bank account after withdrawal, if returned by the bank.
aadhaar_ref_numstringAadhaar authentication reference number from UIDAI.
service_typenumberEcho of the service_type from the request (2 for Cash Withdrawal).