Revenue Trend Analysis for Subscription Businesses
By MCP Analytics Team | Published , updated
Subscription businesses have a revenue structure that is fundamentally different from transaction-based businesses. In e-commerce, revenue resets to zero every month. You need new orders to generate new revenue. In subscription businesses, revenue carries forward. Last month's customers are (mostly) still paying this month. The forecast question isn't "how much will we sell?" but "how much will we keep, how much will we lose, and how much new revenue will we add?"
This distinction matters because it changes which metrics drive your forecast, how you decompose revenue trends, and what kind of analysis actually helps you make better decisions.
Worked Example (Simulated): MRR by Cohort Age and a Churn Forecast
Question: How does MRR change as each start-month group ages, and how far apart do two churn assumptions land after 12 months?
Inputs: Simulated data, seed 17. Each group starts with 10 customers, and each customer brings $100 in MRR. At each month end, each active customer has an 8% chance of leaving, the same for every group. There is no added revenue from upgrades. For the forecast lines, the churn rates (3% and 7%), the $100,000 starting MRR and the $10,000 added each month are inputs, not results.
Method: For each group, count the customers still active at each age and multiply by $100. Then, for each churn case, start at $100,000, apply churn to the opening MRR, and add $10,000 at each month end for 12 months.
import random
SEED = 17
rng = random.Random(SEED)
cohort_sizes = [10, 10, 10]
monthly_churn = 0.08
mrr_per_customer = 100
months = 5
# Each cohort starts with 10 customers. Each active customer faces an
# independent 8% chance of churn at each month end. No expansion is modeled.
cohorts = []
for start_month, size in enumerate(cohort_sizes):
active = [True] * size
mrr_by_age = [sum(active) * mrr_per_customer]
for age in range(1, months - start_month):
active = [a and rng.random() >= monthly_churn for a in active]
mrr_by_age.append(sum(active) * mrr_per_customer)
cohorts.append(mrr_by_age)
print(f"Simulated data, seed {SEED}")
print(f"Inputs: {len(cohorts)} monthly cohorts; "
f"{cohort_sizes[0]} customers per cohort; "
f"${mrr_per_customer} starting MRR per customer; "
f"{monthly_churn:.0%} monthly churn chance; no expansion.")
print("MRR by cohort age:")
for i, row in enumerate(cohorts, start=1):
cells = " ".join(f"M{age}=${v:,}" for age, v in enumerate(row))
print(f"Cohort {i}: {cells}")
# Forecast lines: the churn rates and the $10,000 added each month are inputs.
for churn in (0.03, 0.07):
mrr = 100_000
for month in range(1, 13):
mrr = mrr * (1 - churn) + 10_000
print(f"Forecast with {churn:.0%} churn and $10,000 added at each "
f"month end: month 12 MRR=${mrr:,.2f}")
Printed output:
Simulated data, seed 17
Inputs: 3 monthly cohorts; 10 customers per cohort; $100 starting MRR per customer; 8% monthly churn chance; no expansion.
MRR by cohort age:
Cohort 1: M0=$1,000 M1=$900 M2=$800 M3=$800 M4=$800
Cohort 2: M0=$1,000 M1=$800 M2=$800 M3=$800
Cohort 3: M0=$1,000 M1=$900 M2=$700
Forecast with 3% churn and $10,000 added at each month end: month 12 MRR=$171,436.78
Forecast with 7% churn and $10,000 added at each month end: month 12 MRR=$124,917.30
Result: The first group has $800 at age 4, the second has $800 at age 3, and the third has $700 at age 2. Every group has the same 8% chance of churn and the same 10 customers, so the differences between the three groups are chance. In the forecast lines, month 12 MRR is $171,436.78 at 3% churn and $124,917.30 at 7%, a gap of $46,519.48 ($171,436.78 minus $124,917.30). Both lines are a formula applied to the inputs, not a prediction.
Limit: These are made-up customer paths from one seed. They do not show what any real firm should expect. A team can compare its own groups at the same age before it changes its churn plan or forecast.
The Building Blocks of Subscription Revenue
Every subscription business's monthly revenue is the sum of four components:
| Component | Definition | Direction |
|---|---|---|
| Existing MRR | Revenue from customers who were paying last month and are still paying | Carried forward |
| New MRR | Revenue from customers who started paying this month | Additive |
| Expansion MRR | Additional revenue from existing customers who upgraded or added seats | Additive |
| Churned MRR | Revenue lost from customers who cancelled or downgraded | Subtractive |
This month's MRR = Last month's MRR + New MRR + Expansion MRR - Churned MRR
A revenue forecast for a subscription business is really four separate forecasts combined. Most founders and operators get this wrong by forecasting aggregate MRR as a single time series, which works for short horizons but misses the dynamics that determine long-term trajectory.
Why Churn Is the Dominant Variable
In a subscription business, churn compounds. This is a central concept for revenue forecasting, and spreadsheet forecasts often get it wrong.
Consider two businesses, both with $100K MRR and $10K in new MRR per month:
Start with $100,000 MRR. At each month end, apply churn to opening MRR, then add $10,000 in new MRR. After 12 months, the simulated forecast gives $171,436.78 at 3% monthly churn and $124,917.30 at 7%. The gap is $46,519.48.
Same starting revenue. Same new customer acquisition. Only the churn rate differs, and the gap grows each month because churn acts on the whole opening base.
The implication for forecasting: small errors in your churn estimate create large errors in your revenue forecast. If you're building a 12-month projection, test how much your year-end MRR moves when you change the churn assumption, as the two lines in the example do.
Gross Churn vs. Net Revenue Retention
Gross churn counts only losses, customers who cancelled or downgraded. It tells you how fast your bucket is leaking.
Net Revenue Retention (NRR) accounts for expansion revenue from existing customers. If some customers upgrade while others churn, NRR captures the net effect. NRR above 100% means your existing customer base is growing by itself, expansion outpaces churn. NRR below 100% means you need new customers just to maintain current revenue.
For forecasting, NRR is the more useful metric. It tells you the organic growth rate of your installed base, independent of new acquisition. At an NRR above 100%, revenue from existing customers grows without any new customer. At an NRR below 100%, it shrinks.
Cohort-Based Revenue Analysis
Use the worked example above to compare the MRR of each start-month group as it ages. A cohort is a group of customers who started in the same month. The table uses simulated data.
What Cohort Analysis Shows You
For each monthly cohort, track how much MRR they contribute over time. A healthy pattern looks like this:
- Month 0: Full starting MRR for the cohort
- Month 1-3: Some early churn (customers who signed up but didn't find value). Use your own cohort records to set and review the rate.
- Month 4-12: Churn may flatten to a lower steady rate. Remaining customers are engaged.
- Month 12+: Revenue may actually increase if expansion (upgrades, additional seats) offsets the now-low churn rate.
An unhealthy pattern: cohorts keep losing customers at a steady rate with no flattening. That can mean customers leave at a steady rate regardless of tenure.
Using Cohorts for Forecasting
Once you have cohort retention curves for 3-6 cohorts, you can build a bottom-up forecast:
- For existing customers: Apply the cohort retention curve for each past cohort forward in time. You know how much MRR each cohort started with and what its retention pattern looks like.
- For future customers: Estimate new MRR per month (from your acquisition forecast), then apply the average cohort retention curve to project how each future cohort's revenue decays or grows.
- Sum all cohorts: The total MRR at any future date is the sum of all active cohorts' projected MRR at that date.
This is more accurate than a single-number forecast because it captures the composition effect. Older cohorts have different retention rates than newer cohorts. A business that's improving its product will see newer cohorts retain better. A business experiencing product decay will see newer cohorts churn faster. Aggregate MRR hides this; cohort analysis reveals it.
Expansion Revenue: The Growth Multiplier
For SaaS businesses with usage-based pricing, seat-based pricing, or multi-tier plans, expansion revenue can be as important as new customer acquisition. Here's how to incorporate it into your trend analysis:
- Track expansion rate by cohort tenure. At what point do customers typically upgrade? Month 3? Month 6? Is expansion correlated with usage milestones?
- Separate planned from organic expansion. A customer upgrading from Basic to Pro because they hit a feature gate is predictable. A customer adding 50 seats after an internal rollout is not. Forecast them differently.
- Watch for contraction. Customers who downgrade are a churn signal. They're reducing engagement. Contraction MRR should be tracked separately from full churn because it often precedes cancellation by 2-3 months.
Time Series Forecasting for MRR
You can apply standard time series methods (ARIMA, Prophet) to your aggregate MRR series, with some caveats:
What Works
- Trend detection: Is MRR growth accelerating, decelerating, or linear? Time series methods quantify this precisely.
- Seasonality in new acquisition: Some SaaS businesses see seasonal patterns in sign-ups (budget cycles in January, Q4 freezes). Prophet captures these well.
- Short-term forecasting: For 1-3 month MRR projections, aggregate time series forecasting is usually accurate because the composition of your customer base doesn't change dramatically in that window.
What Doesn't Work
- Detecting churn changes: If your churn rate shifts from 3% to 5% this month, aggregate MRR takes several months to show it. Cohort analysis catches it immediately.
- Long-term accuracy: A 12-month MRR forecast from time series alone will miss composition changes: shifts in customer mix, pricing changes, product launches that change retention curves.
- Causal understanding: Time series tells you what will happen (extrapolation) but not why. For subscription businesses, the "why" (churn drivers, expansion triggers) is what you need to change the trajectory.
Building Your Revenue Trend Dashboard
For a subscription business, effective revenue trend analysis tracks these metrics monthly:
| Metric | What It Tells You | Forecasting Use |
|---|---|---|
| MRR | Total recurring revenue right now | The number you're forecasting |
| Net New MRR | New + Expansion - Churned | Rate of change (is it accelerating?) |
| Gross Churn Rate | % of MRR lost to cancellations | Key input to compounding forecast |
| Net Revenue Retention | Expansion minus churn, as % of starting MRR | Organic growth rate of installed base |
| New Customer MRR | MRR from first-time customers | Acquisition contribution to growth |
| Quick Ratio | (New + Expansion) / Churned MRR | Growth efficiency (higher means growth outpaces churn) |
The Right Approach
Use cohort analysis for understanding and long-term forecasting. Use time series forecasting (ARIMA or Prophet on aggregate MRR) for short-term projections. Track NRR as a key indicator of your revenue trajectory. And decompose MRR changes into new, expansion, and churn: the aggregate number alone hides the signals that tell you whether your business is getting healthier or sicker.
Your turn
Bring your own data and the question you actually need answered.
MCP AnalyticsData science by email Send us your data and your question, and we will reply. ds@mcpanalytics.ai
Frequently Asked Questions
What is the difference between MRR and ARR?
MRR (Monthly Recurring Revenue) is the sum of all recurring revenue normalized to a monthly amount. ARR (Annual Recurring Revenue) is MRR multiplied by 12. MRR is the operating metric. It shows month-to-month changes. ARR is the reporting metric. For forecasting, work with MRR and convert to ARR at the end, because MRR catches trends faster.
How does churn affect revenue forecasting?
Churn compounds. If you lose 5% of customers per month, you lose 46% of your revenue in a year, not 60%, because churn acts on a shrinking base. Even a small churn rate increase (3% to 5% monthly) has a dramatic cumulative impact. Small errors in churn assumptions create large errors in revenue projections.
What is net revenue retention and why does it matter for forecasting?
Net Revenue Retention measures how much revenue you keep from existing customers over a period, including expansion and contraction, minus churn. NRR above 100% means existing customers grow faster than they churn. It's an important metric for subscription revenue forecasting because it captures the compounding effect of your installed base.
Can I use time series forecasting for subscription revenue?
Yes, with caveats. ARIMA and Prophet work on aggregate MRR and capture trends and seasonality. But they miss underlying dynamics, new vs. churned vs. expansion. For more accurate forecasts, decompose MRR into components, forecast each separately, and combine. MCP Analytics supports both aggregate trend forecasting and cohort-based retention analysis.