Ghost revenue detection: how to find zombie MRR — customers who are paying but not using the product — using last-login and usage data, before that revenue evaporates post-close.
Inactive paid accounts — customers who pay but never use your product — are zombie MRR, and they're the #1 hidden churn risk in SaaS acquisitions. A customer paying $2,000/month who hasn't logged in for 6 months is not a retained customer; they're a churn event waiting to happen. ChurnLens computes a "usage-weighted MRR" from any subscription CSV to reveal how much revenue is genuinely sticky versus one invoice away from vanishing.
TL;DR: Inactive paid accounts (zombie MRR) are customers paying but not using the product. They represent 10-25% of reported MRR in many SaaS targets and vanish the moment the customer reviews their subscriptions. Detect them by comparing last-login dates to billing dates: any account with no engagement in 90+ days is zombie MRR, even if the card still clears every month.
Zombie MRR is recurring revenue from accounts that are paying but no longer engaging with the product. These customers haven't churned in the billing sense — the card still gets charged every month — but they've churned in every meaningful sense: no logins, no usage, no support tickets, no expansion. They're paying out of inertia, forgetfulness, or because cancellation is friction-heavy.
For buyers, zombie MRR is dangerous because it inflates both the headline MRR number and the implied retention rate. A business reporting $80K MRR with 15% zombie MRR is really a $68K MRR business with a retention problem masked by slow cancellation behavior. When those zombies finally cancel — and they will — the churn rate spikes and the buyer is left holding the decay.
| Last-Login Age | Zombie Probability | 12-Month Churn Risk | Action |
|---|---|---|---|
| 0–30 days | ~2% | Normal churn | Healthy |
| 31–60 days | ~8% | 1.5× baseline | Monitor |
| 61–90 days | ~25% | 3× baseline | Flag for outreach |
| 91–180 days | ~55% | 6× baseline | Zombie — high churn risk |
| 180+ days | ~80% | Effectively churned | Ghost revenue |
The two most reliable signals are last-login date and core feature usage. During diligence, request both from the seller's product analytics (Mixpanel, Amplitude, or database logs). If the seller can't provide last-login data, that's itself a red flag — either they don't track it (operational gap) or they don't want you to see it.
Build a simple account-health score from these inputs:
Once you've identified inactive accounts, calculate the exposure:
A target reporting $100K MRR with $18K of zombie MRR has an adjusted MRR of $82K. If you're paying a 5× ARR multiple, that's a $1.08M valuation gap — real money that you're paying for revenue that won't be there in 12 months.
Send the customer CSV with last-login data and ChurnLens flags inactive accounts, calculates zombie MRR exposure, and adjusts the valuation inputs automatically.
Run a Churn Report →If a customer has stopped using the product, why are they still paying? Several structural factors delay cancellation:
Each of these factors means the zombie MRR has a half-life. It's not permanent revenue. A business whose retention depends on cancellation friction rather than product value is structurally weaker than the numbers suggest — a core theme in our SaaS revenue quality score framework.
Zombie MRR almost always churns faster after an acquisition. New ownership often changes billing systems, sends renewal notices that prompt customers to re-evaluate, or tightens cancellation flows. We frequently see 30–50% of zombie MRR churn within 6 months of a deal closing — a spike that the buyer blames on "integration issues" but is really just the delayed reckoning.
Model this into your underwriting. If the target has $15K of zombie MRR, assume 50% of it churns in year one post-close and haircut the revenue projections accordingly.
These questions surface operational gaps and reveal how much of the "retention" is genuine product value versus cancellation friction. Combine the answers with our complete SaaS due diligence checklist for full coverage.
Sellers hide churn in 7 ways. Most buyers catch 0. Get the full checklist + a sample report on a synthetic $48K MRR case study.
Get the free checklist →Hidden churn is revenue decay that headline metrics conceal: customers on annual plans who have already stopped using the product, paid accounts sitting inactive, or revenue concentrated in a few logos about to leave. A SaaS business can show flat MRR while its real retention is collapsing. ChurnLens surfaces these signals before you buy, so you price the deal on true revenue quality.
ChurnLens analyzes five dimensions: revenue concentration, logo retention, annual-plan churn risk, inactive paid accounts, and MRR decline patterns. Each is weighted into a single 0-100 revenue-quality score benchmarked against comparable SaaS businesses. The score tells an acquirer whether reported MRR is durable or propped up by customers who are one renewal away from leaving, all before the deal closes.
Purchase price is usually a multiple of recurring revenue, so overstated retention directly inflates what you pay. A business with 20% hidden annual-plan churn is worth far less than its MRR implies. Buyers who skip churn diligence discover the decay only after closing, when it is too late to renegotiate. ChurnLens gives that visibility during the evaluation window instead.
Watch for revenue concentrated in a handful of accounts, a widening gap between signups and active users, annual contracts that never renew, and MRR that grows only through discounting. Each pattern signals fragile revenue. ChurnLens automatically flags these red flags from uploaded revenue data and ranks them by how much they threaten the durability of the recurring revenue base.
| Risk dimensions scored | 5 |
|---|---|
| Revenue-quality score range | 0-100 |
| Built for | Acquirers, PE, founders |
📥 Free SaaS Due Diligence Checklist
The exact 23-point checklist PE analysts use before acquiring SaaS businesses. 5-minute read.
Download Free Checklist →No spam. Unsubscribe anytime.