ArticlesChargebacksSaaS chargebacks and the evidence that is missing

SaaS chargebacks and the evidence that is missing

Ben Woodward

GM, Redo

SaaS chargebacks and the evidence that is missing

Almost every guide to winning a chargeback tells you to submit tracking, proof of delivery and a signature. If you sell software, you have none of those and never will.

That is not a small gap. It removes the evidence category that most representment advice is built on, and it means SaaS disputes are won or lost on a completely different set of records.

What replaces shipping evidence

The allegation is usually one of two things: the customer says they did not authorise the charge, or they say they did not receive what they paid for. Both are answerable, just not with a carrier scan.

Instead ofUse
Proof of deliveryLogin timestamps, especially after the disputed charge
Carrier trackingFeature usage or API call logs tied to the account
Signature confirmationThe signup acceptance record: terms, timestamp, IP
Delivery address matchIP and device continuity between signup and usage
Order confirmationRenewal notices sent, and whether they were opened

The strongest single item is usage after the disputed charge. A customer claiming they did not authorise a renewal, who logged in twice the following week, has produced your evidence for you.

Recurring billing changes the amount at stake

Stripe documents a behaviour that catches subscription businesses out: when a cardholder disputes several payments within a recurring plan, their bank sometimes creates a single dispute for the total against one of the charges. Its own example is three $50 charges arriving as one $150 dispute.

So the disputed amount is frequently a multiple of your monthly price, and the number on the original invoice is not what you are fighting for. Read the disputed amount on the dispute itself before deciding whether it is worth answering, because the expected value of contesting is set by that figure rather than by your plan price.

It also means one unhappy customer can produce a dispute several times larger than their monthly revenue, which distorts any per-dispute averages you calculate from plan pricing.

The three moments that generate most of them

The free trial converting. The customer signed up months ago, forgot, and sees an unfamiliar charge. This is the largest category in most SaaS businesses and it is almost entirely preventable with a renewal notice that arrives before the charge rather than after it.

The annual renewal. Twelve months is long enough to forget a vendor entirely, and an annual amount is large enough to be worth disputing rather than absorbing.

The descriptor nobody recognises. If you bill under a legal entity name that differs from your product name, you have created a dispute generator. This is the cheapest fix available in the entire category and it applies identically to SaaS and physical goods.

The pattern across all three is that the customer is not committing fraud, they genuinely do not recognise the charge. That is worth knowing because it changes what evidence persuades: you are proving recognition and use, not proving shipment.

The trial-conversion dispute is a messaging problem

Worth separating out, because it is usually the largest bucket and it is the one least helped by better representment.

A customer signs up for a free trial, forgets, and is charged a month later. From their side nothing happened between signup and the charge, so an unfamiliar line on a statement reads as fraud rather than as a renewal they agreed to. They are not lying when they say they did not authorise it; they genuinely do not remember.

You can win these on evidence, because the acceptance record exists and the trial was real. Winning them still costs you the customer, the fee, and a mark against your dispute ratio that no outcome removes.

The cheaper intervention is a notice a few days before the first charge that names the product, the amount and the date, with a one-click cancel. It converts some trials into deliberate cancellations, which looks worse in a conversion dashboard and is unambiguously better for the business. A cancellation costs nothing; a dispute costs the fee, the revenue and the ratio entry.

What to build before you need it

Log the acceptance moment properly

Timestamp, IP, the exact terms version accepted, and the plan selected. Retain it for at least a year, since disputes can arrive long after.

Retain login and usage records against the billing period

The question you will need to answer is "did they use it after the charge", so the records have to be queryable by date range per account.

Send renewal notices before the charge, and keep the send record

The notice prevents disputes. The send record wins the ones you still get.

Make the billing descriptor match the product name

If they differ, expect disputes from customers who did nothing wrong.

Make cancellation genuinely self-service

A customer who cannot find the cancel button uses the dispute button instead, and that one counts against your ratio.

Step five is the one with the best return and the least engineering appetite behind it. A hard cancellation flow does not retain customers, it converts churn into chargebacks, and chargebacks cost more than churn.

Reclaim handles representment for Stripe, PayPal and Shopify Payments, free and with no success fee, and it assembles evidence from payment, order and behaviour records rather than from shipping alone. What it cannot do is invent an acceptance record that was never logged, which is why the list above matters more than the tooling.

The honest part

A meaningful share of SaaS disputes are genuinely unwinnable, and it is worth saying so. If a customer's card was actually stolen and used to sign up, no login record helps you, because the logins were the fraudster's. Those cases are a cost of doing business and the right response is fraud screening at signup rather than better representment.

The consolidation behaviour is also something Stripe describes banks as doing sometimes rather than always. If your issuers are not consolidating, your disputed amounts track your plan price and the arithmetic simplifies.

And nothing here reduces the number of disputes filed. The evidence work is for recovering money on cases that already happened. The three moments above are where the volume actually gets decided, and they are product and messaging problems rather than dispute problems.

Frequently asked questions

How do you win a chargeback with no shipping evidence?

With usage records instead. Login timestamps after the disputed charge, feature or API usage tied to the account, the signup acceptance record with timestamp and IP, and device continuity between signup and use. Continued use after the charge is the strongest single item, and it answers the unauthorised-charge allegation directly.

Why is my SaaS dispute larger than my subscription price?

Because when a cardholder disputes several payments in a recurring plan, their bank sometimes creates one dispute for the total against a single charge. Stripe's own example is three $50 charges arriving as a $150 dispute. Read the disputed amount on the dispute rather than assuming it matches your plan price.

What causes most SaaS chargebacks?

Three moments dominate: a free trial converting to paid on a customer who forgot they signed up, an annual renewal twelve months after the customer last thought about you, and a billing descriptor that does not match the product name. All three produce customers who genuinely do not recognise the charge rather than customers committing fraud.

Does making cancellation harder reduce SaaS churn?

It converts churn into chargebacks, which cost more. A customer who cannot find the cancel button disputes instead, and a dispute counts against your monitoring ratio whether or not you later win it, whereas a cancellation does not count at all.

The query to run against your own data: for every dispute in the last quarter, whether that account logged in after the disputed charge. If most did, you are losing cases you should be winning, and the evidence was sitting in your own database the whole time.