Skip to main content

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_CREATED
  • PAYMENT_ORDER_STATUS_PENDING
  • PAYMENT_ORDER_STATUS_COMPLETED
  • PAYMENT_ORDER_STATUS_FAILED
  • PAYMENT_ORDER_STATUS_CANCELLED
  • PAYMENT_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

  1. Persist the payment order ID and your merchantReference when you create or initialize a payment.
  2. Verify and process webhook deliveries idempotently.
  3. Read the payment by ID when a webhook is delayed, after a customer redirect, or during reconciliation.
  4. Use lookup by merchant reference only when your references are unique.
  5. 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.