QR Status

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

Check the withdrawal associated with a UPI ATM QR using the Pay2New order ID returned by Generate QR.

POST https://pay2new.in/apis/upiAtm/v1/qrStatus

Headers

HeaderRequiredDescription
secretYesYour Pay2New-issued API secret.
outletIdYesActive, onboarded Pay2New customer/outlet ID. Use the outlet for the withdrawal.
Content-TypeYes for JSONapplication/json
AcceptRecommendedapplication/json

The partner account, KYC, wallet and API access must be active, the backend source IP must be registered, and UPI ATM service must be enabled.

Request body

FieldTypeRequiredDescription
order_idstringYesThe exact Pay2New order_id returned by Generate QR. Leading/trailing spaces are removed. An empty value is rejected.

Send the Pay2New order reference, not your request_id, the QR content or a provider ipayId. The lookup finds UPI ATM transactions belonging to the authenticated partner. JSON is recommended; the endpoint also accepts form POST fields.

{"order_id":"ORDER_ID_FROM_GENERATE_QR"}

cURL request

curl --request POST \
  --url 'https://pay2new.in/apis/upiAtm/v1/qrStatus' \
  --header 'secret: YOUR_PAY2NEW_SECRET' \
  --header 'outletId: YOUR_PAY2NEW_OUTLET_ID' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data '{
  "order_id": "ORDER_ID_FROM_GENERATE_QR"
}'

How status checking works

Current transaction stateAPI behaviour
PendingAttempts a status refresh, then returns the latest stored transaction result. If refresh is unavailable or still unresolved, the order may remain pending.
Already successful or failedReturns the stored final transaction result.
Order cannot be found for this partner and serviceReturns status 2 and Transaction not found, without a transaction response object.

🚧

QR generation is not withdrawal success

Generate QR can succeed while the withdrawal remains pending. Confirm status 1 for the matching order_id before cash disbursement. HTTP 200, customer scanning, or a QR image disappearing does not establish successful withdrawal.

Interpret the result

JSON resultMeaningClient action
status 1 with the matching order_idConfirmed successful withdrawalRecord completion once and use your cash-disbursement controls.
status 2 with the matching order_id and transaction detailsFailed withdrawalShow the failure. Do not disburse cash for this order.
status 3 with the matching order_idPending or unresolved withdrawalKeep the existing order and check again with controlled polling/backoff.
status 2 with only message, without transaction detailsRequest, authentication, access or lookup errorResolve the reported error. Do not mark an existing withdrawal failed just because its lookup failed.
Unexpected status or conflicting identifiersUnresolved resultRetain the references and reconcile with Pay2New.

QR state mapping

qrStatusPay2New transaction outcome
SUCCESSFinal success: status 1.
FAILEDFinal failure: status 2.
EXPIREDFinal failure: status 2.
REFUNDFinal failure: status 2. This value alone is not a separate refund receipt.
INITIATED or another non-final stateUsually remains pending: status 3. Read the returned transaction status.

A provider INITIATED result accompanied by SERVICE PROVIDER ERROR is normalized to FAILED when processed. Treat the returned numeric transaction status as the result for your order; qrStatus adds context.

Response fields

Successful lookups return these fields at the top level, not inside data.

FieldTypeDescription
statusintegerStored withdrawal result: 1 success, 2 failure, 3 pending. Early request errors also use 2.
messagestringStored transaction result message or an error description.
order_idstringPay2New UPI ATM order reference. Match it to the requested order.
request_idstringOriginal client request reference supplied to Generate QR.
txn_valuestringWithdrawal amount formatted to two decimal places; grouping commas may appear.
balancestringWallet balance recorded with the transaction, formatted to two decimal places. It is not a fresh wallet-balance enquiry.
api_txn_idstringStored provider transaction reference; empty string when unavailable.
operator_referencestringStored operator/bank reference; empty string when unavailable.
qrStatusstringStored QR state; empty string when unavailable.
vpastringStored payer VPA; empty string when unavailable.
mobilestringStored payer mobile; empty string when unavailable.
accountNumberstringStored payer account identifier as provided; empty string when unavailable.
customer_namestringStored payer name; empty string when unavailable.

Provider references and payer details may not be available while pending. This API does not return qrString or expiryDt; retain those from Generate QR.

Response examples

Illustrative values only. Pending messages, references, payer details and balances vary.

Pending withdrawal

{
  "status": 3,
  "message": "Transaction Pending",
  "order_id": "P2N_SAMPLE_UPIATM_ORDER",
  "request_id": "UPIATM202609260001",
  "txn_value": "100.00",
  "balance": "1,000.00",
  "api_txn_id": "SAMPLE_PROVIDER_ID",
  "operator_reference": "",
  "qrStatus": "INITIATED",
  "vpa": "",
  "mobile": "",
  "accountNumber": "",
  "customer_name": ""
}

Confirmed successful withdrawal

{
  "status": 1,
  "message": "Transaction Successful!",
  "order_id": "P2N_SAMPLE_UPIATM_ORDER",
  "request_id": "UPIATM202609260001",
  "txn_value": "100.00",
  "balance": "1,000.00",
  "api_txn_id": "SAMPLE_PROVIDER_ID",
  "operator_reference": "SAMPLE_OPERATOR_REFERENCE",
  "qrStatus": "SUCCESS",
  "vpa": "sample-customer@upi",
  "mobile": "9000000001",
  "accountNumber": "XXXX0001",
  "customer_name": "Sample Customer"
}

Expired QR; failed withdrawal

{
  "status": 2,
  "message": "Transaction Failed!",
  "order_id": "P2N_SAMPLE_UPIATM_ORDER",
  "request_id": "UPIATM202609260001",
  "txn_value": "100.00",
  "balance": "1,000.00",
  "api_txn_id": "SAMPLE_PROVIDER_ID",
  "operator_reference": "",
  "qrStatus": "EXPIRED",
  "vpa": "",
  "mobile": "",
  "accountNumber": "",
  "customer_name": ""
}

Failed withdrawal

{
  "status": 2,
  "message": "Transaction Failed!",
  "order_id": "P2N_SAMPLE_UPIATM_ORDER",
  "request_id": "UPIATM202609260001",
  "txn_value": "100.00",
  "balance": "1,000.00",
  "api_txn_id": "SAMPLE_PROVIDER_ID",
  "operator_reference": "",
  "qrStatus": "FAILED",
  "vpa": "",
  "mobile": "",
  "accountNumber": "",
  "customer_name": ""
}

Order not found

{
  "status": 2,
  "message": "Transaction not found"
}

Missing order ID

{
  "status": 2,
  "message": "order_id is required"
}

Error handling and polling

SituationHandling
order_id is requiredSend a non-empty Pay2New order reference.
Transaction not foundCheck the reference, partner account and that the order came from UPI ATM Generate QR.
Outlet ID not found! / Invalid OutletIdCorrect the outlet header or its onboarding state.
Authentication or service failureCorrect the account configuration described by message.
Network timeout or status 3Recheck the same order. Do not create a replacement withdrawal merely because the outcome is not yet known.

Stop normal polling after a confirmed final result. No fixed public polling interval is specified by this endpoint. Use controlled intervals/backoff and retain unresolved orders for reconciliation. Status refresh can finalize the existing transaction and its wallet settlement; it does not create a new withdrawal.

See the UPI ATM Integration Guide for the complete KYC → QR → status flow.

Body Params
string
required

Required non-empty Pay2New order_id from Generate QR. Do not send request_id or a provider reference.

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