| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Generate a QR code for a UPI ATM withdrawal. QR creation does not confirm completion of the withdrawal.
POST https://pay2new.in/apis/upiAtm/v1/generateQr
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. Must be greater than 0. |
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 | Product code enabled for your partner account. Retrieve it from the product list. Digits only. |
ip | Yes | IPv4 address of the customer-facing endpoint. |
Usage notes
- The amount must be positive and a multiple of ₹100.
- status 1 confirms QR creation only. Save order_id and use QR Status to confirm the withdrawal before treating it as complete.
- Wallet settlement happens after final status confirmation.
- Reusing the same request_id with the same amount and customer_mobile returns the existing order_id and null QR fields. Changing either amount or mobile with the same request_id returns an error.
- The successful response currently sets displayExpirySec to 60. Use expiryDt and QR Status when handling expiry.
Request example
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",
"latitude": "18.5204",
"longitude": "73.8567",
"customer_mobile": "9000000001",
"request_id": "EXAMPLE202609260001",
"product_code": "YOUR_PRODUCT_CODE",
"ip": "192.0.2.10"
}
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 |
qrStatus | provider string or null |
qrString | provider string or null |
qrMobile | provider string or null |
qrCreatedDate | provider timestamp or null |
expiryDt | provider timestamp or null |
displayExpirySec | 60 on successful generation; null for duplicate/failure |
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.
For this endpoint, status: 1 confirms QR creation only; check QR Status for the withdrawal outcome.
Illustrative response:
{
"status": 1,
"message": "QR Generated Successfully.",
"order_id": "EXAMPLE_ORDER_001",
"txn_value": "100.00",
"balance": "1000.00",
"request_id": "EXAMPLE202609260001",
"qrStatus": "INITIATED",
"qrString": "QR_STRING_FROM_RESPONSE",
"qrMobile": "9000000001",
"qrCreatedDate": "2026-09-26T12:00:00+05:30",
"expiryDt": "2026-09-26T12:01:00+05:30",
"displayExpirySec": 60
}
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."
}
}
Next step: QR Status
Save the returned order_id and call QR Status to confirm the withdrawal before cash disbursement. Creating a QR does not confirm a successful withdrawal.
