Check a payment's status
Check a payment's current state with a GET to /payments/session/{session_token}. This endpoint is public — it uses the session token in the URL and does not need your API key — so it is safe to call from your checkout page.
GET https://api.xenonpay.net/api/payments/session/{session_token}Success response
Returns 200 with the session's current status and details.
{
"ref_id": "XPABC123",
"order_id": "merchant-order-123",
"description": "Annual membership",
"status": "SUCCESS",
"amount": 500,
"currency": "INR",
"expires_at": "2026-08-24T10:10:00.000Z",
"utr": "312482855519",
"bank": {
"upiId": "merchant@upi",
"qrImageUrl": "https://example.com/qr.png",
"bankName": "HDFC Bank"
}
}The status field is one of CREATED, UTR_SUBMITTED, PENDING_REVIEW, SUCCESS, FAILED, or EXPIRED. See the Payment statuses reference for what each means.
Errors and rate limit
Situation | Status | Response |
|---|---|---|
Unknown session token | 404 |
|
More than 30 requests per minute for the same token | 429 |
|
Rely on webhooks for payment confirmation and use status polling only as a fallback. Polling is capped at 30 requests per minute per session.