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.

Capturing at night

Delayed captures normally fire as soon as the delay elapses, which can be any time of day for the shopper. Enable Capture at night in Merchant Configuration to have Odus schedule each delayed capture at a random moment between 02:00 and 04:00 in the shopper's local time instead.

The scheduled capture is never moved earlier than captureDelay, so the delay you configure stays a lower bound.

This only applies when the shopper's UTC offset is known. It is read from the shopper's browser at authorization — automatic for payments made through the Checkout SDK — and remembered for that shopper afterwards. Authorizations that carry no browser information of their own, such as server-to-server charges, subscription renewals, and retries, are scheduled from the offset last recorded for the same shopper. Payments for a shopper whose offset has never been recorded keep the standard schedule.

Offsets are only recorded while Capture at night is enabled, so after turning it on a returning shopper's payments keep the standard schedule until their next authorization from a browser.

note

Shopper location is known only as the UTC offset reported at authorization, not as a full time zone. If a daylight-saving transition falls between authorization and capture, the effective window can shift by an hour.

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.