# Place an extended hold on an online card payment Learn how to use extended authorizations to capture online card payments up to 30 days after authorization. # Full hosted page Extended authorizations have a longer authorization validity period, which allows you to hold customer funds for longer than standard authorization validity windows. For most card networks, the default authorization validity period is 7 days for online payments and 2 days for in-person [Terminal](https://docs.stripe.com/terminal.md) payments, whereas extended validity periods can go up to 30 days depending on the card network. For more information about authorization validity windows, see [place a hold on a payment method](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md). ## Availability When you use extended authorizations, there are no regional restrictions. However, be aware of the following limitations: - They’re only available with Visa, Mastercard, American Express, and Discover. - Certain card brands have merchant category restrictions. Refer to the network availability table below. - This page describes extended authorizations for online card payments. For in-person card payments using extended authorizations, refer to the [Terminal documentation](https://docs.stripe.com/terminal/features/extended-authorizations.md). - [mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) is set to `payment` and [capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) is set to `manual` on the [CheckoutSession](https://docs.stripe.com/api/checkout/sessions/.md). > #### IC+ Feature > > We offer extended authorizations to users on *IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) pricing. If you’re on blended Stripe pricing and want access to this feature, contact us using the form at [Stripe support](https://support.stripe.com). ### Availability by card network and merchant category Every card network has different rules that determine which payments have extended authorizations available, and how long they’re valid. The following table shows the validity windows and transaction types that extended authorization is available for using Visa, Mastercard, American Express, and Discover. However, we recommend that you rely on the [capture_before field](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before) to confirm the validity window for any given payment because these rules can change without prior notice. | Card brand | Merchant category | Extended authorization validity window | | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | | **Visa** | Hotel, lodging, vehicle rental, and cruise line All other merchant categories* | 30 days** | | **Mastercard** (not including Maestro and Cirrus cards) | All merchant categories | 30 days | | **American Express** | Lodging and vehicle rental | 30 days*** | | **Discover** | Airline, bus charter/tour, car rental, cruise line, local/suburban commuter, passenger transportation including ferries, hotel, lodging, and passenger railway | 30 days | \* For other merchant categories, Stripe charges an additional 0.08% fee per transaction. The extended window only applies to [Customer-Initiated Transactions](https://docs.stripe.com/payments/cits-and-mits.md) and doesn’t apply to transactions with businesses in Japan or transactions related to healthcare, bill payment, or debt repayment. \** The exact extended authorization window for Visa is 29 days and 18 hours, to allow time for clearing processes.\*** Although your validity window is extended to 30 days, you must capture the authorized funds no later than the end of your customer’s stay or rental. ### Networks with limited support (beta) The following card networks have limited support for extended authorization: | Card brand | Merchant country | Merchant category | Extended authorization validity window | | --------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | | **Diners Club** | US (through Discover) | All merchant categories | 30 days | | **UnionPay** | Global, excluding US and Canada | All merchant categories | 27 to 29 days | | | US and Canada (through Discover) | Airline, bus charter/tour, car rental, cruise line, local/suburban commuter, passenger transportation including ferries, hotel, lodging, and passenger railway | 30 days | ### Recent changes to availability - **September 2023**: Extended authorizations on Discover are no longer available for the following merchant categories due to information provided by the network: eating and drinking places, boat rental, motor home and RV rental, truck rental, timeshares, taxicabs/limousines, trailer parks/campgrounds, equipment/furniture/appliance rental, amusement parks, circuses, fortune tellers, recreational services. - **September 2023**: The authorization validity period for Visa was reduced from 31 to 30 days to avoid non-compliance network fees. To make sure we clear transactions within that window, we added a buffer of 6 hours, making the effective authorization window 29 days and 18 hours. ## Best Practices Customers see their funds held longer when you use extended authorizations. Use clear [statement descriptors](https://docs.stripe.com/get-started/account/statement-descriptors.md) to avoid increased disputes from unrecognized payments. You can use the [custom_text](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-custom_text) field when creating a new [CheckoutSession](https://docs.stripe.com/api/checkout_sessions.md) to display additional text on the checkout page to help meet compliance requirements. > #### Compliance > > You’re responsible for your compliance with all applicable laws, regulations, and network rules when using extended authorization. Consult the network specifications for the card networks that you plan to accept using this feature with to make sure your sales are compliant with the applicable rules, which vary by network. For instance, for many networks extended validity windows are only for cases where you don’t know the final amount that you’ll capture at the time of authorization. > > The information provided on this page relating to your compliance with these requirements is for your general guidance, and is not legal, tax, accounting, or other professional advice. Consult with a professional if you’re unsure about your obligations. ## Create a CheckoutSession Add a checkout button to your website that calls a server-side endpoint to create a [Checkout Session](https://docs.stripe.com/api/checkout/sessions/create.md). ```html Buy cool new product
``` A Checkout Session is the programmatic representation of what your customer sees when they’re redirected to the payment form. You can configure it with options such as: - [Line items](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) to charge - Currencies to use You must populate `success_url` with the URL value of a page on your website that Checkout returns your customer to after they complete the payment. > Checkout Sessions expire 24 hours after creation by default. After creating a Checkout Session, redirect your customer to the [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) returned in the response. To enable the extended authorization feature: - Set [capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) to `manual`. - Set [request_extended_authorization](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-card-request_extended_authorization) to `if_available`. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_intent_data[capture_method]=manual" \ -d "payment_method_options[card][request_extended_authorization]=if_available" \ --data-urlencode "success_url=https://example.com/success" ``` Rely on the [capture_before field](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before) to confirm the validity window for a given payment. The validity window won’t change after the CheckoutSession is complete. To determine if the authorization is extended after the CheckoutSession is complete, look at the [extended_authorization.status field](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-extended_authorization-status) on the associated charge. ```json { "id": "pi_xxx", "object": "payment_intent", "amount": 1000, "amount_capturable": 1000, "amount_received": 0, "status": "requires_capture", ... // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "payment_method_details": { "card": { "amount_authorized": 1000,"capture_before": 1696524701, "extended_authorization": { "status": "enabled", // or "disabled" } } } ... } ... } ``` ## Test your integration Use the Stripe test cards below with any CVC and future expiration date to request extended authorizations while testing. If extended authorizations are available on payments for a given network while testing, they’re also available for live payments. | Card brand | Number | Payment method | | ---------- | ---------------- | -------------------- | | Visa | 4242424242424242 | `pm_card_visa` | | Mastercard | 5555555555554444 | `pm_card_mastercard` | | Amex | 378282246310005 | `pm_card_amex` | | Discover | 6011111111111117 | `pm_card_discover` | ## See also - [Place a hold on a payment method](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)