Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.momentco.io/llms.txt

Use this file to discover all available pages before exploring further.

1

Create a Payment Session with capture_method: manual

Pass payment_method_options.card.capture_method: manual inside the session options:
POST /collect/payment_sessions

{
  "amount": 100000,
  "currency": "ZAR",
  "type": "one_time",
  "options": {
    "checkout_options": {
      "return_url": "https://merchant.example/order/123/status"
    },
    "payment_method_options": {
      "card": {
        "capture_method": "manual"
      }
    }
  },
  "external_reference": "order_123"
}
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:
{
  "id": "pay_rOaZNqKZMFxsRb2NBL1cj",
  "status": "succeeded",
  "intent": "payment",
  "amount": 100000,
  "currency": "ZAR",
  "capture_method": "manual",
  "authorised_amount": 100000,
  "paid_amount": 0,
  "voided_amount": 0,
  "country": "ZA",
  "payment_method_details": {
    "type": "card",
    "card": {
      "type": "CREDIT",
      "scheme": "MASTERCARD",
      "bin": "527346",
      "last4": "3333"
    }
  },
  "external_reference": "order_123",
  "mode": "live",
  "created_at": "2026-03-18T09:00:44.224Z",
  "updated_at": "2026-03-18T09:01:12.531Z"
}
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:
{
  "type": "https://docs.momentco.io/errors/conflict",
  "title": "Conflict",
  "status": 409,
  "detail": "The authorisation has expired and can no longer be captured.",
  "instance": "/collect/payments/pay_rOaZNqKZMFxsRb2NBL1cj/captures",
  "code": "conflict"
}
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.