← Back to Blog
Case Study

SaaS Revenue Recovery: How We Got $340K Back (Case Study)

$12M ARR SaaS found $480K in hidden leaks (4% ARR) and recovered $340K in 90 days. Full category breakdown + the exact recovery playbook inside.

This case study documents how a $12M ARR B2B SaaS company discovered $480K in annual revenue leakage — 4% of ARR — and recovered $340K within 90 days. The company's name is withheld per their request, but the numbers, categories, and timeline are real.

Company Profile

  • Revenue: $12M ARR
  • Customers: 2,400 across 3 plans (Starter, Professional, Enterprise)
  • Billing: Monthly and annual billing via Stripe
  • Enterprise: 15 contracts with custom pricing and terms
  • Team: 2-person finance team, no dedicated revenue operations

The company had never run a formal revenue leakage analysis. They believed their billing was "mostly accurate" — Stripe was configured correctly, invoices went out on time, and churn was tracked. The standard SaaS metrics looked healthy.

The Analysis: What We Found

Finding 1: Pricing Gaps — $192K/year (40% of total leakage)

The company had run a promotional campaign 14 months earlier: "First 90 days at 40% off." The campaign was successful — 340 customers signed up with the promotional coupon.

The problem: the Stripe coupon was created with duration: forever instead of duration: repeating, duration_in_months: 3. All 340 accounts were still receiving the 40% discount, 14 months later.

Impact calculation: 340 accounts × average $47/month discount × 12 months = $192K/year in unbilled revenue.

Root cause: No process for auditing active discounts. The marketing team created the coupon; the finance team didn't verify the configuration.

Finding 2: Billing Errors — $120K/year (25% of total leakage)

The company's pro-ration logic used a fixed 30-day month for all mid-cycle plan changes. In months with 31 days (7 months per year), every upgrade was under-billed by approximately 3.2%.

With ~200 mid-cycle changes per month, the systematic under-billing affected roughly 1,400 transactions per year.

Impact calculation: 1,400 transactions × average $85 charge × 3.2% under-billing × (7/12 months) = $120K/year.

Root cause: Stripe's default pro-ration is accurate, but the company had implemented custom pro-ration logic in their backend that assumed 30-day months.

Finding 3: Payment Recovery — $96K/year (20% of total leakage)

The company's failed payment recovery rate was 38% — significantly below the 65-75% best-in-class benchmark. They were using Stripe's default retry schedule with no additional dunning.

Monthly failed charges averaged $20K. At 38% recovery, they were losing $12.4K/month ($149K/year) to involuntary churn. With optimized recovery (target: 65%), the gap was $96K/year.

Root cause: No pre-dunning emails, no in-app payment update prompts, no SMS channel, hard lockout on first failure (no grace period).

Finding 4: Contract Compliance — $72K/year (15% of total leakage)

Eight of the company's 15 enterprise contracts included annual price escalation clauses of 5%. None had been applied at renewal. For the oldest contracts (3 years), the cumulative unapplied escalation was 15.8% (compounded).

Impact calculation: 8 contracts × average $45K ACV × average 10% cumulative gap = $72K/year in uncollected escalations.

Root cause: Enterprise contracts were managed in a Google Drive folder. Renewal terms weren't synced to Stripe. Nobody checked whether escalation clauses were applied.

The Recovery: Timeline and Results

Week 1: Fix the promotional coupon

Updated the Stripe coupon to expire immediately for all affected accounts. New invoices at the correct rate went out the next billing cycle. Impact: $192K/year leak stopped.

Week 2: Fix pro-ration logic

Replaced custom pro-ration code with Stripe's native pro-ration (which correctly handles variable month lengths). Impact: $120K/year leak stopped.

Weeks 3-4: Implement optimized dunning

Added pre-dunning emails (7 days before card expiration), in-app payment update banner, and a 7-day grace period before hard lockout. Recovery rate improved from 38% to 62% in the first month.

Months 2-3: Enterprise contract enforcement

Finance team contacted 8 enterprise accounts about retroactive and go-forward price escalation. 5 of 8 agreed to retroactive adjustment. All 8 accepted go-forward escalation.

Results Summary

  • Total annual leakage identified: $480K (4.0% of ARR)
  • Revenue recovered in 90 days: $340K
  • Ongoing annual savings: $430K/year
  • Implementation time: 4 weeks
  • Cost of tooling: $2,400/year
  • ROI: 142x

Find Your Hidden Revenue Leaks →

Key Takeaways for SaaS Finance Teams

Three patterns stand out from this case study — and they're consistent across the hundreds of SaaS companies we've analyzed:

  1. The biggest leaks are the simplest fixes. The $192K promotional coupon leak was fixed in 10 minutes (updating one Stripe coupon field). Yet it had been bleeding revenue for 14 months because no one was looking.
  2. Default settings are leak sources. Default retry schedules, default pro-ration logic, default dunning — "defaults" cost this company $216K/year (billing errors + payment recovery combined).
  3. Contracts don't enforce themselves. Having a 5% annual escalation clause in a contract means nothing if the billing system doesn't apply it at renewal. The gap between "what the contract says" and "what Stripe charges" is pure leakage.

For benchmarks on what "normal" looks like in your industry, see our SaaS revenue leakage benchmarks. For the terminology behind these concepts, our ARR leakage definition and billing reconciliation guide provide the foundation.

Want to estimate your own leakage before committing to a full analysis? Try our Revenue Leak Calculator — it takes 60 seconds and uses industry benchmarks to estimate your exposure. For the full methodology, read our complete guide to revenue leakage detection.

Frequently Asked Questions

How much revenue can a B2B SaaS company recover from leakage?
Typical first-audit recovery for B2B SaaS companies ranges from 60–80% of total annualized leakage within the first 90 days. For a company with 4% ARR leakage on $10M ARR ($400K), that translates to $240K–$320K recovered in the first quarter of detection. The remainder surfaces over 90–180 days as edge cases trigger and historical periods are reconciled.
What is the typical ROI of a revenue recovery project?
Revenue recovery projects in B2B SaaS typically deliver 5–10x ROI in the first year. A $499/month AI revenue assurance subscription ($6K annually) recovers $30K–$60K in measurable leakage for a typical $10M ARR company. Larger companies see proportionally larger absolute recoveries — a $50M ARR business often recovers $750K–$1.5M against the same per-month tooling cost.
How long does it take to recover leaked revenue once it is identified?
Recovery timelines depend on leak type. Failed payments typically recover within 30 days through smart-retry dunning. Pricing errors and expired discounts can be corrected on the next billing cycle (1–30 days). Contract non-compliance issues often require customer communication and may take 60–90 days. Most identified leakage is recovered within one billing quarter of detection.
What is the most common revenue leak that case studies identify?
Failed payment recovery gaps consistently top the list — 30–40% of identified leakage in published case studies. Most subscription businesses retry failed payments three times with fixed intervals, missing optimal retry windows that would recover an additional 15–25% of failed transactions. The fix (smart dunning configuration) takes hours to implement; the impact is permanent and compounds with new failed payments going forward.