What are Refunds?
Refunds is the total amount of money returned to customers in a period. Unlike failed charges (money never collected), refunds represent money that was successfully collected and then given back.
Every refund directly reduces Net Cash Flow. The payment was already settled, so the refund reverses that cash movement. Stripe also typically does not return the original processing fee, meaning the net cost of a refund is the refund amount plus the fee you already paid to collect it.
Refunds are a signal. A rising refund rate can indicate pricing misalignment, product gaps, onboarding friction, or support-driven appeasement refunds masking deeper issues. Tracking the amount and rate together reveals whether refunds are growing in line with revenue or accelerating ahead of it.
The Refunds formula
Refund Rate
The rate version normalizes refunds as a percentage of total billings:
Worked example
March 2026: Your company has $52,300 in paid invoices and issues 4 refunds:
| Refund | Reason | Amount |
|---|---|---|
| #1 | Duplicate charge | $99 |
| #2 | Customer downgraded mid-cycle | $150 |
| #3 | Product didn’t meet expectations | $299 |
| #4 | Prorated annual cancellation | $302 |
| Total Refunds | $850 | |
A 1.6% refund rate is within the healthy range for most SaaS companies. The $850 is subtracted from Net Cash Flow, and the processing fees originally paid on those charges (~$25 at 2.9%) are not returned by Stripe — making the true cost of these refunds closer to $875.
How it’s computed
North Metric pulls refund data directly from Stripe’s /v1/refunds API during the daily snapshot:
Full vs partial refunds
Stripe supports both full and partial refunds. A $200 charge refunded $50 creates a $50 refund object — the Refunds metric captures the actual amount refunded, not the original charge amount. Multiple partial refunds on the same charge each create separate refund objects and are summed individually.
The hidden cost of refunds
Stripe does not return the original processing fee when you issue a refund. A $100 charge incurs ~$3.20 in fees (2.9% + $0.30). If you refund the full $100, you’ve lost $103.20 — the refund amount plus the non-recoverable fee. At scale, this makes refunds more expensive than they appear in the raw metric.
Refunds in Net Cash Flow
The total_refunds variable feeds directly into the Net Cash Flow equation: total_cash_received - total_refunds - total_fees. A refund spike in one month can depress Net Cash Flow even if MRR is growing steadily.
Refunds vs Failed Charges
Both reduce your effective revenue, but at different stages of the payment lifecycle.
| Refunds | Failed Charges | |
|---|---|---|
| What happened | Payment succeeded, then money was returned | Payment was attempted but never succeeded |
| Cash impact | Cash leaves your account (negative settlement) | Cash was never collected (no settlement to reverse) |
| Fee impact | Original processing fee is not returned — you pay twice | No fee charged — Stripe doesn't charge for failed attempts |
| Root cause | Product misfit, billing errors, cancellation policies, disputes | Expired cards, insufficient funds, bank declines |
| Prevention | Better onboarding, clearer pricing, prorated downgrades instead of full refunds | Card updater services, smart retry timing, dunning emails |
Common Refunds mistakes
- Attributing refunds to the wrong month. A charge from January refunded in March should appear in March’s refund total, not January’s. This matches when the cash actually leaves your account. Backdating refunds to the charge month distorts both months.
- Ignoring the processing fee loss. Stripe keeps the original processing fee on refunds. At 2.9% + $0.30, a $500 refund actually costs $514.80. At scale, this hidden cost can be material — a company issuing $10K/month in refunds loses an additional $300+ in non-recoverable fees.
- Not segmenting by reason. Duplicate-charge refunds are billing bugs (fix the system). Product-dissatisfaction refunds are churn signals (fix the product). Prorated cancellation refunds are policy-driven (evaluate the policy). A single refund total hides these distinctions.
- Confusing refunds with chargebacks. A refund is voluntary — you initiate it. A chargeback (dispute) is involuntary — the customer’s bank reverses the charge. Chargebacks carry additional fees ($15–$25 per dispute) and, at high rates, can result in Stripe placing your account under review.
- Using refunds to mask churn. Proactively refunding a dissatisfied customer prevents a chargeback and preserves the relationship, but if the customer then cancels, the refund just accelerated the cash impact of churn. Track whether refunded customers stay or leave.
Refund Rate benchmarks
Refund Rate benchmarks are segmented by MRR tier. Lower is better — a rate below 0.5% is strong, and above 2% warrants investigation. Larger companies tend to have lower refund rates due to more mature billing systems and clearer pricing.
| Stage · MRR | Bottom 25% | Median | Top 25% |
|---|---|---|---|
| Seed · < $10K | 2.0% | 1.0% | 0.5% |
| Early · $10K – $50K | 1.5% | 0.8% | 0.3% |
| Growth · $50K – $100K | 1.2% | 0.7% | 0.3% |
| Scale · $100K – $500K | 1.0% | 0.5% | 0.2% |
| Enterprise · $500K+ | 1.0% | 0.5% | 0.2% |
Frequently asked questions
What is a good Refund Rate for SaaS?
Below 0.5% is strong. The median refund rate across SaaS companies ranges from roughly 0.5% to 1.0% depending on stage. Above 2% suggests a systemic issue — pricing misalignment, product gaps, or an overly generous refund policy that’s being exploited.
Does Stripe return processing fees on refunds?
No. Stripe keeps the original processing fee when you issue a refund. A $100 charge with a $3.20 fee costs you $103.20 if fully refunded — you return $100 to the customer but don’t get the $3.20 fee back. This makes refund prevention more valuable than the refund amount alone suggests.
How do refunds affect MRR?
Refunds don’t directly affect MRR. MRR measures the subscription amount, not cash collected. A refund reduces Net Cash Flow but leaves MRR unchanged unless the customer also cancels or downgrades their subscription. If refunds consistently precede cancellations, they’re an early churn signal.
Should I use the refund date or the charge date?
The refund date. North Metric uses the refund creation timestamp (refund.created), not the original charge date. This matches cash-basis accounting — the cash leaves your account on the refund date. Backdating to the charge date distorts both the original period (inflated refunds) and the current period (understated refunds).
What is the difference between a refund and a chargeback?
A refund is voluntary — your team initiates it through Stripe. A chargeback (dispute) is involuntary — the customer’s bank reverses the charge on their behalf. Chargebacks carry additional fees ($15–$25 per dispute), can take months to resolve, and at high rates (>1% of transactions) can trigger Stripe account review. Proactive refunds to dissatisfied customers prevent chargebacks and their compounding costs.
From metric to action
North Metric estimates the money leaking to old prices and discounts on your Stripe account. See revenue leakage.