Payment lifecycle
Last updated: 2026-07-17
Use the latest accepted payment order status as the business outcome. Redirects, payment instructions, and HTTP acceptance are not final success signals.
Statuses
PAYMENT_ORDER_STATUS_CREATEDPAYMENT_ORDER_STATUS_PENDINGPAYMENT_ORDER_STATUS_COMPLETEDPAYMENT_ORDER_STATUS_FAILEDPAYMENT_ORDER_STATUS_CANCELLEDPAYMENT_ORDER_STATUS_EXPIRED
PENDING updates may repeat. COMPLETED, CANCELLED, and EXPIRED are
terminal. FAILED is not always terminal: a late provider confirmation can
correct it to COMPLETED. Processing must be idempotent and based on the latest
accepted update.
Reconciliation
- Persist the payment order ID and your
merchantReferencewhen you create or initialize a payment. - Verify and process webhook deliveries idempotently.
- Read the payment by ID when a webhook is delayed, after a customer redirect, or during reconciliation.
- Use lookup by merchant reference only when your references are unique.
- Finalize your merchant workflow only from the latest reconciled status.
See Payments API for read operations, the PaymentOrder object for exact fields, and Webhooks for delivery and signature rules.