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.
Statuses
Section titled “Statuses”| Status | UI label | Meaning |
|---|---|---|
initiated | Created | Cardless 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_pending | Verifying transaction | Result inconclusive; the system resolves it. Not counted as failed automatically. |
captured | Successful | Capture approved. |
failed | Failed | 3D rejection or capture rejection. |
expired | Expired | The payment/3D window elapsed or 3D was abandoned. |
voided | Voided | Cancelled on the same day. |
partially_refunded | Partially refunded | Cumulative refund < sale amount. |
refunded | Refunded | Cumulative refund = sale amount. |
Transition summary
Section titled “Transition summary”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 ↔ status mapping
Section titled “Webhook event ↔ status mapping”| Webhook event type | Status(es) you will see in the query |
|---|---|
payment.captured | captured |
payment.failed | failed |
payment.expired | expired |
refund.approved | voided, 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.