Skip to the reason code reference

Most Stripe merchants lose disputes they could have won.

Not because their case was weak. Because the evidence answered the wrong question, arrived after the deadline, or was never submitted at all.

This page is the most complete guide to Stripe disputes available anywhere online. Read the whole thing, or jump straight to the part that matters most to you. Either way, you'll leave knowing more about winning your disputes than most people who do this for a living.

Or skip straight to the offer: Send us your last 10 Stripe disputes. In 48 hours we'll tell you exactly which ones were winnable, what evidence was missing, and what they cost you. Free. No setup. No commitment. No connecting anything.

Get My Free Dispute Audit

Currently in free beta. No fees of any kind while we work with our first merchants.

The problem

Why Disputes Are Broken for Small Stripe Merchants Right Now

If you've ever lost a dispute you were certain you should have won, you're not imagining it. Something structural changed, and most merchants don't know about it yet.

The fee changed, quietly

Stripe used to charge one fee when a dispute landed: fifteen dollars, non-refundable, whether you won or lost. In June 2025, Stripe added a second fee. Now, choosing to fight a dispute triggers an additional counter-fee on top of the original one. Win, and you get the counter-fee back. Lose, and you've paid twice.

In practice, this means fighting a dispute now costs roughly thirty dollars upfront, with only half of that recoverable if you win. For a merchant fighting instinctively, without a clear read on whether a case is actually winnable, this math gets expensive fast. For a merchant who has stopped fighting altogether because the math feels bad, it means real, winnable revenue is being written off every month without anyone checking whether it should be.

Stripe's own tool has a structural blind spot

Stripe launched Smart Disputes, its own AI-assisted dispute tool, in 2025. It charges thirty percent of whatever it recovers, and it waives the new counter-fee, which sounds generous until you understand its limitation.

Smart Disputes can only see what already lives inside Stripe. It has no access to your shipping provider, your CRM, your support ticket history, your usage logs, or your customer communication records. For dispute types where the winning evidence lives outside Stripe entirely, such as a customer claiming they cancelled when your system shows no cancellation request, or a customer claiming they never received a product when your fulfilment platform shows a signed delivery, Smart Disputes is working with an incomplete picture by design, not by mistake. It cannot see what it was never built to access.

This is not a criticism of Stripe. It is a structural fact about any tool that only reads its own platform. It is also exactly the gap a merchant needs to understand before deciding whether their disputes are being defended properly.

Most disputes are decided by a specific, narrow question, and most evidence answers the wrong one

Every Stripe dispute carries a reason code. Each reason code represents a specific question the cardholder's bank is asking about the transaction. The single biggest reason merchants lose winnable disputes is that they answer a different question than the one being asked.

Delivery proof answers "did the customer receive this?" It does not answer "did the customer authorise this charge?" Those are different questions, tied to different reason codes, requiring different evidence. Submitting the wrong answer, however strong it looks, results in an automatic loss, not because the evidence was weak, but because it was not relevant to what was actually being asked.

The rest of this page exists to fix that. Reason code by reason code.

Reason codes

The Complete Reason Code Reference

This is the core of this page, and the reason it exists. For each major Stripe dispute reason code, you'll find the real question the bank is asking, what evidence actually answers it, and what evidence commonly fails despite looking convincing.

Fraudulent / Unauthorized TransactionWhat the cardholder is claiming: They did not make or authorise this purchase.
The real question the bank is asking

Can the merchant show that the specific person who owns this card, or someone with their genuine authorisation, initiated this transaction?

Evidence that actually answers this

  • AVS (Address Verification System) match confirming the billing address matched the card on file
  • 3D Secure or equivalent strong authentication completed at checkout
  • A device or account history showing this transaction fits the pattern of a known, previously legitimate customer
  • Any prior successful, undisputed transactions from the same card, showing an established relationship

Evidence that commonly fails despite looking strong

  • Delivery confirmation alone: it proves the product arrived, not that the cardholder authorised paying for it
  • Order confirmation emails: the bank already knows an order was placed, that is not in question
  • A general statement that "our fraud checks passed" without the specific data behind that claim

The honest reality

True stolen card fraud is genuinely difficult to win, and correctly so, since that is the system protecting real victims. But a large share of "fraudulent" disputes are what is known as friendly fraud: a legitimate customer disputing a charge they actually made, often after receiving and using the product or service. The evidence above is what separates a case worth fighting from one worth accepting quickly to limit further cost.

Product Not ReceivedWhat the cardholder is claiming: They paid, but never got what they paid for.
The real question the bank is asking

Can the merchant prove the product was shipped, and delivered, to the person who paid for it?

Evidence that actually answers this

  • Tracking information showing delivery to an address matching the billing or shipping address on file
  • Carrier confirmation of signature or delivery completion
  • Timeline showing the shipment was dispatched within the timeframe promised at checkout

Evidence that commonly fails despite looking strong

  • A tracking number alone, without confirmation of actual delivery: "shipped" is not "delivered"
  • Delivery to an address that doesn't match the customer's billing details, without explanation
  • Screenshots of internal fulfilment systems that a bank reviewer, unfamiliar with your tools, cannot easily interpret in the two minutes they typically spend on a case

The honest reality

This is one of the most winnable reason codes when the merchant actually shipped the product, because delivery evidence is usually unambiguous. Most losses here come from incomplete evidence packages, not weak cases. A common example is a tracking number without proof of actual delivery, or delivery confirmation without a clear address match.

Subscription CancelledWhat the cardholder is claiming: They cancelled their subscription, and were charged anyway.
The real question the bank is asking

Can the merchant prove the customer agreed to recurring billing, and that no valid cancellation request was received before this charge?

Evidence that actually answers this

  • The original signup record showing timestamped acceptance of recurring billing terms
  • System records confirming no cancellation request exists in the merchant's system before the disputed charge date
  • Usage or login activity after the disputed charge, showing the customer continued using the product or service

Evidence that commonly fails despite looking strong

  • "We have no record of a cancellation request" stated on its own, without the surrounding evidence that makes it credible
  • A general refund and cancellation policy, without proof the specific customer agreed to it
  • Customer service correspondence that doesn't directly address the billing period in question

The honest reality

This is Recovra's single most common case, and one of the most winnable when the full evidence sequence is assembled correctly. The winning story isn't just "they didn't cancel." It's "they agreed to recurring billing, never withdrew that agreement, and kept using the product after the charge in question." That's a complete, coherent story a bank reviewer can follow in under two minutes. A single sentence saying "no cancellation on file" usually isn't.

Product Unacceptable / Not as DescribedWhat the cardholder is claiming: What they received didn't match what was advertised, or arrived defective.
The real question the bank is asking

Did the merchant accurately represent the product, and did the customer have a reasonable opportunity to resolve the issue before disputing?

Evidence that actually answers this

  • The exact product listing or description shown to the customer at time of purchase
  • Any customer service correspondence showing the merchant attempted to resolve the issue
  • Photos or specifications proving the product matched its description

Evidence that commonly fails despite looking strong

  • A current version of the product page, if it has since been edited or updated
  • Silence: no attempt to resolve the issue before the dispute was filed reads poorly to a bank reviewer, even if the product was fine

The honest reality

This reason code often comes down to whether the merchant engaged with the customer before the dispute was filed. A responsive, documented attempt to resolve the issue, even one that did not fully satisfy the customer, strengthens the case considerably.

Duplicate TransactionWhat the cardholder is claiming: They were charged twice for the same purchase.
The real question the bank is asking

Were these genuinely two separate, legitimate transactions, or a processing error?

Evidence that actually answers this

  • Two distinct order records, each with its own order number, product, or date
  • Confirmation that both transactions correspond to separate deliveries or service periods

The honest reality

This is usually straightforward to resolve, either by proving the charges were legitimately separate, or, if they genuinely were a duplicate, by refunding proactively rather than disputing. Fighting a genuine duplicate charge damages trust for no financial benefit.

Credit Not ProcessedWhat the cardholder is claiming: They were promised a refund that never arrived.
The real question the bank is asking

Was a refund actually owed, and if so, was it processed?

Evidence that actually answers this

  • Refund transaction records with timestamps, if a refund was already issued
  • The specific terms under which a refund was, or was not, owed

The honest reality

If a refund is genuinely owed and hasn't been processed, the fastest and cheapest resolution is almost always to process it immediately rather than dispute the claim. This is one of the few reason codes where fighting is rarely the right call.

Services Not ProvidedWhat the cardholder is claiming: They paid for a service that was never delivered.
The real question the bank is asking

Can the merchant prove the service was actually delivered, or made available, as agreed?

Evidence that actually answers this

  • Login or access records showing the customer used the service after payment
  • Delivery confirmation for any service-related communication or deliverables
  • Timestamps showing the service was live and accessible during the paid period

The honest reality

For digital products and SaaS specifically, this is often one of the most winnable reason codes, because usage data is precise and hard to dispute. A customer who logged in fifteen times after the charge in question has a very difficult time credibly claiming the service was never provided.

Common mistakes

The Mistakes That Turn Winnable Cases Into Losses

Beyond reason-code-specific evidence, these patterns show up repeatedly across merchants who lose cases they should have won.

  • Answering the emotional argument instead of the bank's actual question.

    "This customer is clearly lying" is not evidence. A bank reviewer spends roughly two minutes per case and needs a direct, specific answer to a specific question, not a narrative about the customer's character.

  • Submitting a wall of evidence instead of a focused package.

    More documents does not mean a stronger case. A reviewer working through hundreds of disputes responds better to three precisely relevant pieces of evidence than fifteen loosely related ones.

  • Missing the deadline.

    Every dispute carries a hard submission window, typically between seven and twenty-one days, set by the card network, not by Stripe. Miss it, and the case is lost automatically, regardless of how strong the evidence was. This is the single most avoidable way to lose a winnable case.

  • Treating every dispute as worth fighting.

    Not every case should be fought. A weak case, fought anyway, costs the counter-fee for nothing. Knowing which cases to accept quickly is as important as knowing how to fight the ones worth fighting.

  • Defending charges individually when the real pattern is repeat abuse.

    When the same customer disputes multiple charges across multiple billing periods, the strongest evidence often is not about any single charge. It is the full pattern: continued usage, payment history, and the timeline of disputes together telling one clear story.

The free audit

How the Free Dispute Audit Works

This is a real, no-obligation offer, not a sales funnel disguised as one.

Step one.

Send us your last ten Stripe disputes: the reason code for each, whether you fought or accepted it, and what evidence you submitted if you fought it.

Step two.

Within 48 hours, we review each one against the evidence framework above, matched to its specific reason code.

Step three.

You receive a clear, honest breakdown: which disputes were genuinely winnable, what evidence was missing or misdirected, and roughly what that gap cost you.

What we don't ask for.

You do not need to connect your Stripe account. You do not need to sign up for anything. There is no commitment attached to requesting this, and no pressure afterward.

Why we offer this for free.

Recovra is currently in a founder-supervised beta. We are not charging anyone anything right now. We are focused on working with a small number of real merchants and learning from real cases. The audit is genuinely useful on its own, whether or not you ever use Recovra beyond it.

Compared

Recovra Compared

Here is an honest comparison of the realistic options a Stripe-primary merchant has today.

CapabilityRecovraStripe Smart DisputesChargeflowJusttManual
Built for Stripe specificallyYesYes (native)PartiallyYesNot applicable
Sees evidence outside Stripe (shipping, CRM, usage logs)YesNoVariesYesYes, if you gather it
Submits only when the case is strongYes, by designBroad automationBroad automationML-optimisedDepends on the person
Fee20% of verified recovery, nothing if you lose30% of recovered~25% of recoveredEnterprise contractYour time
Built forStripe-primary SMBsAny Stripe merchantShopify / multi-processor merchantsLarge enterprise dispute volumeAnyone, at a real time cost
Human review availableYes, built in during betaLimitedLimitedYesFully manual

Recovra

Built for Stripe specifically
Yes
Sees evidence outside Stripe (shipping, CRM, usage logs)
Yes
Submits only when the case is strong
Yes, by design
Fee
20% of verified recovery, nothing if you lose
Built for
Stripe-primary SMBs
Human review available
Yes, built in during beta

Stripe Smart Disputes

Built for Stripe specifically
Yes (native)
Sees evidence outside Stripe (shipping, CRM, usage logs)
No
Submits only when the case is strong
Broad automation
Fee
30% of recovered
Built for
Any Stripe merchant
Human review available
Limited

Chargeflow

Built for Stripe specifically
Partially
Sees evidence outside Stripe (shipping, CRM, usage logs)
Varies
Submits only when the case is strong
Broad automation
Fee
~25% of recovered
Built for
Shopify / multi-processor merchants
Human review available
Limited

Justt

Built for Stripe specifically
Yes
Sees evidence outside Stripe (shipping, CRM, usage logs)
Yes
Submits only when the case is strong
ML-optimised
Fee
Enterprise contract
Built for
Large enterprise dispute volume
Human review available
Yes

Manual

Built for Stripe specifically
Not applicable
Sees evidence outside Stripe (shipping, CRM, usage logs)
Yes, if you gather it
Submits only when the case is strong
Depends on the person
Fee
Your time
Built for
Anyone, at a real time cost
Human review available
Fully manual

On Stripe Smart Disputes.

It is a genuinely useful tool for disputes where the winning evidence already lives inside Stripe. Its limitation is not a flaw, it is architectural. It cannot see your shipping provider, your CRM, or your support history, which matters most for exactly the reason codes covered in Section 2. Recovra was built to cover that specific gap.

On Chargeflow.

Built for Shopify merchants who want broad coverage across many payment processors at once. If you're Stripe-primary and want depth on Stripe specifically rather than breadth across many platforms, that's a different product decision, not a better or worse one.

On Justt.

Built for enterprise dispute volume with dedicated account relationships and ML-driven case prioritisation. Excellent for what it's built for. A ten-person Stripe merchant is not who Justt is built to serve, and would not get the attention or pricing that makes sense at that scale.

On doing it manually.

This is what most Stripe-primary SMBs without a dedicated disputes team are actually doing today, and it's a completely reasonable starting point. The real cost isn't the effort of fighting a dispute properly, it's the deadlines missed and reason-code mismatches that happen when disputes compete with everything else running a small business.

FAQ

Frequently Asked Questions

Is the audit really free?

Yes. No payment, no card details, no commitment. We're in beta and focused on learning from real disputes, not billing anyone yet.

Do I need to connect my Stripe account to get the audit?

No. Just send the details of your last ten disputes. Connecting Stripe is only relevant if you later decide to use Recovra to handle disputes going forward, and that decision is entirely yours.

What access does Recovra actually have to my Stripe account, if I connect it later?

Dispute handling only. Recovra can view dispute and charge details and submit dispute responses on your behalf. It cannot move payouts, issue refunds, change your bank details, or access your funds in any way. Your OAuth connection is encrypted, and you can revoke it instantly from your own Stripe dashboard at any time.

How does Recovra decide whether to fight a dispute?

Every dispute is assessed individually against the specific evidence available and the requirements of its reason code. If the case is strong, we fight it. If it is not, accepting quickly is usually the better financial decision, since fighting a weak case still costs the counter-fee. Every decision is explainable. Nothing is a black box.

What happens if Recovra fights a dispute and loses?

You pay nothing. The fee is 20% of verified recovered revenue only. No win, no fee, full stop.

Why is this free right now?

Recovra is in a founder-supervised beta. We're working closely with a small number of real merchants to get this right before charging anyone. Free during beta means genuinely free, no catch.

What if I'm not ready to use Recovra, just curious about the audit?

That's completely fine. The audit is useful on its own regardless of what you decide afterward.

If you deal with Stripe disputes, this is worth five minutes.

Send your last 10 disputes. Get a clear, honest answer on what you could have won, in 48 hours, at no cost.

recovra.de