How to Track Revenue Recovery Rate in Your SaaS Dashboard

If you're losing customers to failed payments, you're not alone. The average SaaS business loses 9% of MRR annually to involuntary churn. But here's the thing: not all failed payments stay failed. Some get recovered. The question is, how many?
That's where revenue recovery rate comes in. It's the metric that tells you how much of your lost revenue you're actually getting back. If you're not tracking it, you're flying blind on one of the most important levers in your retention strategy.
This guide walks you through how to calculate revenue recovery rate, what it tells you, and how to build it into your SaaS dashboard so you can monitor it without manual spreadsheet hell.
What Is Revenue Recovery Rate?
Revenue recovery rate measures the percentage of failed payment revenue that you successfully recover within a specific time window (usually 30 or 60 days).
Here's the formula:
Revenue Recovery Rate = (Recovered MRR / Total Failed Payment MRR) × 100
For example, if you lose $5,000 in MRR to failed payments in March, and you recover $3,000 of it by the end of April, your 60-day revenue recovery rate is 60%.
This metric is critical because it tells you whether your payment recovery strategies are working. A low recovery rate means you're leaving money on the table. A high recovery rate means your dunning process, retry logic, and customer communication are dialed in.
Why Revenue Recovery Rate Matters More Than You Think
Most SaaS dashboards track churn rate, but churn rate doesn't tell you the full story. It lumps voluntary churn (customers who cancel on purpose) together with involuntary churn (customers who wanted to stay but couldn't because of payment failures).
Revenue recovery rate isolates the involuntary churn piece and tells you how well you're fixing it.
Here's why that matters:
- Involuntary churn is preventable. Unlike voluntary churn, which requires fixing product-market fit or customer success, involuntary churn is a billing problem. Fix the billing, recover the revenue.
- It's a direct ROI metric. Every percentage point of improvement in recovery rate is cash back in your bank account. If you're losing $10k/month to failed payments and you improve recovery from 40% to 60%, that's an extra $2k/month.
- It exposes weaknesses in your dunning flow. A 30-day recovery rate of 25% means your first-attempt recovery is weak. A 60-day rate of 50% means your follow-up efforts are working, but you're still losing half your failed payments permanently.
Step 1: Define Your Recovery Window
Before you can track recovery rate, you need to decide on a time window. The two most common are:
- 30-day recovery rate: Measures how much you recover within the first month after a payment fails.
- 60-day recovery rate: Gives you a fuller picture by including late recoveries from extended dunning sequences.
Most SaaS businesses track both. The 30-day number tells you how effective your immediate retry logic is. The 60-day number tells you whether your longer-term outreach (emails, support calls, manual follow-ups) is working.
If you're just starting, begin with 60-day tracking. It's more forgiving and gives you a clearer sense of total recoverable revenue.
Step 2: Pull Failed Payment Data from Stripe
To calculate recovery rate, you need two datasets:
- All failed payments (invoices marked as
payment_failedor subscriptions that entered apast_duestate) - All recovered payments (invoices that were initially failed but later succeeded)
Stripe doesn't give you this in a single report, so you'll need to pull it via the API or use a tool that does it for you.
Option A: Use the Stripe API
If you're comfortable with code, you can query Stripe's API to get the data. Here's the high-level approach:
- Fetch all invoices with
status=uncollectibleorstatus=past_duefrom the past 60 days. - For each failed invoice, check if a later payment succeeded. You can do this by looking at the invoice's
paidfield or checking for subsequent successful charges on the same subscription. - Sum the MRR from failed invoices (that's your denominator).
- Sum the MRR from recovered invoices (that's your numerator).
- Divide and multiply by 100 to get your recovery rate percentage.
This works, but it's tedious. You'll need to write scripts, handle edge cases (prorated invoices, refunds, subscription changes), and keep your logic up to date as Stripe's data model evolves.
Option B: Use a Payment Analytics Tool
If you don't want to build this yourself, tools like Baremetrics, ChartMogul, and ChurnBot can pull this data automatically. ChurnBot specifically focuses on payment recovery analytics and gives you recovery rate out of the box.
Step 3: Calculate Your Baseline Recovery Rate
Once you have the data, run the numbers for the past 60 days to establish a baseline.
Here's an example:
- Failed payments in January: $8,000 in MRR
- Recovered by end of February: $4,800 in MRR
- 60-day recovery rate: (4,800 / 8,000) × 100 = 60%
Now you have a benchmark. If your recovery rate is below 40%, you've got serious work to do. If it's above 60%, you're doing better than most SaaS businesses. If it's above 75%, you're best-in-class.
Step 4: Break Down Recovery by Failure Type
Not all failed payments are created equal. Some failure types recover at much higher rates than others.
For example:
- Expired cards: High recovery rate (70-80%) if you send a card update reminder.
- Insufficient funds: Medium recovery rate (40-50%) if you retry intelligently.
- Card declined (fraud suspected): Low recovery rate (10-20%) because the customer often needs to contact their bank.
Your dashboard should track recovery rate by Stripe decline code. This tells you where to focus your energy. If expired cards have a 30% recovery rate, that's a massive red flag. You should be hitting 80%+ on those.
Step 5: Track Recovery Rate Over Time
Revenue recovery rate isn't a set-it-and-forget-it metric. It changes as you improve your dunning process, retry logic, and customer communication.
Your dashboard should show:
- 30-day recovery rate (monthly trend): Did it go up or down this month?
- 60-day recovery rate (monthly trend): Same, but with a longer recovery window.
- Recovery rate by cohort: How does recovery differ for new customers vs. long-term customers?
- Recovery rate by plan tier: Are enterprise customers recovering at higher rates than self-serve?
Most analytics tools (Stripe Sigma, Baremetrics, ChartMogul) let you build custom charts for this. If you're using Google Sheets or Looker, you can automate the data pull and refresh it weekly.
Step 6: Set Up Alerts for Recovery Rate Drops
Your recovery rate can tank overnight if something breaks. Common culprits:
- Your dunning emails stop sending (email provider issue, suppression list problem)
- Stripe's Smart Retries get disabled by accident
- A batch of customers hit the same decline code at once (bank-side issue)
Set up a Slack alert (via Zapier, Stripe webhooks, or your analytics tool) that fires if your 30-day recovery rate drops by more than 10 percentage points in a single week. This gives you early warning before it becomes a revenue problem.
Step 7: Compare Recovery Rate to Industry Benchmarks
Here's what good looks like:
- 30-day recovery rate: 40-50% (good), 60%+ (excellent)
- 60-day recovery rate: 50-65% (good), 70%+ (excellent)
If you're below these numbers, the most common reasons are:
- No retry logic. Stripe attempts the payment once and gives up. You need Smart Retries enabled or custom retry schedules.
- Weak dunning emails. Generic "your payment failed" messages don't work. You need clear CTAs, urgency, and multiple touchpoints.
- No card expiry prevention. You're not proactively reaching out to customers before their cards expire.
For a full breakdown of what to fix, check out our payment recovery benchmarks guide.
Step 8: Optimize Based on What You Learn
Once you're tracking recovery rate, the real work begins. Here's how to use the data:
If your 30-day rate is low (<40%):
- Enable Stripe Smart Retries if you haven't already.
- Send dunning emails within 24 hours of the first failure.
- Test different email subject lines and CTAs.
If your 60-day rate is low (<50%):
- Extend your dunning sequence to 3-5 emails over 30 days.
- Add SMS or in-app notifications as additional touchpoints.
- Consider manual outreach for high-value accounts.
If recovery rate is high for some failure types but low for others:
- Focus your efforts on the low-performing codes. For example, if "insufficient funds" has a 20% recovery rate, test retrying on payday (1st and 15th of the month).
If recovery rate is dropping month-over-month:
- Check your email deliverability. Are your dunning emails landing in spam?
- Review your Stripe retry schedule. Did someone change it?
- Look for cohort-specific issues. Are new customers recovering at lower rates? That might indicate an onboarding or payment method issue.
Common Mistakes When Tracking Revenue Recovery Rate
Here are the traps most SaaS founders fall into:
1. Treating all recovered revenue as equal.
A payment that recovers in 3 days is not the same as one that recovers in 45 days. The longer it takes, the higher the risk that the customer cancels manually or churns before you recover the payment. Track recovery by time-to-recovery, not just success/failure.
2. Ignoring partial recoveries.
If a customer downgrades their plan after a failed payment, you've recovered some revenue, but not all of it. Your dashboard should account for this.
3. Not segmenting by customer type.
Enterprise customers recover differently than self-serve customers. High-touch recovery (account manager outreach) works for the former, but doesn't scale for the latter. Track recovery rate separately for each segment.
4. Confusing recovery rate with retry success rate.
Retry success rate measures how often a single retry attempt succeeds. Recovery rate measures how much total revenue you get back over a longer period. They're related, but not the same. You need both.
What to Do Next
Revenue recovery rate is one of the most actionable metrics in SaaS. Unlike churn rate (which is lagging and hard to move), recovery rate responds quickly to changes in your dunning process, retry logic, and customer communication.
If you're not tracking it yet, start today. Pull your Stripe data for the past 60 days, calculate your baseline, and build it into your dashboard. Then focus on the failure types with the lowest recovery rates and fix them one by one.
Want a shortcut? Run a free churn audit at churnbot.co/audit. It analyzes your Stripe account, calculates your recovery rate automatically, and shows you exactly where you're losing revenue and how to fix it. Takes 2 minutes, no signup required.
Related Posts



How healthy is your Stripe account?
Get a free churn health report. Find pending cancellations, failed payments, and expiring cards putting your MRR at risk.
Run Free Audit