> ## Documentation Index
> Fetch the complete documentation index at: https://funnelfox.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Delayed capture

> Authorize a payment now and capture the funds later, giving your team a fraud review window before the money settles.

Authorize a payment immediately but delay the capture, giving
your team a fraud review window before funds are settled by your
<Tooltip tip="Payment Service Provider">PSP</Tooltip>. The order stays in
`authorized` status until FunnelFox Payments captures it and moves it to
`settled`.

A cancellation before capture costs nothing, while a capture followed by a
refund is a real money movement.

<Tooltip tip="Customer-Initiated Transaction — the customer is
actively present and initiating the payment (e.g., initial
checkout)">CIT</Tooltip> and <Tooltip tip="Merchant-Initiated
Transaction — the merchant triggers the charge without the customer
present (e.g., subscription renewals, one-click
purchases)">MIT</Tooltip> payments use separate delay settings.

<Info>
  Purchases, subscriptions, and outbound webhooks fire at authorization, not at
  capture. Customers get access immediately, and only the money settles later.
</Info>

## Setup

1. Configure the `delayed_capture`
   on the **Settings** page of your FunnelFox Payments dashboard. The delay is
   <Tooltip tip="The capture worker runs every 30 minutes, so capture happens at the first run at or after the delay expires. A delay of 0 or a null fallback captures on the next run, not instantly.">counted
   in hours from order creation</Tooltip>, and a change
   <Tooltip tip="The delay is recomputed from your current settings on every run, so lowering a value can make already-authorized orders due immediately.">also
   applies to orders that are already authorized</Tooltip>.

   `delayed_capture` is a JSON field. Paste the whole matrix
   into it and click **Save**.

   <Accordion title="Delay capture JSON reference">
     ```json theme={null}
     {
         "networks": {
         "visa": {
         "cit": { "stripe": 12, "adyen": 24 },
         "mit": { "stripe": 12, "adyen": 24 }
     },
         "mastercard": {
         "cit": { "stripe": 12, "adyen": 24 },
         "mit": { "stripe": 12, "adyen": 24 }
     }
     },
         "fallback": { "cit": 12, "mit": 12 }
     }
     ```

     | Level                          | Allowed keys                                                                                      |
     | ------------------------------ | ------------------------------------------------------------------------------------------------- |
     | Network                        | `visa`, `mastercard`. Any other network is rejected.                                              |
     | Transaction type               | `cit`, `mit`                                                                                      |
     | PSP                            | `stripe`, `braintree`, `paypal`, `adyen`, `checkout`, `primer_processor`, `airwallex`, `unlimint` |
     | Delay                          | Hours, a number of 0 or more. Fractions such as `1.5` are allowed.                                |
     | `fallback.cit`, `fallback.mit` | Hours of 0 or more, or `null`                                                                     |

     There is no partial fall-through inside the JSON. A Visa CIT entry that
     does not list your PSP goes straight to the `cit` fallback.

     A `null` fallback captures on the next run. To turn the hold off everywhere,
     set `{"networks": {}, "fallback": {"cit": null, "mit": null}}`.

     A fallback that sets only `cit` leaves `mit` as `null`, so renewals capture
     immediately. Always write both keys.

     An authorization expires if it is held too long, so every delay is capped.
     FunnelFox Payments rejects a value above its cap when you save.

     | PSP                                | Visa CIT | Visa MIT | Mastercard CIT | Mastercard MIT |
     | ---------------------------------- | -------- | -------- | -------------- | -------------- |
     | Stripe                             | 89       | 89       | 89             | 89             |
     | Airwallex                          | 96       | 96       | 96             | 96             |
     | Adyen                              | 144      | 96       | 144            | 144            |
     | Unlimint                           | 72       | 72       | 72             | 72             |
     | Braintree                          | 47       | 47       | 47             | 47             |
     | PayPal, Checkout, Primer processor | 216      | 96       | 144            | 144            |

     Both fallbacks are capped at 47 hours. An order with an unknown network or PSP
     could be on the strictest acquirer, so the tightest cap applies.
   </Accordion>

<Frame>
  <img src="https://mintcdn.com/funnelfox/3LsYkQT_uyYYB0rY/assets/billing-delayed-capture.png?fit=max&auto=format&n=3LsYkQT_uyYYB0rY&q=85&s=890a18f1f80e1685b61c286337850931" width="1920" height="989" data-path="assets/billing-delayed-capture.png" />
</Frame>

2. Go to the **Workflows** page in your Primer dashboard.

3. Open your workflow.

<Frame>
  <img src="https://mintcdn.com/funnelfox/3LsYkQT_uyYYB0rY/assets/select-workflow.png?fit=max&auto=format&n=3LsYkQT_uyYYB0rY&q=85&s=975a3176357973d8bb3268cea469e4a3" width="1904" height="924" data-path="assets/select-workflow.png" />
</Frame>

4. Click **Edit workflow** at the top right.

<Frame>
  <img src="https://mintcdn.com/funnelfox/3LsYkQT_uyYYB0rY/assets/delayed-capture-edit-workflow.png?fit=max&auto=format&n=3LsYkQT_uyYYB0rY&q=85&s=761aaf2f9fbf3ce1d455668093a65044" width="1885" height="918" data-path="assets/delayed-capture-edit-workflow.png" />
</Frame>

5. Select the **Authorize payment** stage and set **Before processing the next
   workflow block** to **Continue payment flow**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/3LsYkQT_uyYYB0rY/assets/delayed-capture-workflow.png?fit=max&auto=format&n=3LsYkQT_uyYYB0rY&q=85&s=1f7366aaeba98b70c1dacc1a2b779876" width="1890" height="922" data-path="assets/delayed-capture-workflow.png" />
</Frame>

6. Click **Save**.

## Capture behavior

A capture is attempted at most twice, after which the payment is blocked for
12 hours.

Orders older than 480 hours (20 days) are no longer picked up and
the authorization is treated as dead.

You can also capture an authorized order
manually at any time, which ignores the configured delay.

## Next steps

* [Prevent chargebacks with dispute alerts](/docs/billing/disputes)
* [Configure the `delayed_capture` setting](/docs/billing/settings#delayed-capture)
* [View and refund payments](/docs/billing/payments-management)
