Refund or fight? How to decide on a chargeback
When to refund, accept or contest a subscription chargeback: what each option costs on Stripe and Braintree, how reason codes change the odds, a decision table.
Every dispute forces a decision. Before a chargeback, you can refund. After it is filed, you can accept it or contest it. Each option has a different cost, and none of them removes the dispute from your network ratios once it exists. Teams that fight everything waste hours on cases they cannot win; teams that accept everything leave money on the table and teach some customers that disputing works.
This guide gives a practical way to decide. It relies on Stripe’s how disputes work, accepting disputes FAQ, dispute withdrawals FAQ, dispute fees FAQ and pricing; Braintree’s disputing chargebacks and pricing; and Visa’s Dispute Management Guidelines for Merchants (all accessed November 2026).
First: which stage are you in?
The options depend on timing.
| Stage | Your options |
|---|---|
| Before any dispute (complaint, early fraud warning) | Refund, or keep the charge |
| Inquiry / retrieval | Answer with information; refund if appropriate |
| Chargeback open | Accept, or contest with evidence |
| After a decision | Pre-arbitration in some cases |
The key constraint: once a chargeback is open, you cannot refund. Stripe’s withdrawals FAQ explains that you cannot refund a charge with a pending dispute, because the issuing bank has already returned the money to the cardholder; a direct refund would pay the customer twice. If you want the customer to have their money and the matter closed, accepting the dispute is the way.
What each option costs
Using Stripe’s US prices as an example (check your own country and contract):
| Option | Money | Fees | Counts toward dispute ratios? |
|---|---|---|---|
| Refund before a dispute | You return the payment | None for the dispute | No dispute is created |
| Accept a chargeback | You lose the payment | Dispute fee ($15), not returned | Yes |
| Contest and lose | You lose the payment | Dispute fee plus countered fee ($15 + $15) | Yes |
| Contest and win | You keep the payment | Dispute fee ($15); countered fee returned | Yes |
On Braintree, the pricing page lists a $15 chargeback fee for standard US merchants, and Braintree’s fee documentation describes it as non-refundable, even if you win.
Three things stand out:
- Winning is not free. The dispute fee stays, and Stripe’s FAQ says an accepted or won dispute counts against your dispute rate just like a lost one.
- Contesting adds a small extra cost, refunded if you win.
- The biggest cost is often time. Preparing a good response takes someone from support or finance away from other work.
There is one more cost to weigh. Stripe notes that the issuer’s decision can take 60 to 75 days after you submit, and the funds are held for that period.
The questions that decide it
1. Is the customer right?
Start here, and be honest. If the customer cancelled and you charged them anyway, or you promised a refund and never sent it, accept. Visa’s guidelines say this explicitly for cancelled recurring disputes (13.2): if the cardholder withdrew permission and you did not issue a credit, accept the dispute.
Then fix the cause. A lost case teaches you something; a contested case you should not have contested teaches you nothing and costs more.
2. Do you have the evidence the reason code asks for?
Each reason code needs specific proof (see reason codes for subscriptions). For subscriptions, ask:
- Fraud (Visa 10.4, Mastercard 4837): Do you have prior undisputed payments from this customer on this card, with matching IP or device? Usage around the billing date? Was the payment authenticated with 3D Secure? Strong history may qualify for Visa Compelling Evidence 3.0.
- Cancelled recurring (Visa 13.2, Mastercard 4841): Can you show there was no cancellation before the charge, the terms the customer accepted, and usage after the claimed cancellation date?
- Not received (Visa 13.1, Mastercard 4855): Can you show the account was available and used during the billed period?
- Credit not processed (Visa 13.6, Mastercard 4860): Did you refund? If not, were they entitled to one?
If the answer is “we have nothing beyond the invoice”, accept. Banks decide on what you send, and an invoice alone does not prove the customer authorized or used anything.
3. Is the amount worth the time?
A $9 monthly charge and a $1,200 annual renewal deserve different effort. Set a threshold based on your own numbers: what an hour of your team’s time costs, and how long a response takes. Below the threshold, contest only if the evidence is already assembled (for example, automatically).
4. Is this customer abusing the system?
A customer who disputes every month, or uses the product heavily and then claims fraud, is worth contesting even for small amounts, with the full usage record. Stop future renewals on that card either way.
5. Is the account still active?
If the customer is still subscribed and has disputed one charge, contact them before the deadline. Some disputes come from a family member or an accounting team who did not recognize the charge. Stripe’s docs note that a cardholder can withdraw a dispute, but also that a withdrawn dispute still counts and you should submit evidence anyway, because the case can still be decided against you otherwise.
Before a dispute: refund or wait?
When a customer complains, or an early fraud warning arrives on Stripe, you still have the refund option.
Refund when:
- the customer clearly did not want the charge (forgot to cancel, cancelled and was charged);
- the account shows no use since the charge;
- the amount is close to or below the dispute fee;
- an early fraud warning arrives on a new account with no activity.
Keep the charge when:
- the customer has used the service during the billed period and simply wants it free;
- the account has a long, consistent payment and usage history;
- your refund policy, accepted at signup, says no refund applies and the customer has not contacted you with a real problem.
Stripe’s guidance on early fraud warnings, covered in Stripe early fraud warnings, adds that refunding is most sensible for amounts around or below the dispute fee, and that a refund does not erase the fraud report itself.
A decision table
| Situation | Decision |
|---|---|
| Customer cancelled before the charge and you have no usage after | Accept (or refund, if no chargeback yet) |
| Refund was promised and not sent | Accept, then fix your refund process |
| Fraud claim, new account, no usage | Accept; cancel the subscription; review fraud rules |
| Fraud claim, months of payments and usage on the same card | Contest; check CE 3.0 eligibility |
| Cancelled claim, no cancellation in your records, usage continues | Contest with logs and terms |
| Small amount, no evidence assembled | Accept |
| Large amount, strong evidence | Contest |
| Repeat disputer | Contest; stop renewals on that card |
After the decision
Whatever you decide, record three things: the reason code, the decision, and why. After a few months, patterns appear: which reason codes you win, which product situations create disputes, which disputes you should have prevented. That record is how you lower your ratios over time; see preventing subscription chargebacks.
Doing this with NoChurn
For Stripe and Braintree disputes, NoChurn gathers the evidence automatically (cancel flow answers, emails sent, usage you send by API, help desk conversations read only), so you can see quickly whether a case is worth contesting. If you contest, it drafts a reply with AI and nothing is sent until a person on your team has reviewed it. On Stripe, early fraud warnings come with a one-click refund. The decision to accept, refund or contest always stays with you, and the bank decides the outcome. See chargebacks.