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.