Pre-authorization charges: what a card hold is and how long it lasts
What a pre-authorization (card hold) is, how long Visa, Mastercard and Amex holds last, how to capture or release one, and how subscriptions use it.
A pre-authorization is a temporary hold on a card: the bank sets the amount aside, but no money moves until the merchant captures it. The customer sees a pending charge. If the merchant captures, it becomes a real payment; if the merchant cancels it, or does not capture in time, the hold is released and the pending charge disappears.
Hotels and car rentals are the classic users. Subscription businesses use holds too: to check a card at signup, to secure a trial, or to charge only after a usage period is known.
This guide uses what payment providers document themselves: Stripe’s place a hold on a payment method, extended authorization, increment an authorization and SetupIntents pages, and Braintree’s transaction statuses and refunds, voids and credits. All accessed 9 November 2026.
What is a pre-authorization charge?
A card payment has two steps: authorization (the bank approves and reserves the amount) and capture (the merchant asks for the money). Most online payments do both at once. A pre-authorization separates them.
Stripe calls this “manual capture” and puts it simply: “Authorizing a payment guarantees the amount by holding it on the customer’s payment method.” Braintree’s description of the Authorized status is the customer’s view: “Your customer may see a pending charge on his or her account. However, before the customer is actually charged and before you receive the funds, you must submit the transaction for settlement.”
Common names for the same thing: pre-auth, authorization hold, card hold, pending charge, “capture later”.
How long does a pre-authorization hold last?
It depends on the card network, on whether the customer or the merchant started the payment, and on the processor. Stripe’s validity windows for online (card-not-present) payments:
| Card brand | Customer-initiated | Merchant-initiated |
|---|---|---|
| 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 |
Braintree publishes different expiry times for its own processing, which shows that the rules vary by processor and merchant category. For example, it lists 8 days by default for Visa, 3 days for Visa recurring or unscheduled merchant-initiated payments, 7 days for a Mastercard final authorization and 30 days for a Mastercard preauthorization, 7 days by default for American Express, and 30 days by default for Discover, Diners Club, UnionPay and JCB.
Longer holds exist. Stripe offers extended authorizations “up to 30 days after authorization” for eligible online card payments, and 30-day holds for JPY transactions on accounts in Japan.
Note that Stripe classifies payments as customer- or merchant-initiated “based on signals of cardholder participation, not solely on API parameters”. A payment flagged off_session might still count as customer-initiated if a CVC is present.
What happens when a hold expires?
The money goes back to being available to the customer, and you can no longer capture it.
- Stripe: “If the authorization expires before you capture the funds, the funds are released and the payment status changes to
canceled.” - Braintree: the transaction moves to “Authorization expired”, meaning it “spent too much time in the Authorized status and was marked as expired.”
To charge the customer after that, you need a new authorization, which the bank can decline.
How do you capture or release a hold?
| Action | Stripe | Braintree |
|---|---|---|
| Place a hold | capture_method=manual on the PaymentIntent or Checkout Session |
Authorize without submitting for settlement |
| Charge it | Capture the PaymentIntent before capture_before |
Submit for settlement |
| Release it | Cancel the PaymentIntent | Void (while Authorized or Submitted for Settlement) |
Releasing a hold you will not use is good practice, not just politeness. Braintree warns that if you do not want to settle the transaction, “you should void it to avoid a misuse of authorization fee.” After a void, Braintree says the authorization “should disappear from the customer’s statement within 24 to 48 hours”, though some banks are slower; in that case the customer can ask their bank, which “should be able to see the void request”.
Not every payment method supports holds. Stripe lists cards, Affirm, Afterpay, Cash App Pay, Klarna and PayPal among those that do, and ACH and iDEAL among those that do not. For other differences between a void, a refund and a chargeback, see what is a payment reversal.
How do subscription businesses use pre-authorizations?
Three common cases:
- Checking the card at signup. When you save a card for future payments, Stripe says it “might be necessary to authenticate the customer or check the card’s validity with the customer’s bank.” Depending on the bank, the customer may briefly see a pending line for that check. Explaining it on the checkout page avoids “what is this charge?” support tickets.
- Securing a free trial. Collecting and checking a card before the trial means a card that cannot pay you fails on day one, not at the first renewal. Pair it with a reminder before the trial ends; see trial to paid conversion.
- Usage-based or metered billing. Some businesses hold an estimated amount and capture the real one at the end. Keep the validity windows above in mind: a monthly cycle is longer than any standard hold.
Billing tools such as Chargebee, Recurly, Zuora or Maxio rely on the gateway behind them for authorizations, so check what yours supports before designing around holds. If you sell through a merchant of record like Paddle, Lemon Squeezy or Polar, the platform decides.
Why does a customer see a charge they did not pay?
Usually because a hold is still pending. The customer sees an amount “taken”, but nothing has been charged yet. Three answers cover most support questions:
- It is a hold, not a payment. It will either become the real charge or disappear.
- It disappears on its own when the merchant releases it or the hold expires (see the table above).
- If it stays after a release, the customer’s bank can see the void and update the statement.
A pending hold that looks like a double charge is one of the ways a customer ends up disputing a payment. See friendly fraud in subscriptions and billing descriptors.
FAQ
What is a pre-authorization charge?
A temporary hold on a card. The amount is reserved but not taken until the merchant captures it. If it is not captured, it is released.
How long does a pre-authorization take to drop off?
It depends on the network and processor. On Stripe, most online holds last 7 days (5 days for Visa merchant-initiated payments). After a void on Braintree, the hold should disappear within 24 to 48 hours, although some banks take longer.
Is a pre-authorization the same as a charge?
No. A charge moves money. A pre-authorization only reserves it; it becomes a charge when the merchant captures it.
Can a merchant capture more than the pre-authorized amount?
Not with a standard hold. Stripe lets you capture less than the authorized amount (with amount_to_capture), and offers a separate option to increment an authorization on eligible payments before capture. Otherwise, you need a new authorization.
Why did I see a small pending charge when I signed up?
It can be a check of the card when it was saved for future payments, not a real payment. Ask the merchant if it does not disappear.
Can a pre-authorization be declined?
Yes. It goes through the same bank approval as a normal payment, with the same decline codes. See “do not honor” card decline.
How NoChurn helps
NoChurn does not place or capture holds: authorizations stay in your billing tool or gateway. What it does is act on what happens next. When a renewal or a capture fails, NoChurn reads the decline code and sends an AI-written recovery email, which you review, with a link to update the payment method. The churn score from 0 to 100 looks at the payment method from signup, and a card removed before renewal raises the score so you can follow up before the payment fails.
It connects to Stripe in one click and works with Braintree, Chargebee, Recurly, Paddle and others, or with any billing through the API. Pricing depends only on MRR, with no commission (a custom sending domain needs a paid plan, from $9). See failed payments.