Skip to content

Payment Lifecycle

Every payment has a status. The table below lists the customer-visible statuses; these values appear in the status field and in webhook event types.

StatusUI labelMeaning
initiatedCreatedCardless payment created; the buyer has not yet been redirected to the handoff / 3D is not yet complete. Card-bound fields (maskedPan, cardFamily, commission) are null at this stage.
capture_pendingVerifying transactionResult inconclusive; the system resolves it. Not counted as failed automatically.
capturedSuccessfulCapture approved.
failedFailed3D rejection or capture rejection.
expiredExpiredThe payment/3D window elapsed or 3D was abandoned.
voidedVoidedCancelled on the same day.
partially_refundedPartially refundedCumulative refund < sale amount.
refundedRefundedCumulative refund = sale amount.
initiated ──► captured ──► (voided | partially_refunded ──► refunded)
│ ▲
│ │
└► capture_pending (inconclusive; system resolves)
├► failed (3D or capture rejection)
└► expired (window elapsed / 3D abandoned)

Voids and refunds are started via Refunds & Void; the resulting status is voided, partially_refunded, or refunded.

Webhook event typeStatus(es) you will see in the query
payment.capturedcaptured
payment.failedfailed
payment.expiredexpired
refund.approvedvoided, partially_refunded, or refunded
refund.declined(payment status unchanged; the refund’s status is declined)

Refund/void outcomes are reported via refund.approved / refund.declined; since a single refund.approved can lead to three different payment statuses, learn the exact status via GET /v1/payments. See Webhooks.