A Customer's Bank Pulled the Money Back, What a Stripe Chargeback Means and What to Do
6 min read
You got an email from Stripe saying a payment was disputed, and the money is already gone from your balance. Here is the short answer: a chargeback is the customer's bank reversing the charge, usually because the cardholder told them they didn't recognise it or didn't get what they paid for. You can either submit evidence to fight it or accept it, and you have a deadline. The money being pulled first is normal, not a sign you have lost.
Why this happens
A chargeback is not the same as a refund. A refund is you sending money back. A chargeback is the customer going to their bank, not to you, and the bank clawing the funds out of your Stripe balance while it investigates. Stripe also charges a dispute fee (commonly around 15 USD or the local equivalent) that you pay even if you win, though some plans refund it on a win.
For a brand-new app, the usual triggers are mundane. Your billing descriptor on the customer's statement is your personal name or a random string, so they don't recognise the charge and assume fraud. Or a subscription renewed and they forgot they signed up. Or a genuinely stolen card was used. A vibe-coded checkout tends to skip the boring parts (a clear statement descriptor, a receipt email, a visible cancellation flow) because you asked the agent to "take payments," not to "make charges recognisable and easy to cancel." Those missing parts are exactly what turn a confused customer into a dispute.
How to check
- Open the Stripe Dashboard, go to Payments, and filter by Disputed. Each dispute shows a reason (fraudulent, product not received, subscription cancelled, duplicate) and a respond-by date.
- Read the reason. It tells you which evidence will actually count.
- Check your statement descriptor under Settings > Business > Public details. If it reads like gibberish or your personal name, that alone drives "I don't recognise this" disputes.
- Confirm whether the customer got a receipt and whether they still have access to what they bought. Both matter for your evidence and for deciding whether to fight at all.
The fix
- Decide: fight or accept. If the charge was legitimate and you can prove delivery, fight it. If it was a stolen card or a customer you'd refund anyway, accepting costs you less than losing after a fight (you still pay the fee, but you save the time). You can accept a dispute directly in the dashboard.
- If you fight, submit evidence before the deadline. In the dispute, upload what proves the customer got value: the receipt, sign-in and usage logs showing they used the product, the IP and email matching the account, your terms and refund policy, and any support messages. Stripe has an evidence form per reason type; fill every relevant field.
- Fix the descriptor now so the next customer recognises the charge. Set a clear, recognisable statement descriptor in Stripe settings.
- Send receipts automatically. Turn on Stripe's email receipts, or send your
own on the
charge.succeeded/checkout.session.completedwebhook, so customers always have a record. - Make cancelling obvious for subscriptions. A visible "cancel" button prevents the "I couldn't cancel so I called my bank" dispute.
The trap to avoid
Do not refund the customer and let the dispute run at the same time. If you refund after a dispute is already open, you can end up out the money twice: the chargeback and the refund both leave your account. If a dispute is open and you want to give the money back, accept the dispute instead of issuing a separate refund. And do not ignore the email hoping it goes away. Missing the deadline is an automatic loss.
Where this fits
Chargebacks are one of the first real-world payment problems a launched app meets, and most of them are prevented by the unglamorous parts of checkout: a recognisable descriptor, an automatic receipt, and an easy cancel. The free Readiness Report checks whether your payment flow has those parts before your first customers do, and flags the gaps that turn into disputes. If you'd rather have the fixes handed to you in order, that is what the Finishing Pass is for. It pairs naturally with revoking access when you refund and with making sure a payment can't be faked in the first place.