Skip to main content

Statuses and failure reasons

Payment statuses​

StatusMeaning
createdWaiting for the payer.
requires_actionThe payer chose a method and needs to act (scan, pay on the gateway's page), or an attempt failed and they can try another.
processingThe payer says they've paid; waiting for confirmation (gateway, or the merchant's UPI approval).
on_holdA risk rule asked for review. Someone on the merchant's team releases it (back to created) or cancels it.
succeededPaid. Final.
failedFinal; see failure.reason.
cancelledCancelled by the merchant. Final.
expiredNot paid in time. Final.

Statuses only move forward, and final ones never change: a late "failed" from a gateway can't undo succeeded. One step goes back on purpose: when an attempt fails, the payment returns to requires_action so the payer can try another method. It's still one payment, with several attempts.

A refunded payment stays succeeded; amount_refunded tells you how much went back.

Failure reasons​

failure.reason
payer_cancelledThe payer cancelled at the gateway.
bank_declinedThe bank or card issuer declined.
insufficient_funds
authentication_failedOTP, 3-D Secure or UPI PIN failed.
upi_timeoutThe UPI collect or intent wasn't completed in time.
gateway_errorThe gateway failed.
risk_blockedA risk rule blocked it.
rejected_by_merchantThe merchant rejected the UPI payment's UTR.
too_many_attempts5 attempts without success.
limit_exceededOver a limit set by the gateway, the platform or the method's amount range.
expired, cancelled
unknownThe gateway gave no reason.

failure.message has the gateway's or merchant's words when there are any.

Refund statuses​

pending → succeeded | failed.

Dispute statuses​

needs_response, under_review, won, lost, closed.