Place a hold on a card
Payment Intents API
Separate authorization and capture to create a charge now, but capture funds later.
Place a hold on a card to reserve funds now but only capture them after your business completes the service. For example, a hotel may authorize a payment in full prior to a guest’s arrival, then move the money when the guest checks out.
When a payment is authorized, the bank guarantees the amount and holds it on the customer’s card for up to seven days.
If the payment is not captured in this time, the authorization is canceled and the funds are released. When this happens, the PaymentIntent status transitions to
For in-person payments made with Terminal, the PaymentIntent must be captured within 24 hours.
To indicate that you want separate authorization and capture, set the value of capture_method option to
manual when creating the PaymentIntent. This parameter instructs Stripe to only authorize the amount on the customer’s card.
After the card is authorized, the PaymentIntent status will transition to
requires_capture. To capture the authorized funds, make a PaymentIntent capture request. The total authorized amount is captured by default—you can’t capture more than this. To capture less than the initial amount, pass the amount_to_capture option. Partially capturing automatically releases the remaining amount.
The following example demonstrates how to capture $7.50 of the authorized $10.99 payment:
Authorized payments can only be captured once. If you partially capture a payment, you cannot perform another capture for the difference. Depending on your requirements, you may be better served by saving customer’s card details for later and creating future payments as needed.
Card statements from some issuers do not distinguish between authorizations and captured (settled) payments, which can sometimes confuse customers.
Additionally, when a customer completes the payment process on a PaymentIntent with manual capture, it triggers the
payment_intent.amount_capturable_updated event. You can inspect the PaymentIntent’s amount_capturable property to see the total amount that can be captured from the PaymentIntent.
Only card payments support separate authorization and capture. Other payment methods (e.g., ACH or iDEAL) cannot be first authorized and then captured.