Skip to main content
1

Create a Payment Session with capture_method: manual

Pass payment_method_options.card.capture_method: manual inside the session options:
2

Customer completes authorisation

The customer is redirected to the checkout page (session_url) and completes the card payment. On success, the underlying payment object transitions to status: succeeded, meaning funds are reserved but not yet settled.The Payment Session itself transitions to status: completed with payment_outcome: reserved. The session outcome remains reserved even after subsequent captures or voids, which are tracked on the underlying payment resource. The deprecated payment_status field continues to be populated with paid for backwards compatibility.The payment object at this stage:
Webhook fired: payment.succeeded
3

Capture or void

Once the authorisation succeeds, you have a limited window to act before it expires:
  • Capture the payment to settle funds (full or partial)
  • Void the authorisation to release the hold
  • Do nothing and let the authorisation expire automatically

Flow Diagram

Authorisation Expiry

Authorisations have a limited validity period set by the issuing bank and card network. After expiry:
  • The authorisation can no longer be captured
  • Reserved funds are automatically released back to the customer by the card network
  • Attempting to capture returns a 409 Conflict error:
Authorisation validity periods vary by payment method and issuing bank, typically ranging from 5 to 30 days for card payments. Plan your capture workflow accordingly.