# Increment an authorization Increase an existing authorization on a confirmed PaymentIntent before you capture it. # Advanced integration Incremental authorization allows you to increase the authorized amount on a confirmed PaymentIntent before you capture it. Before capture, each incremental authorization appears on the credit card statement as an additional pending entry (for example, a 10 USD authorization incremented to 15 USD appears as separate 10 USD and 5 USD pending entries). After capture, the pending authorizations are removed, and the total captured amount appears as one final entry. ## Availability When using incremental authorizations, be aware of the following restrictions: - It’s only available with Visa, Mastercard, American Express, or Discover. - Certain card brands have merchant category restrictions (see below). - PaymentIntent must be completely uncaptured. If a PaymentIntent is partially captured with [multicapture](https://docs.stripe.com/payments/multicapture.md), incremental authorizations can no longer be used on that PaymentIntent. To learn more about incremental authorization and in-person payments made using Terminal, see [Incremental Authorizations](https://docs.stripe.com/terminal/features/incremental-authorizations.md). > #### IC+ feature > > We offer incremental 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 standard 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 Use incremental authorizations on payments that fulfill the criteria below. You can find your user category in the [Dashboard](https://dashboard.stripe.com/settings/update/company/update). Attempting to perform an incremental authorization on a payment that doesn’t fulfill the below criteria results in an error. | Card brand | Merchant country | Payment type | Merchant category | | -------------------- | ---------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Visa** | Global | All card payment types | All user categories | | **Mastercard** | Global* | All card payment types | All user categories | | **American Express** | Global | All card payment types** | All user categories | | **Discover** | Global | All card payment types | Car rental, hotels, local/suburban commuter, passenger transportation, including ferries, passenger railways, bus lines-charter, tour, steamship/cruise lines, boat rentals & lease, grocery stores and supermarkets, electric vehicle charging, eating places and restaurants, drinking places (alcoholic beverages), hotels, motels, resorts, trailer parks & campgrounds, equip/tool/furn/appl rental & leasing, automobile rental agency, truck and utility trailer rentals, motor home and rec vehicle rentals, parking lots, parking meters, and garages, amusement parks, circuses, fortune tell, recreation services (not classified) | | **Discover** | Global | Card not present | Taxicabs and limousines | \* Excludes MX users and JPY transactions for JP users \** Some American Express issuers don’t support incremental authorizations. When the feature is requested for these cards, the returned [status](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-incremental_authorization_supported) is `unavailable`. ### Networks with limited support (beta) The following card networks have limited support for incremental authorization: | Card brand | Merchant country | Payment type | Merchant category | | --------------- | ----------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Diners Club** | US, CA, UK (through Discover) | Card present | Car rental, hotels, local/suburban commuter, passenger transportation, including ferries, passenger railways, bus lines-charter, tour, steamship/cruise lines, boat rentals & lease, grocery stores and supermarkets, electric vehicle charging, eating places and restaurants, drinking places (alcoholic beverages), hotels, motels, resorts, trailer parks & campgrounds, equip/tool/furn/appl rental & leasing, automobile rental agency, truck and utility trailer rentals, motor home and rec vehicle rentals, parking lots, parking meters, and garages, amusement parks, circuses, fortune tell, recreation services (not classified) | | **Diners Club** | Global (through Discover) | Card not present | Car rental, hotels, local/suburban commuter, passenger transportation, including ferries, passenger railways, taxicabs/limousines, bus lines-charter, tour, steamship/cruise lines, boat rentals & lease, grocery stores and supermarkets, electric vehicle charging, eating places and restaurants, drinking places (alcoholic beverages), hotels, motels, resorts, trailer parks & campgrounds, equip/tool/furn/appl rental & leasing, automobile rental agency, truck and utility trailer rentals, motor home and rec vehicle rentals, parking lots, parking meters, and garages, amusement parks, circuses, fortune tell, recreation services (not classified) | | **UnionPay** | Global (through Discover) | Card not present | Car rental, hotels, local/suburban commuter, passenger transportation, including ferries, passenger railways, taxicabs/limousines, bus lines-charter, tour, steamship/cruise lines, boat rentals & lease, grocery stores and supermarkets, electric vehicle charging, eating places and restaurants, drinking places (alcoholic beverages), hotels, motels, resorts, trailer parks & campgrounds, equip/tool/furn/appl rental & leasing, automobile rental agency, truck and utility trailer rentals, motor home and rec vehicle rentals, parking lots, parking meters, and garages, amusement parks, circuses, fortune tell, recreation services (not classified) | | **JCB** | Global (through Discover) | Card not present | Car rental, hotels, local/suburban commuter, passenger transportation, including ferries, passenger railways, taxicabs/limousines, bus lines-charter, tour, steamship/cruise lines, boat rentals & lease, grocery stores and supermarkets, electric vehicle charging, eating places and restaurants, drinking places (alcoholic beverages), hotels, motels, resorts, trailer parks & campgrounds, equip/tool/furn/appl rental & leasing, automobile rental agency, truck and utility trailer rentals, motor home and rec vehicle rentals, parking lots, parking meters, and garages, amusement parks, circuses, fortune tell, recreation services (not classified) | ### Incremental authorizations with Strong Customer Authentication (SCA) If you and the cardholder are in a [country with SCA requirements](https://support.stripe.com/questions/countries-in-the-european-economic-area-\(eea\)-impacted-by-strong-customer-authentication-\(sca\)-regulation), there are important considerations to keep in mind when using incremental authorization. When you request the incremental authorization feature during the initial authorization, Stripe automatically configures the payment method for future off-session usage. Although this requires 3D Secure (3DS) for the initial authorization, subsequent incremental authorizations on this payment is considered merchant-initiated, potentially exempting any additional SCA. Clearly indicate to your customer during the initial transaction that their payment will be saved for future off-session usage with the incremental authorizations. With some 3DS transactions, the [liability for fraudulent chargebacks (stolen or counterfeit cards) shifts from you to the card issuer](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#disputed-payments). You don’t benefit from liability shift when submitting merchant-initiated transactions. > #### Compliance > > You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. For instance, if you want to save their payment method for future use, such as charging them when they’re not actively using your website or app. Add terms to your website or app that state how you plan to save payment method details and allow customers to opt in. > > If you want to charge them when they’re offline, make sure your terms include the following: > > - The customer’s agreement to your initiating a payment or a series of payments on their behalf for specified transactions. - The anticipated timing and frequency of payments (for example, if the charges are for scheduled installments, subscription payments, or unscheduled top-ups). - How you determine the payment amount. - Your cancellation policy, if the payment method is for a subscription service. > > Make sure you keep a record of your customer’s written agreement to these terms. ## Best practices When using incremental authorization, proactively notify your end customer with the details of any authorizations for estimated amounts, which might be followed by incremental authorizations that increase those amounts. Here are some best practices for doing so: - Disclose that an authorization is for an estimated amount and that subsequent authorization requests might follow at the time of checkout, before purchase. - Base estimated amounts on a genuine estimate of what the total transaction amount will be. > #### Compliance > > You’re responsible for your compliance with all applicable laws, regulations, and network rules when using incremental authorization. Consult the network rules for the card networks that you plan to use this feature with to make sure your sales comply with applicable rules, which vary by network. For example, most card networks restrict how you can calculate estimated amounts included in the initial authorization, and prohibit the use of incremental authorizations for transactions where the transaction amount should be known at the time of authorization (for example, charges for recurring subscriptions). > > The information provided on this page relating to your compliance with these requirements is for your general guidance, and isn’t legal, tax, accounting, or other professional advice. Consult with a professional if you’re unsure about your obligations. ## Create and confirm an uncaptured PaymentIntent You can use the `request_incremental_authorization` parameter to specify the PaymentIntents you plan to increment. Use the `if_available` or `never` parameters to determine when to start incrementing a PaymentIntent: - `if_available`: The created PaymentIntent allows for future increments based on [incremental authorization support availability](https://docs.stripe.com/payments/incremental-authorization.md#availability). - `never`: The created PaymentIntent doesn’t allow for future increments. You can only perform incremental authorizations on uncaptured payments after [PaymentIntent confirmation](https://docs.stripe.com/api/payment_intents/confirm.md). To adjust the amount of a payment before confirmation, use [update method](https://docs.stripe.com/api/payment_intents/update.md) instead. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d "payment_method_types[]=card" \ -d payment_method=pm_card_debit_incrementalAuthAuthorized \ -d confirm=true \ -d capture_method=manual \ -d "expand[]=latest_charge" \ -d "payment_method_options[card][request_incremental_authorization]=if_available" ``` In the PaymentIntent confirmation response, the [payment_method_details](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details) field on the [latest_charge](https://docs.stripe.com/api/charges/object.md) contains `available` or `unavailable` based on the customer’s payment method and [the availability criteria mentioned above](https://docs.stripe.com/payments/incremental-authorization.md#availability), which determines whether a PaymentIntent is eligible for incremental authorization or not. (If you didn’t request incremental authorization in your PaymentIntent confirmation request, it will be `unavailable`.) ```json // PaymentIntent Response { "id": "pi_ANipwO3zNfjeWODtRPIg", "object": "payment_intent", "amount": 1000, "amount_capturable": 1000, "amount_received": 0, ... // if latest_charge is expanded { "latest_charge": { "amount": 1000, "payment_method_details": { "card": { "incremental_authorization": {"status": "available" // or "unavailable" } } } ... } } } ``` ## Perform an incremental authorization To increase the authorized amount on a PaymentIntent, use the [increment_authorization](https://docs.stripe.com/api/payment_intents/increment_authorization.md) endpoint and provide the updated total [authorization amount](https://docs.stripe.com/api/payment_intents/increment_authorization.md#increment_authorization-amount) to increment to, which must be greater than the original authorized amount. This attempts to authorize for a higher amount on your customer’s card. A single PaymentIntent can call this endpoint multiple times to further increase the authorized amount. You have a maximum of 10 incremental authorization attempts per PaymentIntent. #### curl ```bash curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/increment_authorization \ -u <>: \ -d "amount"=1500 ``` If the incremental authorization succeeds, it returns the PaymentIntent object with the updated amount. If the authorization fails, it returns a [card_declined](https://docs.stripe.com/error-codes.md#card-declined) error instead. The PaymentIntent object remains capturable for the previously authorized amount. Any potential updates to other PaymentIntent fields (for example, [application_fee_amount](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-application_fee_amount), [transfer_data](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-transfer_data), [metadata](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-metadata), [description](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-description), and [statement_descriptor](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-statement_descriptor)) aren’t saved if the incremental authorization fails. Incremental authorization has a maximum cap of either 500 USD (or local equivalent) over, or 500% over the previously authorized amount (whichever is higher) for each individual increment. ## Capture the PaymentIntent Whether you increase the authorized amount on a PaymentIntent with an incremental authorization or not, you need to capture the funds before the initial authorization expires–incremental authorizations don’t extend [the validity period](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md). To capture the authorized amount on a PaymentIntent with prior incremental authorizations, use the [capture endpoint](https://docs.stripe.com/api/payment_intents/capture.md) as usual. #### curl ```bash curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/capture \ -u <>: ``` If the incremental authorization succeeds, it returns the captured PaymentIntent object with the updated amount. If the authorization fails, it returns a [card_declined error](https://docs.stripe.com/error-codes.md#card-declined) instead. The PaymentIntent isn’t captured, but it remains capturable for the previously authorized amount. Any potential updates to other PaymentIntent fields (for example, [application_fee_amount](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-application_fee_amount), [transfer_data](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-transfer_data), [metadata](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-metadata), [description](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-description) and [statement_descriptor](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-statement_descriptor)) aren’t saved if the incremental authorization fails. ## Test your integration Use a Stripe test card with any CVC, postal code, and future expiration date to trigger incremental authorizations while testing: 1. Create the PaymentIntent using the test card in the [create and confirm PaymentIntent step](https://docs.stripe.com/payments/incremental-authorization.md#create-and-confirm). 1. Perform the incremental authorization with the parameters specified in the [perform an incremental authorization step](https://docs.stripe.com/payments/incremental-authorization.md#increment-authorization). Use the following test cards to simulate incremental authorization success or failure. | Number | Payment Method | Description | | ---------------- | ---------------------------------------------- | ------------------------------------------------------------------------- | | 4000058400000063 | `pm_card_debit_incrementalAuthAuthorized` | Increases the authorization amount to the amount provided in the request. | | 4000008400000076 | `pm_card_credit_disableEnterpriseCardFeatures` | Declines the increased authorization request. |