Authorize Now, Charge on Approval: How Card Holds Work for Ad Bookings
How manual capture works in Stripe, how long a card authorization stays valid, and why holding funds until you approve an ad protects both sides.
On this page
Authorize-then-capture means the advertiser's card is checked and the amount is held when they book, but the money only moves when you approve the ad; if you reject it, the hold is released and nothing is charged. In Stripe this is called manual capture, and an authorization for an online card payment is usually valid for 7 days, so your approval has to happen inside that window.
Key takeaways
- An authorization reserves the amount on the card, a capture actually charges it, and a cancellation releases the hold.
- In Stripe, you get this behavior by setting the capture method to manual on a Checkout Session or PaymentIntent.
- Online card authorizations usually last 7 days, and some merchant-initiated Visa payments get less, so set your own review deadline well inside that.
- Stripe lets you cancel an uncaptured payment at no cost, while a refund doesn't return the original processing fee.
- If a hold expires before you capture it, the funds are released, the payment is canceled and you've lost the booking.
How a card authorization works
A card payment normally happens in one step: the card is authorized and charged at once. Manual capture splits it into two:
- Authorization. The advertiser enters their card at checkout. The card issuer approves the payment and reserves the amount, which reduces the advertiser's available credit or balance.
- Capture. When you approve the ad, you capture the payment. The money moves, and the payment lands in your Stripe balance like any other.
- Cancellation or expiry. If you reject the ad, you cancel the authorization and the hold is released. If you do nothing, the authorization eventually expires and is released anyway.
Stripe's documentation notes that authorizing a payment guarantees the amount by holding it on the customer's payment method, which is exactly what you want while you review a creative.
One practical point: some card issuers' statements don't clearly distinguish holds from completed charges, which can confuse customers. Say plainly in your booking confirmation that the card has been authorized, not charged, and when the charge will happen.
Why it suits ad bookings
Most ad sellers review creatives before they run them. Without an authorization, you have two bad options: run ads before checking them, or charge first and refund every rejection.
| Charge at booking, refund if rejected | Authorize at booking, capture on approval | |
|---|---|---|
| Advertiser's money if rejected | Charged, then refunded; the credit can take 5–10 business days | Never charged; the hold is released |
| Your cost if rejected | Original processing fees aren't returned | Canceling an uncaptured payment costs nothing |
| Risk of running an unpaid ad | None | None |
| Time limit | None | Capture before the authorization expires |
For you, the hold proves the money is there before you spend time reviewing. For the advertiser, a rejection costs nothing and doesn't require waiting for a refund. Both sides get a clean outcome, and fewer refunds leave fewer chances for a confused cardholder to open a dispute. Stripe's refund documentation even recommends manual capture to businesses that would otherwise issue many refunds soon after payment.
The authorization window: how long a hold lasts
According to Stripe's guide to placing a hold on a payment method, online (card-not-present) authorizations are valid for these periods:
| Card brand | Customer-initiated payment | Merchant-initiated payment |
|---|---|---|
| Visa | 7 days | 5 days (exactly 4 days and 18 hours) |
| Mastercard | 7 days | 7 days |
| American Express | 7 days | 7 days |
| Discover | 7 days | 7 days |
An advertiser paying at checkout is normally a customer-initiated payment. But Stripe and the card networks classify transactions from signals, not just from how you created them, so don't plan around the longest possible window. The exact deadline for each payment appears in the capture_before field on the charge.
Two more things to know:
- Extended authorizations can hold online card payments for up to 30 days, but Stripe offers them to businesses on IC+ pricing (others have to ask), availability depends on the card network and merchant category, and some Visa categories carry an extra fee. Stripe also points out that many networks intend extended windows for cases where the final amount isn't known at authorization, such as hotel stays. For ad bookings, a fast review process is simpler.
- Other payment methods have their own rules. Some, such as ACH Direct Debit, don't support separate authorization and capture at all.
Card network rules change, so check Stripe's current documentation before you build a policy around a specific number.
How to set it up in Stripe
You don't need much code, and you can do it entirely in the Dashboard for one-off payments.
- Checkout: when you create the Checkout Session, set
payment_intent_data[capture_method]tomanual. - Payment Intents API: set
capture_methodtomanual, or set it only for cards withpayment_method_options[card][capture_method]. - After the advertiser pays: the PaymentIntent moves to the
requires_capturestatus, and Stripe sends apayment_intent.amount_capturable_updatedevent. - To approve: capture the PaymentIntent. By default this captures the full amount; pass
amount_to_captureto capture less, and the remainder is released. Most payments allow only one capture. - To reject: cancel the PaymentIntent to release the hold.
- In the Dashboard: held payments appear as Uncaptured, and you can capture or cancel them from the payment's details page.
Design your approval workflow around the window
The window is short, so treat review time as part of your product:
- Set your own deadline. Promise a decision within, say, 48 hours, well inside the shortest window you might face.
- Cancel unreviewed bookings automatically. An expired authorization cancels the payment anyway, so cancel deliberately before that happens and tell the advertiser why.
- Capture on approval, not on the start date. The capture deadline is tied to the authorization, not the campaign. If an ad starts three weeks after booking, approve and capture within days; the ad still runs on its start date.
- Use clear rejection reasons. Our ad creative approval checklist gives you consistent criteria.
- Publish your cancellation rules. Explain what happens before and after capture; see ad booking refunds and cancellations.
For the bigger picture of taking ad payments, read how to accept advertising payments with Stripe.
How Spreadiom handles approval
Spreadiom builds this workflow in. When a slot requires approval, the advertiser's card is only authorized at checkout; it's charged when you approve, and the hold is released if you reject. Bookings that aren't reviewed in time are cancelled automatically before the authorization expires, so a forgotten review never turns into a silent expiry. Uploaded creatives are also screened automatically for adult, gambling and drug content before the booking can be paid, and the 5% platform fee applies only to completed, charged bookings—see pricing.
FAQ
How long can I hold a card payment before capturing it?
For online card payments through Stripe, an authorization is usually valid for 7 days. Some merchant-initiated Visa payments get about 4 days and 18 hours instead. Extended authorizations of up to 30 days exist, but mainly for businesses on IC+ pricing, and only for certain networks and categories. Check the capture_before field on each charge for its exact deadline, and plan to decide well before it.
What happens if I don't capture an authorized payment in time?
The authorization expires, the held funds are released back to the cardholder, and the payment's status changes to canceled. You can't capture it afterwards, so the advertiser would have to pay again. That's why it's better to cancel unreviewed bookings yourself before the deadline and explain why, rather than letting holds lapse unnoticed.
Does the advertiser see the hold on their card?
Usually, yes. The authorized amount reduces their available credit or balance, and many banks show it as a pending transaction. Some issuers' statements don't clearly separate holds from completed charges, which can cause confusion. Tell advertisers in the booking confirmation that their card has been authorized, not charged, and when the charge will happen.
Does canceling an authorization cost anything?
Stripe's documentation says you can cancel a payment before it's completed at no cost. That's the main financial advantage over charging immediately: if you refund a captured payment instead, Stripe doesn't return the processing fees from the original transaction. For ad sellers who reject some creatives, authorizing first avoids paying fees on bookings that never run.
Can I capture less than the authorized amount?
Yes. When you capture a PaymentIntent, you can pass a smaller amount, and Stripe automatically releases the rest of the hold. This helps if you approve a shorter booking than the advertiser requested. For most payments you can only capture once, so you can't capture part now and the remainder later. Agree on the new amount with the advertiser before capturing.
Sell ad space on your site — start free
Give every ad slot its own booking page. Advertisers pick dates, upload a banner and pay by card or PayPal — straight into your own account. No subscription; 5% only on completed bookings.