Skip to content
Sign in
An image of the Stripe logo
/
Create account
Sign in
Home
Payments
Finance automation
Banking as a service
Developer tools
No-code
All products
Home
Payments
Finance automation
Home
Payments
Finance automation
Banking as a service
Developer tools
Overview
Get started
About Stripe payments
Start an integration
Payment Links
Checkout
Web Elements
Mobile Elements
Payment scenarios
During the payment
After the payment
Add payment methods
More payment scenarios
    Overview
    Set up future payments
    Save payment details during payment
    Place a hold on a payment method
    Flexible payment scenarios
      Capture a payment multiple times
      Capture more than the authorized amount on a payment
      Place an extended hold on an online card payment
      Increment an authorization
      Migrate from beta
    Build a two-step confirmation experience
    Collect payment details before creating an Intent
    Finalize payments on the server
    Finalize payments on the server using Confirmation Tokens
    3D Secure authentication
    US and Canadian cards
    Forward card details to third-party API endpoints
Faster checkout with Link
Other Stripe products
Connect
Terminal
Radar
Financial Connections
Crypto
Identity
Climate
Resources
About the APIs
Implementation guides
Regulation support
Testing
Payments
·
HomePaymentsMore payment scenariosFlexible payment scenarios

Increment an authorization

Increase an existing authorization on a confirmed PaymentIntent before you capture it.

Caution

Incremental authorization is part of the functionality we offer to users on IC+ pricing. If you’re on standard Stripe pricing and want access to this feature, contact us at incremental-auth@stripe.com.

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:

  • Not currently available if you and the cardholder are in a country with Strong Customer Authentication requirements or similar authentication requirements.
  • Only available with Visa, Mastercard, or Discover.
  • Only eligible for online card payments.
  • Certain card brands have merchant category restrictions (see below).

Availability by card network and merchant category

Attempting to perform an incremental authorization on a payment that doesn’t fulfill the below criteria results in an error.

Card brandMerchant countryMerchant category
VisaGlobal*All user categories
MastercardGlobal*All user categories
DiscoverGlobalCar 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)

* Excludes MX users and JPY transactions for JP users

Networks with limited support (beta)

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.

These best practices might be required under applicable network rules, depending on the network.

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.

All PaymentIntents are incrementable by default. 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.

  • never: The created PaymentIntent doesn’t allow for future increments.

You can only perform incremental authorizations on uncaptured payments after PaymentIntent confirmation. To adjust the amount of a payment before confirmation, use update method instead.

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -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 field on the latest_charge contains available or unavailable based on the customer’s payment method and the availability criteria mentioned above, 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.)

// 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 endpoint and provide the updated total 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.

Command Line
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/increment_authorization \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:
\ -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 error instead. The PaymentIntent object remains capturable for the previously authorized amount. Any potential updates to other PaymentIntent fields (for example, application_fee_amount, transfer_data, metadata, description, and statement_descriptor) aren’t saved if the incremental authorization fails.

The underlying Charge object for the PaymentIntent contains an amount_updates array field that’s appended with the results of the incremental authorization. It shows whether the authorization succeeded or failed, and any details associated with the result.

Incremental authorization has a maximum cap of either +50 USD (or local equivalent) or +50% of the previously authorized amount (whichever is higher) for each individual increment. If you need access to higher limits, you can contact support.

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. To capture the authorized amount on a PaymentIntent with prior incremental authorizations, use the capture endpoint as usual.

Command Line
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/capture \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:

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 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, transfer_data, metadata, description and statement_descriptor) aren’t saved if the incremental authorization fails.

Test your integration

Use the incremental authorization Stripe test card with any CVC, postal code, and future expiration to trigger incremental authorization while in test mode:

  1. First create the PaymentIntent using the test card in the create and confirm PaymentIntent step above.

  2. Perform the incremental authorization with the parameters specified in the perform an incremental authorization step above, and use the test card to trigger an incremental authorization.

NumberPayment MethodDescription
pm_card_debit_incrementalAuthAuthorizedThis increases the authorization amount to the amount provided in the request.
Was this page helpful?
Need help? Contact Support.
Watch our developer tutorials.
Check out our product changelog.
Questions? Contact Sales.
Powered by Markdoc
You can unsubscribe at any time. Read our privacy policy.
On this page
Availability
Best practices
Create and confirm an uncaptured PaymentIntent
Perform an incremental authorization
Capture the PaymentIntent
Test your integration
Products Used
Payments
Stripe Shell
Test mode
Welcome to the Stripe Shell! Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Log in to your Stripe account and press Control + Backtick (`) on your keyboard to start managing your Stripe resources in test mode. - View supported Stripe commands: - Find webhook events: - Listen for webhook events: - Call Stripe APIs: stripe [api resource] [operation] (e.g., )
The Stripe Shell is best experienced on desktop.
$