Net revenue churn formula, with gross churn and net revenue retention worked through
Three numbers describe how much recurring revenue a subscription business keeps: gross revenue churn, net revenue churn and net revenue retention. They use the same inputs, they are easy to compute, and they are just as easy to compute wrong. This guide gives each formula, works one month through by hand, lists the mistakes that quietly move the result, and shows how billing leaks such as unbilled proration make the number look better or worse than the business really is.
Why one churn number is never enough
A single churn rate hides the direction of travel. Two companies can both report the same net figure while one is losing a large share of its base and covering it with upsell, and the other is barely losing anyone. Gross revenue churn tells you how much revenue walks out the door. Net revenue churn tells you what is left after expansion from the accounts you already had. Net revenue retention turns the same math into a growth view that boards and investors read first.
All three are cohort measures. They look only at the revenue you had at the start of the period and follow what happened to it. New customer revenue is never part of these formulas, because it says nothing about whether the existing base is healthy.
- Gross revenue churn answers how much existing revenue you lost.
- Net revenue churn answers how much you lost after expansion from the same accounts.
- Net revenue retention answers how much of the starting revenue you still have, expansion included.
The four inputs every formula uses
Before any formula, fix the inputs for one period, usually a calendar month. Take them from your billing system at the subscription level, not from bank deposits, because cash timing and recurring revenue are different things.
- Starting MRR. Monthly recurring revenue at the first moment of the period, from active subscriptions only.
- Churned MRR. Recurring revenue from subscriptions that ended during the period, voluntary and involuntary.
- Contraction MRR. Revenue lost from accounts that stayed but paid less, through downgrades, fewer seats or a new discount.
- Expansion MRR. Revenue added by accounts that existed at the start, through upgrades, more seats or add-ons.
Annual and quarterly plans count at their monthly equivalent. A 1,200 USD yearly plan is 100 USD of MRR, every month of the term, not 1,200 USD in the month it was paid.
The gross revenue churn formula
Gross revenue churn ignores expansion entirely. It is the purest view of loss, and it can never be negative.
Gross revenue churn = (Churned MRR + Contraction MRR) / Starting MRR
Because expansion does not enter it, gross churn is the number to watch when you want to know whether the product keeps the customers it has. A rising gross rate is an early warning even while revenue still grows, since expansion from a shrinking base runs out eventually.
- Use it to set targets for retention work and payment recovery.
- Use it to compare months honestly, because it cannot be flattered by one large upsell.
The net revenue churn formula
Net revenue churn subtracts expansion from the loss. This is the net revenue churn formula most finance teams report.
Net revenue churn = (Churned MRR + Contraction MRR minus Expansion MRR) / Starting MRR
When expansion is larger than churn and contraction combined, the result is negative. Negative net revenue churn means the base grows on its own, before a single new customer signs. It is a strong signal, but it can coexist with a gross churn rate that is far too high, so always read the two together.
Net revenue retention, the same math turned around
Net revenue retention, often shortened to NRR, starts from the same inputs and asks what share of the starting revenue remains.
Net revenue retention = (Starting MRR minus Churned MRR minus Contraction MRR plus Expansion MRR) / Starting MRR
NRR and net revenue churn always add up to one hundred percent. If net revenue churn is 2 percent, NRR is 98 percent. If net revenue churn is minus 3 percent, NRR is 103 percent. Pick one for reporting and keep it, so nobody compares a churn figure with a retention figure by accident.
One month worked through by hand
For example, take a company that starts the month with 100,000 USD of MRR. During the month some accounts cancel, some downgrade and some upgrade. New sign-ups add revenue too, but they stay out of the calculation. The round numbers below are illustrative only and are chosen to keep the arithmetic easy to follow.
| Input | Amount |
|---|---|
| Starting MRR | 100,000 USD |
| Churned MRR | 4,000 USD |
| Contraction MRR | 1,000 USD |
| Expansion MRR | 3,000 USD |
| New customer MRR (excluded) | 6,000 USD |
Now apply each formula to the same inputs.
| Metric | Calculation | Result |
|---|---|---|
| Gross revenue churn | (4,000 + 1,000) / 100,000 | 5 percent |
| Net revenue churn | (4,000 + 1,000 minus 3,000) / 100,000 | 2 percent |
| Net revenue retention | (100,000 minus 4,000 minus 1,000 plus 3,000) / 100,000 | 98 percent |
Ending MRR is 104,000 USD once new revenue is added, so headline growth looks healthy. The retention math says something more useful: five percent of the existing base left in one month, and upsell covered a little more than half of it. That gap is where retention and recovery work pays off.
Turning the monthly rate into a yearly view
A monthly rate does not multiply by twelve, because each month starts from a smaller or larger base. For example, a constant 2 percent monthly net revenue churn leaves roughly 0.98 to the twelfth power of the starting revenue after a year, which is about 78 percent, not 76 percent. For a yearly NRR, the cleaner method is to take the cohort of accounts active twelve months ago and compare their MRR then with their MRR today.
Mistakes that quietly change the result
Most disagreements about churn come from definitions, not arithmetic. These are the mistakes that show up most often when two teams compare their numbers.
- Counting expansion twice. If an account upgrades and you record the new plan as a new subscription, its full value lands in new MRR and the difference lands again in expansion. Track plan changes as changes on the same subscription.
- Mixing in new customer revenue. Adding new MRR to the numerator turns a retention metric into a growth metric. Keep new revenue in its own line.
- Booking annual contracts as one month. A yearly prepayment recorded as a single month of revenue inflates that month and then shows eleven months of apparent churn. Normalize every term to monthly.
- Ignoring renewal timing for annual plans. An annual account that does not renew churns its full monthly value in the month the term ends, not spread over the year. Expect lumpy months and report a trailing average next to the monthly figure.
- Treating refunds as churn or ignoring them. A refund of a past charge is a cash event, not lost recurring revenue, unless the subscription also ended or moved to a lower price. Record the subscription change, and track refunds separately.
- Forgetting discounts. A new coupon on an existing account is contraction. A coupon that expires and returns the account to full price is expansion. If coupon changes never reach your MRR, both numbers drift.
- Counting paused accounts as active. A paused subscription bills nothing. Either remove it from MRR while paused or report it in its own bucket, but never count it as full revenue.
How billing leaks distort the churn numbers
Churn formulas trust the billing data. When billing itself is leaking, the formulas report a business that does not exist. A few leak types have a direct and predictable effect.
Unbilled proration is the clearest case. When a customer upgrades mid-cycle and the prorated difference is never invoiced, your system may still record the new plan price as MRR. Expansion looks real on the report, while the cash for the first partial period never arrives. Net revenue churn looks better than the money supports. The fix is to make sure the difference is charged at the moment of the upgrade, and to audit past plan changes for invoices that were created and never paid.
Failed renewals push the other way and often hide inside voluntary churn. A subscription that ends after a declined card is counted as churned MRR, exactly like a deliberate cancellation. If the renewal was retried once and dropped, part of that churn was recoverable. Separating involuntary from voluntary churn shows how much of the gross rate a better retry schedule could remove.
- Forever coupons keep accounts at a discount that was meant to end, so contraction never reverses into expansion.
- Comped accounts with active usage sit at zero MRR and never appear in any formula.
- Legacy prices hold accounts below the current price list, which caps expansion you assume will happen.
- Expiring cards create a predictable wave of involuntary churn in the month the cards lapse.
Separate the recoverable part
For example, if 4,000 USD of churned MRR in the month above includes 1,500 USD from subscriptions that ended after a payment failure, gross churn splits into 2.5 percent voluntary and 1.5 percent involuntary, plus contraction. The involuntary share responds to failed payment recovery and to a proper dunning software schedule. The voluntary share responds to cancel flows and save offers, covered in our guide on how to reduce churn.
A reporting routine that holds up
Pick definitions once, write them down and apply them every month. Then the trend means something, even if your absolute numbers differ from a peer's.
- Report gross revenue churn and NRR side by side every month.
- Split churned MRR into voluntary and involuntary, based on whether the subscription ended after a failed payment.
- Show contraction from discounts separately from contraction from downgrades.
- Add a trailing three month average to smooth annual renewal months.
- Reconcile MRR changes with invoices, so expansion that was never billed does not count.
A subscription analytics view that reads the billing system directly removes most of the manual work, and a periodic billing leakage review catches the data problems that make the formula lie.
Find the leaks behind your churn number
RevenueLeak connects read-only to your billing system, for example through Stripe smart retries data and subscription history, and shows in dollars per month how much of your churn comes from failed renewals, expiring cards, unbilled proration, forever coupons and the other leak categories. You see the accounts behind each number, ranked by value, before you change anything.