Biometric KYC

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Complete merchant/outlet biometric KYC for AEPS using a fresh registered-device capture. Start with the AEPS Biometric KYC Status API to obtain the capture reference and required action.

POST https://pay2new.in/apis/aeps/v1/biometricKyc

Headers

HeaderRequiredDescription
secretYesYour Pay2New API secret.
outletIdYesPay2New outlet/customer ID returned after successful onboarding; do not send the provider outlet ID.
Content-TypeYesapplication/json
AcceptNoRequest 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.

Merchant KYC flow

StepAPI / actionWhat to use
1AEPS Biometric KYC StatusRead data.action, data.status, data.referenceKey and data.pidOptionWadh.
2Capture the merchant’s biometricsUse the returned pidOptionWadh in your RD capture options when supplied. Obtain a fresh capture with the merchant’s consent.
3Submit this Biometric KYC APISend the status referenceKey, location, request_id and the full biometricData object shown below.
4Check KYC status againConfirm the resulting status/action. When no further action is required, follow the Merchant Login flow before AEPS transactions.

📘

Use the KYC status reference

Use data.referenceKey from AEPS Biometric KYC Status for this outlet. If that response says NO-ACTION-REQUIRED, do not submit another capture merely to repeat KYC. Follow its action and status. A cash-withdrawal Transaction OTP reference belongs to a different flow.

JSON request

FieldRequiredDescription
referenceKeyYesdata.referenceKey returned by AEPS Biometric KYC Status for the same outlet.
latitudeYesLatitude as a decimal value. Accepted as a JSON number or decimal string.
longitudeYesLongitude as a decimal value. Accepted as a JSON number or decimal string.
request_idYesYour required client reference. The returned order_id is generated separately by Pay2New.
biometricDataYesFresh 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.

Pay2New request format

Instantpay field / settingWhat to send to Pay2New
Provider authentication headersUse secret and outletId as documented above; Pay2New supplies the upstream credentials.
encryptedAadhaarSend biometricData.aadhaar_number. Pay2New encrypts it before forwarding the capture.
externalRefSend your required request_id. Pay2New generates a separate provider reference and returns it as order_id.
referenceKeyUse the reference from the Pay2New AEPS KYC Status response.
captureTypeThe current Pay2New KYC endpoint does not forward this optional provider field; it is not part of this request contract.

The live endpoint accepts the five top-level body fields shown in the request table. Biometric capture fields remain nested inside biometricData.

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 fieldValue / RD mapping
biometricData.aadhaar_numberConsenting customer/merchant Aadhaar number; exactly 12 digits.
biometricData.dcDeviceInfo.dc
biometricData.ciSkey.ci
biometricData.hmacHmac element text
biometricData.dpIdDeviceInfo.dpId
biometricData.mcDeviceInfo.mc
biometricData.pidDataTypeData.type, for example X for XML
biometricData.sessionKeySkey element text
biometricData.miDeviceInfo.mi
biometricData.rdsIdDeviceInfo.rdsId
biometricData.errCodeResp.errCode
biometricData.errInfoResp.errInfo
biometricData.fCountResp.fCount
biometricData.fTypeResp.fType
biometricData.iCountResp.iCount
biometricData.iTypeResp.iType
biometricData.pCountResp.pCount
biometricData.pTypeResp.pType
biometricData.srnoDeviceInfo/additional_info device serial value
biometricData.sysidDeviceInfo/additional_info system ID, when supplied
biometricData.tsCapture timestamp returned by the RD integration, when supplied
biometricData.pidDataData element text (encrypted PID)
biometricData.qScoreResp.qScore
biometricData.nmPointsResp.nmPoints
biometricData.rdsVerDeviceInfo.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.

The example contains illustrative values. Replace the KYC status reference, merchant Aadhaar, location, request reference and RD output fields before submitting.

{
  "referenceKey": "REFERENCE_FROM_AEPS_KYC_STATUS",
  "latitude": "18.5204",
  "longitude": "73.8567",
  "request_id": "EXAMPLE202609260001",
  "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/biometricKyc' \
  --header 'secret: YOUR_PAY2NEW_SECRET' \
  --header 'outletId: YOUR_PAY2NEW_OUTLET_ID' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data '{
  "referenceKey": "REFERENCE_FROM_AEPS_KYC_STATUS",
  "latitude": "18.5204",
  "longitude": "73.8567",
  "request_id": "EXAMPLE202609260001",
  "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.

FieldDescription
statusinteger: application status, not HTTP status
messagestring
dataempty array
order_idserver-generated string
JSON statusMeaning / next step
1KYC submission succeeded. Confirm the outlet’s current KYC state through Biometric KYC Status.
2Validation, access or processing failure. Read message and errors when present.
3Uncertain provider outcome. Check KYC status before repeating the submission.

A provider-processing response includes data as an empty array and a generated order_id. An early validation or access failure may contain only status, message and errors. The client request_id is required but is not echoed by this response.

Illustrative response:

{
  "status": 1,
  "message": "Success",
  "data": [],
  "order_id": "EXAMPLE_ORDER_001"
}

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": {
    "referenceKey": "Provide a valid value for this field."
  }
}
Body Params
string
required

data.referenceKey returned by AEPS Biometric KYC Status for the same outlet.

string
required

Latitude as a decimal value. Accepted as a JSON number or decimal string.

string
required

Longitude as a decimal value. Accepted as a JSON number or decimal string.

string
required

Required client request reference. Pay2New generates a separate provider reference returned as order_id.

Headers
string
required

Your Pay2New API secret.

string
required

Pay2New outlet/customer ID returned after successful onboarding; do not send the provider outlet ID.

Response

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json