# How to Prevent Chargebacks for a SaaS (Solo Founder Playbook)

> How to prevent chargebacks for a SaaS: fix your descriptor, send renewal reminders, make cancelling easy, and know when to refund or fight a $15 Stripe dispute.

- Canonical: https://zeroraised.com/blog/how-to-prevent-chargebacks-for-saas
- Published: 2026-11-09T13:30:00Z
- Author: ZeroRaised Team (https://zeroraised.com/blog/authors/zeroraised)
- Publisher: ZeroRaised (https://zeroraised.com/)
- Section: Revenue
- Tags: payments, stripe, saas, billing

**Short answer:** To prevent chargebacks for a SaaS, make every charge recognisable (a statement descriptor with your product name or domain), remind customers before renewals, put a cancel button inside the app, block card testing, and refund small or unhappy charges before the customer goes to their bank. When a dispute does land, counter it only when you have usage logs and proof the customer saw your terms; otherwise accept it and fix the cause.

Every fee and threshold below comes from Stripe, Paddle, Lemon Squeezy or Chargeflow's own pages, checked on 9 Nov 2026. The advice and arithmetic in between are ours and are labelled.

## TL;DR

- **A Stripe dispute costs $15 even if you win.** The US dispute received fee is $15 and is not returned; responding adds a $15 dispute countered fee that comes back only on a win ([Stripe pricing](https://stripe.com/us/pricing)).
- **Most SaaS disputes are confusion, not fraud.** Unrecognised descriptors, forgotten renewals and hard cancels cause most of them. Those are product problems you can fix this week.
- **Remind before you renew.** Stripe suggests reminders "typically 7 days before a yearly renewal and 2 to 3 days before a monthly renewal" ([Stripe monitoring programs](https://docs.stripe.com/disputes/monitoring-programs)).
- **Refunds beat disputes.** Stripe says "customers can't dispute fully refunded payments" ([Stripe best practices](https://docs.stripe.com/disputes/prevention/best-practices)).
- **Watch your ratio.** Mastercard's Excessive Chargeback Merchant program starts at a 1.5% chargeback rate and 100 disputes, and Paddle asks sellers to stay below 0.65% ([Stripe](https://docs.stripe.com/disputes/monitoring-programs), [Paddle](https://www.paddle.com/help/manage/risk-prevention/understanding-chargebacks-with-paddle)).

**Disclosure:** ZeroRaised is a launch site for bootstrapped products. We have no commercial relationship with Stripe, Paddle, Lemon Squeezy or Chargeflow and earn nothing if you use them. This is not legal or financial advice.

## Why SaaS chargebacks happen

A chargeback (Stripe calls it a dispute) is the cardholder asking their bank to reverse a payment. The bank pulls the money from you first and asks questions later: Stripe "debits the disputed amount, plus a dispute fee, from your Stripe account" as soon as the dispute is opened ([How disputes work](https://docs.stripe.com/disputes/how-disputes-work)).

For subscription software, the cause is usually one of four things:

| Cause | What the customer thinks | Typical dispute reason |
|---|---|---|
| Unrecognised descriptor | "I never bought anything from STRIPE* ACMEHQ LLC" | Unrecognized or fraudulent |
| Forgotten renewal | "I signed up a year ago and forgot. $290 just vanished" | Subscription canceled |
| Hard cancel | "I tried to cancel and could not find how" | Subscription canceled or credit not processed |
| Card testing | No customer at all: a fraudster testing stolen cards on your signup form | Fraudulent, weeks later |

Our read: in the first three the customer is not trying to steal; they use the bank as a support channel because yours was harder to find. So most prevention is copy, email and UI work, not fraud tooling.

## The prevention checklist

Work through this in order. The first five cost nothing.

1. **Fix your statement descriptor.** Stripe recommends "using your website domain or business name" and allows 5 to 22 characters ([Stripe best practices](https://docs.stripe.com/disputes/prevention/best-practices)). Use the product name people know, not your holding company. If your company is "Blue Fern Labs LLC" and the product is "Shipnote", the descriptor should say SHIPNOTE.COM.
2. **Put support contact details everywhere.** Stripe says to "make your customer service contact information easy to find." Add your support email to receipts, the billing page and the footer. A customer who can reach you in one click rarely calls their bank.
3. **Send renewal reminders.** Typically 7 days before a yearly renewal and 2 to 3 days before a monthly renewal, plus a reminder before a free or discounted trial ends ([Stripe monitoring programs](https://docs.stripe.com/disputes/monitoring-programs)). Annual plans matter most, because the charge is large and the signup memory is old.
4. **Make cancelling easy.** Stripe's wording: "Offer a quick and easy way to cancel. An in-app cancellation button is often the best solution." A cancel flow behind a support ticket generates "subscription canceled" disputes you will struggle to win.
5. **Publish and show a refund policy.** Stripe recommends a flexible refund policy, and the dispute evidence it asks for includes the policy "as shown to the customer" ([Stripe dispute categories](https://docs.stripe.com/disputes/categories)). Our guide to [writing a SaaS refund policy](https://zeroraised.com/blog/how-to-write-a-saas-refund-policy) covers the wording; the point here is that it must be visible at checkout, not buried.
6. **Block card testing.** Fraudsters hit free trial and signup forms with stolen cards. Add a CAPTCHA or rate limit to the payment step, avoid $0 or $1 verification charges that invite testing, and turn on Radar rules. On standard Stripe pricing, Radar Lite fraud prevention and fraud alerts are included "at no additional charge", and paid Radar plans start at $10 per month ([Stripe Radar pricing](https://stripe.com/radar/pricing)).
7. **Use 3D Secure where it makes sense.** Stripe says payments authenticated with 3D Secure "might be protected from most fraudulent disputes through a rule known as liability shift." It does not help with "I forgot to cancel" disputes, so treat it as a fraud tool, not a cure-all.
8. **Refund obvious fraud immediately.** Stripe: "You should immediately refund any payment you're sure is fraud." Note that partial refunds can still be disputed; full refunds cannot.

## Renewal reminder email template (ours)

Send this 7 days before an annual renewal. For monthly plans, a shorter version 2 to 3 days before is enough, or skip it on low-priced monthly plans if your dispute rate is already low.

> **Subject:** Your Shipnote plan renews on 16 November for $290
>
> Hi Sam,
>
> A heads-up: your Shipnote Pro annual plan renews on **16 November 2026** and we will charge **$290** to the card ending 4242. It will show on your statement as **SHIPNOTE.COM**.
>
> Want to keep it? You do not need to do anything.
>
> Want to change or cancel? You can switch plans or cancel in one click at **Settings > Billing**: [link]. If you cancel before the renewal date, you will not be charged.
>
> Questions? Just reply to this email and a human (me) will answer.
>
> Alex, founder of Shipnote

Each line answers a dispute cause: amount and date ("I did not expect this"), descriptor ("I do not recognise this"), cancel link ("I could not cancel"). Keep a copy of every reminder; it is evidence later.

## What a dispute actually costs: a $49 worked example

This is our arithmetic, using Stripe's US fees from its [pricing page](https://stripe.com/us/pricing): a $15 dispute received fee that Stripe never returns, and a $15 dispute countered fee that you get back only if you win. We leave out the original card processing fee to keep it simple.

A customer disputes a $49 monthly charge:

| What you do | Money out | Money back | Net cost |
|---|---|---|---|
| Refund before they dispute | $49 | none | $49, no fee, no dispute on your record |
| Accept the dispute | $49 + $15 | none | $64 |
| Counter and lose | $49 + $15 + $15 | none | $79 |
| Counter and win | $49 + $15 + $15 | $49 + $15 | $15, plus your time |

Countering puts an extra $15 at risk to recover $64 ($49 plus the countered fee). On those numbers, countering is worth it if your chance of winning is above about 23% (15 divided by 64). Stripe itself notes that "Fraudulent" disputes are "a difficult dispute type to win", so for a genuine stolen card you will often be below that.

Two other prices to compare against, both from vendor pages:

- **Stripe Smart Disputes** charges "30%" of the disputed amount for each dispute you win ([Stripe pricing](https://stripe.com/us/pricing)). On $49 that is $14.70.
- **Chargeflow Alerts** charges "$29" per deflected chargeback, paying only for alerts that prevent one ([Chargeflow pricing](https://www.chargeflow.io/pricing)). An alert usually means refunding the customer, so on a $49 charge you would pay $49 plus $29, which is more than the $64 of simply accepting the dispute.

Our read: at a typical indie SaaS price point, paid dispute alerts are rarely worth it for the money alone. They are worth it when you are close to a card network threshold and need to keep disputes off your record.

## Early fraud warnings: when to refund

Card issuers send early fraud warnings (EFWs) when they suspect a payment is fraudulent, sourced from Visa TC40 and Mastercard SAFE reports. Stripe says that if you do not refund, "about 40% of Visa and Mastercard EFWs become fraud disputes", and that the "optimal point" for refunding is on charges "roughly less than or equal to your dispute fee" ([How disputes work](https://docs.stripe.com/disputes/how-disputes-work)). It also warns that refunding every EFW automatically "isn't a good strategy."

Our rule of thumb: refund an EFW and cancel the subscription when the account shows no real usage, because that is likely a stolen card. Keep the charge when the customer clearly uses the product.

Be aware that refunding does not erase the warning. Stripe says EFWs "aren't disputes" but are counted as fraud by Visa's monitoring program regardless of outcome ([Stripe monitoring programs](https://docs.stripe.com/disputes/monitoring-programs)).

## The thresholds that get you in trouble

Card networks watch your ratio of disputes and fraud to payments. Stripe's [monitoring programs page](https://docs.stripe.com/disputes/monitoring-programs) lists, as checked on 9 Nov 2026:

| Program | Threshold (as listed by Stripe) |
|---|---|
| Visa VAMP, excessive (US and most regions) | 1.5% ratio and a count of 1,500 |
| Visa VAMP, non-compliant | 0.5% ratio |
| Mastercard ECM | 100 to 299 disputes and a 1.5% to 2.99% chargeback rate |
| Mastercard HECM | 300+ disputes and a 3% rate |
| Paddle (as MoR) | below 0.65% of transaction volume ([Paddle](https://www.paddle.com/help/manage/risk-prevention/understanding-chargebacks-with-paddle)) |

Stripe notes that Visa "assesses fees to merchants that exceed the Excessive threshold and may assess fees to merchants that exceed the Non-Compliant threshold." Mastercard fines for ECM start at $1,000 a month from month two.

Our read: at small volume a few disputes make a big ratio. With 200 payments a month, two disputes is already 1%.

## When a dispute lands: response and evidence pack

Stripe says you usually have 7 to 21 days to respond, that you have "only one opportunity to submit your response", and that the issuer usually takes 60 to 75 days to decide ([Responding to disputes](https://docs.stripe.com/disputes/responding), [How disputes work](https://docs.stripe.com/disputes/how-disputes-work)). If you do not respond, you lose automatically.

Before you counter, check the reason code and gather what Stripe's [dispute categories](https://docs.stripe.com/disputes/categories) page asks for. For a SaaS, the evidence pack usually looks like this:

- [ ] Customer name, email and the IP address at the time of purchase
- [ ] Server or activity logs showing the customer logged in or used the product after the charge (Stripe says to "focus on evidence of usage, login, or download")
- [ ] Your cancellation and refund policy, and how and when it was shown before purchase (a checkout screenshot with the checkbox or link)
- [ ] The renewal reminder email you sent, with the date
- [ ] For "subscription canceled": why the subscription was not cancelled (for example, no cancellation request on record)
- [ ] Customer emails or support tickets, especially any where they did not ask to cancel
- [ ] The receipt and a short product description

Keep it short and factual. Stripe allows one file per evidence type and a combined size of 4.5 MB.

Our read: if the customer contacts you after filing, offer a refund in exchange for withdrawing the dispute. Stripe's evidence lists include "whether the cardholder withdrew the dispute", and a withdrawal is the cleanest win available.

## When to just refund

Refund instead of fighting when the customer asks before filing, when the account shows no usage after the charge, or when your cancel flow or reminders were missing at the time. Fight when you have usage logs, a policy shown at checkout and a reminder email on file: that is when your win chance is plausibly well above the 23% break-even.

## If you use a merchant of record

A merchant of record changes who takes the dispute. Our [merchant of record vs payment processor guide](https://zeroraised.com/blog/merchant-of-record-vs-payment-processor) covers the full trade-off; on disputes specifically:

- **Paddle:** "the dispute is raised against Paddle rather than you, the seller." Paddle contests it automatically and says "additional evidence submitted by sellers is not required or accepted." The fee is 20 USD/GBP/EUR or 40 CAD/AUD, and if Paddle wins "the chargeback fee is not refunded." Paddle also refunds on pre-chargeback alerts, and the fee still applies ([Paddle](https://www.paddle.com/help/manage/risk-prevention/understanding-chargebacks-with-paddle)).
- **Lemon Squeezy:** "In most cases, we will offer a full refund on your behalf and deduct the refunded amount (minus our platform fee) plus a $15 dispute fee from your next payout." Stores with too many chargebacks may be suspended ([Lemon Squeezy docs](https://docs.lemonsqueezy.com/help/payments/refunds-chargebacks)).

So an MoR saves you the paperwork, not the cost. The prevention checklist above still applies in full, because your dispute rate still decides whether you stay on the platform. If you are still choosing how to take payments, our guide on [how to sell software online](https://zeroraised.com/blog/how-to-sell-software-online) compares the options.

## Frequently asked questions

### How much does a chargeback cost on Stripe?

In the US, Stripe's pricing page lists a $15 dispute received fee for each dispute, which Stripe does not return even if you win, and a $15 dispute countered fee for each dispute you respond to manually, which you get back if you win. On top of the fees, the disputed amount is debited from your balance until the dispute is resolved.

### What causes most SaaS chargebacks?

For subscription software the common causes are a statement descriptor the customer does not recognise, a renewal they forgot about (especially annual plans), a cancellation flow that is hard to find, and card testing by fraudsters using stolen cards on your signup form. The first three are fixable with product and email changes.

### Should I refund or fight a chargeback?

Refund before a dispute is filed whenever a customer asks and the amount is small, because customers cannot dispute fully refunded payments. Once a dispute is open, counter it when you have strong evidence such as usage logs, a cancellation policy shown at checkout and a renewal reminder. On our arithmetic for a $49 charge on Stripe US, countering pays off if you think your chance of winning is above roughly 23%.

### How long do I have to respond to a Stripe dispute?

Stripe says you usually have 7 to 21 days to respond, depending on the card network, and that you only get one chance to submit evidence. If you do not respond, you automatically lose. After you submit, the issuer usually takes 60 to 75 days to decide.

### Does a merchant of record handle chargebacks for me?

Yes. With Paddle the dispute is raised against Paddle, which contests it with its own automated system and does not accept extra evidence from sellers; the fee is 20 USD/GBP/EUR or 40 CAD/AUD and is not refunded if Paddle wins. Lemon Squeezy usually refunds the buyer on your behalf and deducts the amount plus a $15 dispute fee from your next payout.

## Launch with clean billing

ZeroRaised is a launch directory for products built without institutional VC. Once your billing, reminders and cancel flow are in shape, [submit your product](https://zeroraised.com/submit) for free. For more practical guides on running a SaaS without investors, [join the ZeroRaised newsletter](https://zeroraised.com/newsletter).

## Sources

- [Stripe US pricing](https://stripe.com/us/pricing), last checked 9 Nov 2026
- [Stripe Radar pricing](https://stripe.com/radar/pricing), last checked 9 Nov 2026
- [Stripe: How disputes work](https://docs.stripe.com/disputes/how-disputes-work), last checked 9 Nov 2026
- [Stripe: Dispute prevention best practices](https://docs.stripe.com/disputes/prevention/best-practices), last checked 9 Nov 2026
- [Stripe: Dispute monitoring programs](https://docs.stripe.com/disputes/monitoring-programs), last checked 9 Nov 2026
- [Stripe: Responding to disputes](https://docs.stripe.com/disputes/responding), last checked 9 Nov 2026
- [Stripe: Dispute categories](https://docs.stripe.com/disputes/categories), last checked 9 Nov 2026
- [Paddle: Understanding chargebacks with Paddle](https://www.paddle.com/help/manage/risk-prevention/understanding-chargebacks-with-paddle), last checked 9 Nov 2026
- [Lemon Squeezy: Refunds and chargebacks](https://docs.lemonsqueezy.com/help/payments/refunds-chargebacks), last checked 9 Nov 2026
- [Chargeflow pricing](https://www.chargeflow.io/pricing), last checked 9 Nov 2026

## Frequently asked questions

### How much does a chargeback cost on Stripe?

In the US, Stripe's pricing page lists a $15 dispute received fee for each dispute, which Stripe does not return even if you win, and a $15 dispute countered fee for each dispute you respond to manually, which you get back if you win. On top of the fees, the disputed amount is debited from your balance until the dispute is resolved.

### What causes most SaaS chargebacks?

For subscription software the common causes are a statement descriptor the customer does not recognise, a renewal they forgot about (especially annual plans), a cancellation flow that is hard to find, and card testing by fraudsters using stolen cards on your signup form. The first three are fixable with product and email changes.

### Should I refund or fight a chargeback?

Refund before a dispute is filed whenever a customer asks and the amount is small, because customers cannot dispute fully refunded payments. Once a dispute is open, counter it when you have strong evidence such as usage logs, a cancellation policy shown at checkout and a renewal reminder. On our arithmetic for a $49 charge on Stripe US, countering pays off if you think your chance of winning is above roughly 23%.

### How long do I have to respond to a Stripe dispute?

Stripe says you usually have 7 to 21 days to respond, depending on the card network, and that you only get one chance to submit evidence. If you do not respond, you automatically lose. After you submit, the issuer usually takes 60 to 75 days to decide.

### Does a merchant of record handle chargebacks for me?

Yes. With Paddle the dispute is raised against Paddle, which contests it with its own automated system and does not accept extra evidence from sellers; the fee is 20 USD/GBP/EUR or 40 CAD/AUD and is not refunded if Paddle wins. Lemon Squeezy usually refunds the buyer on your behalf and deducts the amount plus a $15 dispute fee from your next payout.


