Chargeback
A chargeback is a bank-forced reversal of a card payment. See how it shows up in Stripe, how it differs from a dispute or a refund, and what it costs.
Updated October 1, 2026
A chargeback is the card network process that lets a cardholder's bank take back money from a merchant after a card payment has gone through. The customer contests the charge with their bank, the bank files it through the card network, and the funds leave your account before anyone hears your side. You then have a short window to accept the loss or fight it with evidence.
Dispute vs chargeback
The two words mean nearly the same thing. "Dispute" is the customer's complaint to their bank. "Chargeback" is the money movement that follows, when the bank pulls the funds back. Stripe uses "dispute" for both. It has no separate chargeback object, and every chargeback appears as a dispute in your account.
Stripe also uses the Dispute object for inquiries. An inquiry is a request for information that some networks send before a formal chargeback, mostly American Express and Discover. Inquiries have statuses that start with warning_, such as warning_needs_response. A formal chargeback starts at needs_response.
How a chargeback shows up in Stripe
The first thing your integration receives is charge.dispute.created. The Dispute object has what you need to triage it:
amountandcurrencygive the disputed amount. It is usually the charge amount, but currency conversion, a partial dispute, or several recurring charges rolled into one dispute can change it.reasonis the cardholder's stated reason, such asfraudulent,product_not_received,duplicate,subscription_canceledorcredit_not_processed.evidence_details.due_byis your response deadline.
When the chargeback opens, Stripe takes the disputed amount plus a dispute fee from your balance. You can't issue a normal refund on that payment while the dispute is open. Later events follow the case. charge.dispute.funds_withdrawn fires when money leaves your balance, charge.dispute.updated as evidence is added, charge.dispute.closed when the status becomes won or lost, and charge.dispute.funds_reinstated if money comes back.
Chargeback vs refund
You choose to give a refund. A chargeback happens to you. With a refund, you control the amount and timing and pay no dispute fee. With a chargeback, the money is gone first, you pay a fee whether you win or lose, and the case counts toward your dispute activity with the card networks even if you win. So a quick refund to an unhappy customer is usually cheaper than letting them call their bank.
What a chargeback costs
- The disputed amount. Stripe holds it for the whole case. The full cycle, from filing to the issuer's decision, can take two to three months.
- The dispute fee. In the US, as of 2026, Stripe charges $15 when you receive a dispute and another $15 if you counter it. You get the countered fee back if you win. The received fee stays lost. See dispute fee for the math.
- Goods and time. You rarely get a shipped product back, and building evidence takes someone's afternoon.
- Network standing. Card networks run monitoring programs based on how many disputes you receive, not how many you win. Stripe notes that the industry treats dispute activity above 0.75% as excessive.
Timing is another trap. Card networks usually let cardholders file within 120 days of the payment, and sometimes longer. For prepaid events or reservations, the window usually starts on the event date. A chargeback can arrive months after the sale.
What to do when a chargeback lands
- Read the reason first. A
fraudulentchargeback needs proof that the real cardholder made the purchase. Aproduct_not_receivedchargeback needs delivery proof. Evidence that doesn't answer the reason rarely wins. - Check the deadline. Response windows are usually 7 to 21 days, depending on the card network. If you miss
evidence_details.due_by, you lose automatically. - Decide whether to fight. If the charge is smaller than the countered fee plus your time, accepting can be the right call. Stripe says accepting is not an admission of wrongdoing, and the received fee applies either way.
- Talk to the customer. Many chargebacks come from a billing descriptor the customer didn't recognize or a forgotten renewal. Keep a record of the conversation, because it becomes evidence.
- Submit once, completely. Stripe sends your response to the issuer right away, and you can't add files afterward. See dispute evidence for what to include.
Support or the founder usually talks to the customer. Whoever handles fulfillment pulls delivery and usage records. Finance tracks the held funds and the fee.
Catching chargebacks in Slack
The hard part of a chargeback is noticing it while there is still time to respond. ChargeBell's dispute alert posts to Slack when charge.dispute.created fires, with the disputed amount, the reason, the customer and the status. It is a critical alert, so it skips quiet hours and can add an @channel prefix. Send it to a channel such as #disputes or #founders where someone will pick it up. It is one alert, not a countdown. You respond in the Stripe Dashboard, which shows the exact deadline. For the full setup, see how to send Stripe dispute alerts to Slack.
Get alerted in Slack
Stripe events: charge.dispute.created, charge.dispute.funds_withdrawn, charge.dispute.updated, charge.dispute.closed, charge.dispute.funds_reinstated
ChargeBellAPP
🚨 A $312.00 charge was disputed
@channel
a customer · "product not received"
Respond by: Fri, Jul 3, 9:00 AM
Disputes have hard deadlines. Respond in Stripe as soon as you can.