Refund and cancel payments
You can partially or fully refund any successful payment. (You can also cancel a payment when it’s in the appropriate state.) Refunds use your available Stripe balance, which doesn’t include any pending balance. If your available balance doesn’t cover the amount of the refund, Stripe debits the remaining amount from your bank account. To view a list of all your refunds, go to the Refunded payments page in the Dashboard.
It’s possible for a refund to be held in a pending state due to a negative balance on your account. In this situation, top up your account balance or enable auto-debits to process the refund. Read more about pending refunds on Stripe Support.
Depending on your fee schedule, you may incur fees to refund a charge. Additionally, Stripe’s processing fees from the original transaction aren’t returned in the case of a refund. For example, if you refund a bank transfer payment, partial and full refunds might be charged a fee.
We submit refund requests to your customer’s bank or card issuer. Successful refunds appear on the bank statement of your customers in real time, depending on the card network and issuing bank. You can’t cancel refunds after they’re issued. Disputes and chargebacks aren’t possible on credit card charges that are fully refunded.
If all of the following conditions apply, we send an email to your customer notifying them of the refund:
- The original charge was created on a customer in your Stripe account.
- The customer has a stored email address.
- You enabled Email customers for refunds in the Dashboard.
Some refunds—those issued shortly after the original charge—appear in the form of a reversal instead of a refund. In the case of a reversal, the original charge drops off the customer’s statement, and a separate credit isn’t issued.
You can issue refunds by using the Refunds API or the Dashboard. Stripe immediately processes refunds, which can’t be canceled. You can issue more than one refund against a charge, but you can’t refund a total greater than the original charge amount.
Refunds can only be sent back to the original payment method used in a charge. You can’t send a refund to a different destination, such as another card or bank account).
Refunds to expired or canceled cards are handled by the customer’s card issuer and, in most cases, credited to the customer’s replacement card. If no replacement exists, the card issuer usually delivers the refund to the customer using an alternate method (for example, check or bank account deposit). In rare cases, a refund back to a card may fail.
Always attempt to refund card payments through Stripe and not using another method. If a payment is found to be fraudulent and a dispute is received, you can lose both the disputed amount and the amount you refunded separately.
For other payment methods, like ACH and iDEAL, refund handling varies from bank to bank. If a customer has closed their method of payment, the bank might return the refund to us—at which point it’s marked as failed.
Handle failed refunds
A refund can fail if the customer’s bank or card issuer has been unable to process it correctly. For example, a closed bank account or a problem with the card can cause a refund to fail. When this happens, the bank returns the refunded amount to us and we add it back to your Stripe account balance. This process can take up to 30 days from the post date.
When using the API, a Refund object’s status transitions to
failed and includes these attributes:
failure_reason: The reason why the refund failed.
failure_balance_transaction: The ID of the balance transaction representing the amount returned to your Stripe balance.
In the rare instance that a refund fails, we notify you using the
charge.refund.updated webhook event. You’ll then need to arrange an alternative way of providing your customer with a refund.
To refund a payment that’s no longer available from the API or the Dashboard search, issue an unlinked refund. Unlinked refunds can be enabled for your account by emailing email@example.com. You can export refund reports through the Reports Dashboard, with the Reporting API, or one of our reporting products, such as Stripe Data Pipeline and Stripe Sigma.
Trace a refund
After you initiate a refund, Stripe submits refund requests to your customer’s bank or card issuer. Your customer sees the refund as a credit approximately 5-10 business days later, depending upon the bank. A customer may contact you if they don’t see the refund. A refund may not be visible to the customer for several reasons:
- Refunds issued shortly after the original charge appear in the form of a reversal instead of a refund. In the case of a reversal, the original charge drops off the customer’s statement, and a separate credit is not issued.
- Refunds can fail if the customer’s bank or card issuer has been unable to process it correctly. The bank returns the refunded amount to us and we add it back to your Stripe account balance. This process can take up to 30 days from requesting the refund.
If a customer is asking about a refund, it can be helpful to give them the Acquirer Reference Number (ARN) corresponding to the refund. An ARN is a unique number assigned to a card transaction as it moves through the payment flow. Your customer can then take the ARN to their bank, which will be able to provide more information about when the refund will be available. Having a reference number can also increase your customer’s confidence that the refund has been initiated.
ARNs are available under the following conditions:
- They’re only supported for Visa and Mastercard transactions.
- It takes 1-3 business days after initiating the refund to receive the ARN from downstream banking partners.
- An ARN isn’t available in the case of a reversal, since the original charge isn’t processed.
Where available, Stripe shows the ARN corresponding to a refund in the Dashboard on the payment detail page of the refunded payment.
Cancel a payment
You can cancel a payment using the Dashboard or API. To cancel a payment, it must be in one of the following states:
- Requires a payment method.
- Requires confirmation.
- Requires action.
- Requires capture.
- Is still processing.