You’ll find this guide more helpful if you understand a little about Stripe and accepting payments. Stripe provides everything a business needs for internet commerce. This includes accepting online payments, but also functionality for paying sellers, fighting fraud, and more.
To accept payments, your application uses Stripe’s technology to securely collect and send payment information to Stripe. Stripe then processes the payment information and passes it to the appropriate payment networks (e.g., credit card or ACH). Information sent between your company’s application and Stripe uses the same protocols as web traffic, so this communication is standardized and safe.
Accessing and using the Stripe Dashboard
You need to have access to the Stripe Dashboard so you can view information about payouts, charges, and more. The Dashboard can also be used to issue refunds and respond to disputes.
Stripe Dashboard reading list
Stripe Dashboard to-do list
The payment flow begins when your application collects payment information from a customer. This is most often credit card information, but Stripe supports other payment methods, too. This guide focuses on credit card payments, so some information might not apply to you. You can check with your engineering team or sales representative to find out more about the payment methods you accept.
Payment information is collected using either Checkout or a form built with
Stripe Elements. In either case, after the payment information is collected,
it's sent to Stripe. Stripe stores the information and generates an opaque ID that represents the payment information.
This is called tokenization. Each opaque ID is a unique value that includes a string of randomized characters
pm_131sV23sd). This ID, along with other payment information, is sent back to your application's server.
Using this ID, your application can then make an API request to Stripe to create a charge, or can store the information so that it can be used for future payments. Whether payment information is stored or not, Stripe keeps a record of payment activity for every Stripe account.
While most charges end in successful payments, it's possible for charges to be declined, refunded, or disputed. The following sections describe these flows in more detail, and how to manage them.
Stripe submits refund requests to the customer's bank or card issuer immediately. Generally, it takes 5–10 business days for the bank to process the refund and display it on the customer's statement. If a refund occurs within minutes of the original charge, Stripe treats the refund as a reversal instead. This means no credit is issued for the refund and the original payment is removed from the customer's bank statement, usually within one to two days. Because the reversal process is faster and the payment is removed, customers might never see the payment on their bank statement.
Refund time limit
Refunds should be submitted within 60 days. The longer you wait, the more time customers have to change credit card information, close accounts, lose their credit cards, etc. All of these events can cause refunds to fail. At most, Stripe recommends submitting refunds within 60 days. This isn't a hard requirement, but we generally see issues with refunds submitted after that.
If you need to submit a refund after 60 days, you can use the API to create a refund. Before submitting, contact your customer, and confirm that their original payment information is the same. If the refund needs to be issued to a different card or account than the customer used on the original charge, read about refund destinations.
Refunds reading list
Refunds to-do list
- Know how to issue a refund using the Dashboard
- Know how to respond to a dispute
Failed payments are usually caused by card issuers declining payments, or by Stripe's fraud prevention tooling. The Understanding Declines and Failed Payments guide explains why payments fail, and actions you can take to prevent failures.
Declines reading list
Declines to-do list
A dispute (also known as a chargeback) occurs when a cardholder questions your payment with their card issuer. Stripe automatically notifies you when a dispute is filed, so make sure team members that handle disputes have the email notification for disputes setting enabled. You can also have your engineering team build a webhook endpoint using the charge.disputed.created event. This triggers when a dispute is created, but you can also listen for changes to disputes after they're created (e.g., when they're updated or when funds are withdrawn). Stripe recommends that you respond to disputes in the Dashboard, but you can also use the API.