Capture more than the authorized amount on a payment
Use overcapture to capture more than the authorized amount for a PaymentIntent.
Overcapture allows you to capture with an amount that’s higher than the authorized amount for a card payment. Unlike incremental authorizations, overcapture doesn’t result in additional authorizations with the card networks. When you overcapture a PaymentIntent, your customer won’t see any immediate updates on their credit card statement. After the captured amount settles, the initial pending authorization gets updated with the final captured amount.
Availability
When using overcapture, be aware of the following restrictions:
- Only available with Visa, Mastercard, American Express, or Discover.
- Only eligible for online card payments. For in-person card payments see how to collect tips.
- Card brands limit the amount that you can overcapture (generally calculated as a percentage of the authorized amount), and impose additional constraints, including country, card type, and merchant category restrictions (see below).
- mode is set to
payment
and capture_method is set tomanual
on the CheckoutSession
IC+ feature
We offer overcapture to users on IC+ pricing. If you’re on standard Stripe pricing and want access to this feature, learn more at support.stripe.com.
Availability by card network, merchant country, and merchant category
Card brand | Merchant country | Merchant category | Percent limit |
---|---|---|---|
Visa* | Global | Taxicabs and limousines; eating places and restaurants; drinking places (alcoholic beverages); fast food restaurants; beauty and barber shops; health and beauty spas | +20% |
Global | Car rentals | Greater of +15% or +75 USD (or local currency equivalent) | |
Global | Lodging; cruise lines | +15% | |
Global** | All other merchant categories | +15% | |
Mastercard | US*** | Eating places and restaurants; fast food restaurants | +30% |
American Express | Global**** | Eating places and restaurants; drinking places (alcoholic beverages); fast food restaurants | +30% |
Global | Taxicabs and limousines; beauty and barber shops; health and beauty spas | +20% | |
Global | Lodging; car rentals; truck and utility trailer rentals; motor home and recreational vehicle rentals; grocery stores; retail stores | +15% | |
Discover | Global | Taxicabs and limousines; eating places and restaurants; drinking places (alcoholic beverages); fast food restaurants; beauty and barber shops; health and beauty spas | +20% |
Global | Lodging; car rentals | +15% |
* Excludes merchants in the European Economic Area (“EEA”) where the card is also issued in the EEA
** For cardholder-initiated transactions
*** Card must also be issued in the United States
**** The percent limit for debit and prepaid card payments is 20%
Networks with limited support (beta)
Overcapture with Strong Customer Authentication (SCA)
If you and the cardholder are in a country that has Strong Customer Authentication (SCA) requirements, keep in mind the limitations of overcapture availability.
- Under SCA requirements, you generally need to authenticate an amount that’s greater than or equal to the amount that you eventually capture. For this reason, you need to authenticate and authorize for the highest estimated amount that you plan to capture, rather than using overcapture as outlined elsewhere on this page. Subsequently, you can capture up to the full amount authenticated, depending on the total amount for the goods or services provided. If you find it necessary to capture an amount beyond the originally authorized and authenticated amount, you must cancel the original payment and create a new one with the correct amount. However, there are some exceptions to this requirement (see below).
- There are a number of transaction exemptions for SCA where overcapture might be permissible. For example, merchant-initiated transactions (MIT) where the customer isn’t physically present during the checkout flow are potentially exempt. See when to categorize a transaction as MIT.
You need to familiarize yourself with the complete documentation to gain a comprehensive understanding of overcapture and SCA requirements. See our SCA guide for more information.
You can use the custom_text field when creating a new CheckoutSession 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 overcapture. Make sure to review the rules for the card networks that you plan to use this feature with to make sure your sales comply with the applicable rules, which vary by network. For example, some card networks don’t allow overcapture for transactions where the final transaction amount should be known at the time of authorization.
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 a Checkout Session
Add a checkout button to your website that calls a server-side endpoint to create a Checkout Session.
<html> <head> <title>Buy cool new product</title> </head> <body> <!-- Use action="/create-checkout-session.php" if your server is PHP based. --> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
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 to charge
- Currencies to use
You must populate success_
with the URL of a page on your website that Checkout returns your customer to after they complete the payment. You can optionally also provide a cancel_
of a page on your website that Checkout returns your customer to if they terminate the payment process before completion.
Note
Checkout Sessions expire 24 hours after creation by default.
After creating a Checkout Session, redirect your customer to the URL returned in the response.
To enable the overcapture feature, set request_overcapture to if_
.
After the customer completes checkout, look at the overcapture.status field on the latest_charge in the PaymentIntent to determine if overcapture is available for the payment based on availability. If available
, the maximum_amount_capturable field indicates the maximum amount capturable for the PaymentIntent. If unavailable
, the maximum_amount_capturable is the amount authorized.
// PaymentIntent response { "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 "overcapture": { "status": "available", // or "unavailable" "maximum_amount_capturable": 1200 } } } ... } ... }
Capture the PaymentIntent
To capture more than the currently authorized amount on a PaymentIntent, use the capture endpoint and provide an amount_to_capture up to the maximum_amount_capturable.
If you need to capture an amount larger than the maximum_
, perform an incremental authorization to increase the authorized amount, where available.
The amount_capturable and amount_received fields update accordingly in the PaymentIntent capture response for a successful overcapture. The captured PaymentIntent that returns has an updated amount to reflect the total monetary amount moved for this payment. Use the amount_authorized field on the associated Charge to reference the initial amount authorized for a successfully overcaptured payment.
// PaymentIntent response { "id": "pi_xxx", "object": "payment_intent", "amount": 1200, "amount_capturable": 0, "amount_received": 1200, "status": "succeeded", ... // if latest_charge is expanded "latest_charge": { "id": "ch_xxx", "object": "charge", "payment_method_details": { "card": { "amount_authorized": 1000, "overcapture": { "maximum_amount_capturable": 1200, "status": "available" // or "unavailable" } } } ... } ... }
Test your integration
Use any of the below Stripe test cards with any CVC and future expiration date to request and perform overcaptures while in test mode. If overcapture is available on payments for a given network in test mode, it’s also available in live mode.
Card brand | Number | Payment method |
---|---|---|
Visa | pm_ | |
Mastercard | pm_ | |
Amex | pm_ | |
Discover | pm_ |