Get an order
Reading an order's status and fields, the status values and their timing, and how to verify a payment.
On this page
GET /api/v1/orders/{order_id} returns one order that belongs to your key's business.
Order object
{
"order_id": "UPN-0123456789",
"merchant_order_id": "order_1024",
"status": "paid",
"amount": 499,
"payable_amount": 499.07,
"created_at": "2026-09-08T17:25:00.000Z",
"expires_at": "2026-09-08T17:30:00.000Z",
"paid_at": "2026-09-08T17:26:01.000Z",
"failed_at": null,
"payer_email": "no-reply@paytm.com",
"payment_account_id": "b3f8a1c4-2e6d-4a3b-9c0f-1234567890ab"
}| Field | Meaning |
|---|---|
order_id |
The UPINOW order id. |
merchant_order_id |
The id you sent when you created the order, or null for an order created outside the API. |
status |
See Status values below. |
amount |
The amount you asked for when you created the order, in rupees. |
payable_amount |
The exact amount the customer was asked to pay. |
created_at, expires_at, paid_at, failed_at |
ISO 8601 timestamps in UTC; paid_at and failed_at are null until the order reaches that state. |
payer_email |
The From address of the bank's alert email, for example no-reply@paytm.com. This is your bank's notification address, not your customer's own email. |
payment_account_id |
The UPI account this order was created on. A payment on this order can only ever be confirmed by an alert to this account's own connected Gmail, never any other account of yours. |
If the order is still pending when you call this, UPINOW checks the connected mailbox for it right on this call, in addition to its own background checks, so an alert that just arrived can be picked up sooner.
Status values
| Status | Meaning |
|---|---|
pending |
Waiting for payment. An order stays pending for up to 5 minutes after expires_at, even though its countdown reads zero. |
paid |
Payment confirmed. A bank alert for a payment made at or before expires_at that reaches the mailbox up to 2 minutes late can still move the order to paid, so a payment.expired webhook can be followed by a late payment.success. |
expired |
The payment window closed with no match, after the grace period above. |
failed |
The payment could not be completed. |
manual_review |
More than one open order shared this exact amount at the same time, so automatic matching was skipped; see Needs review. |
Verify a payment
After the customer returns to your success_url or failure_url, call this endpoint from your own server before you show them a result; never trust the query parameters on the return URL by themselves.
curl https://app.upinow.in/api/v1/orders/UPN-0123456789 \
-H "X-API-Key: YOUR_API_KEY"If the order still shows pending, show a "processing" message and wait; the signed webhook usually arrives before the customer does, but it can be a few seconds behind.
Errors
If your business is disabled, this call answers 403 merchant_disabled before it even looks at the order id. Otherwise, an order id that does not belong to your key's business, or does not exist at all, answers 404 order_not_found.