Skip to main content

Captures

Manual capture separates authorization from the transfer of funds. When you authorize a payment with manual capture, the customer's card is held for the amount but no money is transferred until you explicitly capture it.

Prerequisites

  • You have a Secret API Key.
  • You have read Making Payments and understand the standard payment flow.

Capture methods

Odus supports three capture methods. You can set one per payment, or configure a default for your entire account.

MethodBehavior
automaticFunds are captured immediately when the payment is authorized. This is the default.
manualFunds are held but not transferred. You must explicitly call the capture endpoint.
automaticDelayedOdus captures automatically after the number of days set in captureDelay. No API call is needed.

Step 1: Create a payment with manual capture

Set captureMethod to "manual" in paymentMethodOptions when creating the payment with POST /payments.

Creating a payment with manual capture
{
"amount": 5000,
"currency": "usd",
"paymentMethodOptions": {
"captureMethod": "manual",
"card": {
"mode": "cascade",
"cascade": "cas_abc123"
}
}
}
tip

You can also set captureMethod at the payment method level (e.g. paymentMethodOptions.card.captureMethod). A payment method-level value overrides the top-level one for that specific payment method.

Step 2: Authorize the payment

Authorize the payment as usual — directly via the API with a saved payment method, or through the Checkout SDK. See Making Payments for details.

After authorization, the payment will have:

  • status: "succeeded"
  • isCaptured: false
  • displayStatus: "uncaptured"

The customer's card is held for the amount. No funds have been transferred yet.

important

Authorizations typically expire after approximately 7 days, though the exact limit depends on the gateway and card network. If you do not capture before the authorization lapses, the funds are released back to the customer automatically.

Step 3: Capture the payment

Via the API

Send a POST /payments/{id}/capture request. The request body must be an empty JSON object.

Capture request body
{}

The response is the full payment object. After a successful capture, isCaptured will be true and capturedAt will contain the capture timestamp.

Via the Dashboard

  1. Open the payment detail page.
  2. Click Actions in the top-right area of the payment summary card.
  3. Select Capture from the menu.
  4. Confirm the dialog.
warning

Capturing a payment cannot be undone. You can issue a refund later if needed.

Delayed automatic capture

Use captureMethod: "automaticDelayed" together with captureDelay (number of days) if you want Odus to capture automatically after a set period — without any additional API call.

Creating a payment with delayed automatic capture
{
"amount": 5000,
"currency": "usd",
"paymentMethodOptions": {
"captureMethod": "automaticDelayed",
"captureDelay": 2,
"card": {
"mode": "cascade",
"cascade": "cas_abc123"
}
}
}

The maximum captureDelay is 5 days for card and Apple Pay. For PayPal, you can set up to 15 days by specifying captureDelay at the PayPal level (paymentMethodOptions.paypal.captureDelay).

warning

Ensure captureDelay is within the authorization window of your gateway. If the authorization expires before the scheduled capture, the capture will fail.

Voiding an uncaptured authorization

To release the held funds before capturing, you can void the payment. See Refunds and Voids for details.

Setting a default capture method

You do not need to set captureMethod on every payment. Configure a default for your account in Merchant Configuration — all payments without an explicit captureMethod will inherit this default.

See Merchant Configuration for setup instructions.