| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Initiate an AEPS cash deposit.
POST https://pay2new.in/apis/aeps/v1/cashDeposit
Headers
| Header | Required | Description |
|---|---|---|
secret | Yes | Your Pay2New API secret. |
outletId | Yes | Pay2New outlet/customer ID returned after successful onboarding; do not send the provider outlet ID. |
Content-Type | Yes | application/json |
Accept | No | Request a JSON response. |
Requests require an active partner account, approved KYC, active wallet and API access, an allowlisted source IP, and the relevant service enabled.
JSON request
| Field | Required | Description |
|---|---|---|
amount | Yes | Amount. Accepted as a JSON number or decimal string. |
bankiin | Yes | Bank IIN returned by the AEPS bank list. |
latitude | Yes | Latitude as a decimal value. Accepted as a JSON number or decimal string. |
longitude | Yes | Longitude as a decimal value. Accepted as a JSON number or decimal string. |
customer_mobile | Yes | Customer mobile. Exactly 10 characters. Digits only. |
request_id | Yes | Your reference for this request. At least 8 characters. |
product_code | Yes | Send 246. Digits only. |
ip | Yes | IPv4 address of the customer-facing endpoint. |
biometricData | Yes | Fresh biometric capture object from the registered device. Pass the capture fields required by your integration; do not reuse sample or previous capture data. Include aadhaar_number (12 digits) and the fresh registered-device capture fields. Never substitute a sample capture. |
captureType | No |
Usage notes
- Use product_code 246. captureType defaults to FINGER.
- Include iCount and pCount with the fresh biometric capture.
- If status is 3, confirm the existing transaction’s status before starting another deposit.
Biometric request fields
Pass biometricData as a nested JSON object inside the request. Pay2New accepts aadhaar_number and creates the provider’s encryptedAadhaar internally. Keep sessionKey, pidData, rdsId and the other RD field names exactly as shown.
| JSON field | Value / RD mapping |
|---|---|
biometricData.aadhaar_number | Consenting customer/merchant Aadhaar number; exactly 12 digits. |
biometricData.dc | DeviceInfo.dc |
biometricData.ci | Skey.ci |
biometricData.hmac | Hmac element text |
biometricData.dpId | DeviceInfo.dpId |
biometricData.mc | DeviceInfo.mc |
biometricData.pidDataType | Data.type, for example X for XML |
biometricData.sessionKey | Skey element text |
biometricData.mi | DeviceInfo.mi |
biometricData.rdsId | DeviceInfo.rdsId |
biometricData.errCode | Resp.errCode |
biometricData.errInfo | Resp.errInfo |
biometricData.fCount | Resp.fCount |
biometricData.fType | Resp.fType |
biometricData.iCount | Resp.iCount |
biometricData.iType | Resp.iType |
biometricData.pCount | Resp.pCount |
biometricData.pType | Resp.pType |
biometricData.srno | DeviceInfo/additional_info device serial value |
biometricData.sysid | DeviceInfo/additional_info system ID, when supplied |
biometricData.ts | Capture timestamp returned by the RD integration, when supplied |
biometricData.pidData | Data element text (encrypted PID) |
biometricData.qScore | Resp.qScore |
biometricData.nmPoints | Resp.nmPoints |
biometricData.rdsVer | DeviceInfo.rdsVer |
Copy capture values from the RD response without altering their case or encrypted contents. Use the actual capture counts/types; the example is a fingerprint capture. Optional device metadata should reflect what your device supplies.
Format reference: Instantpay biometric request documentation. The request below uses Pay2New’s URL, authentication and field names.
Request example
Complete biometric sample
The sample below includes the full biometric field structure. Replace the illustrative customer/device values and encrypted-data placeholders with the values from a fresh registered-device capture. Keep the field names and their case; capture counts and types must match the actual device response.
All identities and account values below are synthetic. Replace placeholders, including the enabled product code and fresh device capture, before sending a request.
{
"amount": "100.00",
"bankiin": "000000",
"latitude": "18.5204",
"longitude": "73.8567",
"customer_mobile": "9000000001",
"request_id": "EXAMPLE202609260001",
"product_code": "246",
"ip": "192.0.2.10",
"biometricData": {
"aadhaar_number": "999999999999",
"dc": "SAMPLE_REGISTERED_DEVICE_CODE",
"ci": "20261231",
"hmac": "BASE64_ENCRYPTED_PID_HASH",
"dpId": "SAMPLE_DEVICE_PROVIDER_ID",
"mc": "BASE64_DEVICE_CERTIFICATE",
"pidDataType": "X",
"sessionKey": "BASE64_ENCRYPTED_SESSION_KEY",
"mi": "SAMPLE_DEVICE_MODEL",
"rdsId": "SAMPLE_RD_SERVICE_ID",
"errCode": "0",
"errInfo": "",
"fCount": "1",
"fType": "2",
"iCount": "0",
"iType": "",
"pCount": "0",
"pType": "",
"srno": "SAMPLE_DEVICE_SERIAL_NUMBER",
"sysid": "SAMPLE_SYSTEM_ID",
"ts": "2026-09-26T12:00:00+05:30",
"pidData": "BASE64_ENCRYPTED_PID_DATA",
"qScore": "100",
"nmPoints": "46",
"rdsVer": "SAMPLE_RD_SERVICE_VERSION"
}
}
Complete cURL request
curl --request POST \
--url 'https://pay2new.in/apis/aeps/v1/cashDeposit' \
--header 'secret: YOUR_PAY2NEW_SECRET' \
--header 'outletId: YOUR_PAY2NEW_OUTLET_ID' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"amount": "100.00",
"bankiin": "000000",
"latitude": "18.5204",
"longitude": "73.8567",
"customer_mobile": "9000000001",
"request_id": "EXAMPLE202609260001",
"product_code": "246",
"ip": "192.0.2.10",
"biometricData": {
"aadhaar_number": "999999999999",
"dc": "SAMPLE_REGISTERED_DEVICE_CODE",
"ci": "20261231",
"hmac": "BASE64_ENCRYPTED_PID_HASH",
"dpId": "SAMPLE_DEVICE_PROVIDER_ID",
"mc": "BASE64_DEVICE_CERTIFICATE",
"pidDataType": "X",
"sessionKey": "BASE64_ENCRYPTED_SESSION_KEY",
"mi": "SAMPLE_DEVICE_MODEL",
"rdsId": "SAMPLE_RD_SERVICE_ID",
"errCode": "0",
"errInfo": "",
"fCount": "1",
"fType": "2",
"iCount": "0",
"iType": "",
"pCount": "0",
"pType": "",
"srno": "SAMPLE_DEVICE_SERIAL_NUMBER",
"sysid": "SAMPLE_SYSTEM_ID",
"ts": "2026-09-26T12:00:00+05:30",
"pidData": "BASE64_ENCRYPTED_PID_DATA",
"qScore": "100",
"nmPoints": "46",
"rdsVer": "SAMPLE_RD_SERVICE_VERSION"
}
}'
Response
Application status is returned in the JSON status field. A successful HTTP response alone does not confirm a successful operation.
| Field | Description |
|---|---|
status | integer: application status, not HTTP status |
message | string |
order_id | string |
txn_value | decimal string |
balance | decimal string or number |
request_id | string |
login_status | integer when returned by service |
bank_reference | string or null, may be absent |
account_balance | provider decimal value or null, may be absent |
bank_name | string or null, may be absent |
Provider-dependent fields may be absent or null. status: 2 indicates a failure. For transaction endpoints, status: 3 indicates pending or uncertain processing and requires status confirmation.
Illustrative response:
{
"status": 1,
"message": "Success",
"order_id": "EXAMPLE_ORDER_001",
"txn_value": "100.00",
"balance": "1000.00",
"request_id": "EXAMPLE202609260001",
"login_status": 1,
"bank_reference": "EXAMPLE_BANK_REFERENCE",
"account_balance": "1000.00",
"bank_name": "Example Bank"
}
Errors
Validation errors can include an errors object keyed by field name. Authentication, outlet, service and other processing errors can return only status and message. Errors are application-level responses; do not rely on an HTTP 400 status.
{
"status": 2,
"message": "Invalid Parameters",
"errors": {
"amount": "Provide a valid value for this field."
}
}
