Payment dispute
A payment dispute is a cardholder challenging a charge through their bank. Learn what a disputed transaction means, how Stripe tracks it, and how to respond.
Updated October 1, 2026
A payment dispute happens when a cardholder asks their bank to reverse a charge on their card. The bank can pull the money back from the merchant while it reviews the claim. In Stripe, a dispute is also an object that tracks the case from the first notice to the final decision. Every card chargeback becomes a Dispute object, and so do inquiries, the requests for information that some networks send first.
What a disputed transaction means
For the cardholder, disputing a charge means telling their bank that a payment was wrong. Common claims are that they didn't make it, the goods never arrived, they canceled, or they were charged twice. For the merchant, a disputed transaction means the money is on hold or already gone, a fee is charged, and you have a deadline to respond with evidence. The bank that issued the card decides the outcome, not the merchant and not Stripe.
The Stripe Dispute object
The fields that matter when a dispute arrives:
chargeandpayment_intentpoint to the disputed payment.amountis the disputed amount. It can be lower or higher than the original charge, for example after currency conversion or when a bank rolls several recurring charges into one dispute.reasonis the cardholder's stated reason. Common values arefraudulent,product_not_received,product_unacceptable,duplicate,subscription_canceled,credit_not_processed,unrecognizedandgeneral.evidence_detailsholdsdue_by(your deadline),has_evidence,past_dueandsubmission_count.is_charge_refundablesays whether you can still refund the payment.
Dispute statuses and events
A dispute follows one of two tracks:
- Inquiry. It starts at
warning_needs_responseand moves towarning_under_reviewafter you submit evidence. If an inquiry stays open for 120 days without escalating, Stripe marks itwarning_closed. - Formal dispute. It starts at
needs_response, moves tounder_reviewafter you submit evidence, and ends aswonorlost.
There is also prevented, for a dispute stopped before it became a formal chargeback.
Stripe sends these events:
charge.dispute.createdwhen the customer disputes the charge with their bank.charge.dispute.funds_withdrawnwhen money leaves your balance because of the dispute.charge.dispute.updatedwhen the dispute changes, usually because evidence was added.charge.dispute.closedwhen the status changes towon,lostorwarning_closed.charge.dispute.funds_reinstatedwhen funds return to your balance after the dispute closes.
Inquiries vs formal disputes
An inquiry is the issuer asking for clarification, often because the cardholder doesn't recognize the charge. Stripe says American Express and Discover use inquiries most, and Visa and Mastercard no longer do. You can resolve an inquiry with no dispute fee by answering it with evidence or giving a full refund. If you ignore it, it can escalate into a formal chargeback that Stripe calls likely unwinnable.
A formal dispute works differently. Stripe takes the disputed amount and a dispute fee from your balance right away, and you can no longer refund the payment outside the dispute process. The only way to get the money back is to submit evidence before the deadline.
What to watch for
- The deadline. You usually have 7 to 21 days, depending on the card network. Once
evidence_details.due_bypasses, you lose automatically. - One submission. Stripe sends your response to the issuer right away, and you can't edit it or add files later.
- Disputes you can't challenge. Network rules or local laws block some disputes from being countered, such as Cartes Bancaires disputes for businesses in the Single Euro Payments Area. Stripe closes these as lost as soon as it notifies you.
- More than one dispute on a payment. It is rare, but each one needs its own accept or counter decision.
- Wins still count. Card networks count the disputes you receive, not the ones you win. A withdrawn dispute counts too.
- Smart Disputes. For eligible card disputes, Stripe can build an evidence packet and submit it shortly before the deadline if you do nothing. You can turn off auto-submit in your Dashboard settings.
How to respond to a dispute
- Triage within a day. Note the amount,
reasonanddue_by, and name an owner. - Contact the customer. A misunderstanding can often be cleared up, and the conversation can become evidence.
- Accept or counter. Accepting ends the case and you lose the fee. Countering adds a second fee in most regions. In the US, as of 2026, that is a $15 countered fee that comes back if you win. See dispute fee.
- Answer the reason. Match your dispute evidence to the cardholder's claim, then submit it all at once.
- Check for warnings. If the reason is
fraudulent, see whether an early fraud warning came first and whether similar payments have one too.
Support usually owns the customer conversation. The founder or an ops lead decides whether to fight, and finance reconciles the withdrawn and reinstated funds.
Getting disputes into Slack
Stripe tells you about disputes by email and in the Dashboard, and both are easy to miss. ChargeBell's dispute created alert posts to Slack when charge.dispute.created fires, with the amount, the reason, the customer and the status. It is a critical alert by default, so it skips quiet hours and can @channel. Send it to #disputes or #founders. It is one notification, not a deadline tracker, so give it a clear owner. The payment incident workflow guide shows how to turn that alert into a repeatable response.
Get alerted in Slack
Stripe events: charge.dispute.created, charge.dispute.updated, charge.dispute.funds_withdrawn, 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.