Biometric KYC

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

Submit fresh biometric capture data for UPI ATM KYC.

POST https://pay2new.in/apis/upiAtm/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.

JSON request

FieldRequiredDescription
referenceKeyYesReference returned by the preceding status or OTP operation.
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 reference for this request. At least 8 characters.
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.

Usage notes

  • Use referenceKey from UPI ATM Biometric Kyc Status and submit fresh registered-device data.
  • request_id must have at least 8 characters and is echoed as order_id.
  • Recheck Biometric Kyc Status to confirm APPROVED and NO-ACTION-REQUIRED.

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.

All identities and account values below are synthetic. Replace placeholders, including the enabled product code and fresh device capture, before sending a request.

{
  "referenceKey": "REFERENCE_FROM_PREVIOUS_RESPONSE",
  "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/upiAtm/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_PREVIOUS_RESPONSE",
  "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_idstring: same value as request_id

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",
  "data": [],
  "order_id": "EXAMPLE202609260001"
}

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

Reference returned by the preceding status or OTP operation.

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

Your reference for this request. At least 8 characters.

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