Refund transactions
Stripe Terminal supports both automatic and manual capture.
When the SDK returns a confirmed PaymentIntent to your app, the payment is authorized but not captured. You can cancel payments that are authorized and not captured. If the PaymentIntent has already been captured, you must refund the underlying charge created by the PaymentIntent, using the refunds API or Dashboard.
We recommend reconciling payments on your backend after a day’s activity to prevent unintended authorizations and uncollected funds.
Interac is a single-message network; interac_present
PaymentIntents are automatically captured. In lieu of canceling PaymentIntents, your application should allow initiating an in-person refund at the end of the checkout flow.
Cancel payments Client-sideServer-side
You can cancel a card_present
PaymentIntent at any time before it has been captured. Canceling a PaymentIntent releases all uncaptured funds, and a canceled PaymentIntent can no longer be used to perform charges.
This can be useful if, for example, your customer decides to use a different payment method or pay with cash after the payment has been processed. In your application’s UI, consider allowing the user to cancel after processing the payment, before finalizing the payment and notifying your backend to capture.
Client-side
Cancel a PaymentIntent
from your client using the iOS, Android, or React Native SDK:
Server-side
The JavaScript SDK and server-driven integration require you to cancel the PaymentIntent
on your server. For iOS, Android, or React Native, you can cancel the PaymentIntent
on your server if the information required to start a payment isn’t readily available in your app.
Perform refunds Client-sideServer-side
When you use a PaymentIntent to collect payment from a customer, Stripe creates a charge behind the scenes. To refund the customer’s payment after the PaymentIntent has succeeded, create a refund by passing in the PaymentIntent ID or the charge ID. You can also optionally refund part of a payment by specifying an amount.
You can perform refunds with the API or through the Dashboard. For Interac transactions in Canada, the BBPOS WisePOS E reader supports in-person refunds instead.
Online refunds don’t require a cardholder to present their card again at the point of sale. The following example shows how to create a full refund by passing in the PaymentIntent ID.
To refund part of a PaymentIntent, provide an amount
parameter, as an integer in cents (or the charge currency’s smallest currency unit):