Build a Recurring Revenue Forecast
This guide describes how to model recurring revenue such as subscriptions, retainers or contracts using Model Reef’s timing and driver engine.
Before you start
You should understand:
The types of recurring revenue you have (monthly subscriptions, annual licences, retainers).
Expected churn, retention and expansion patterns.
Billing frequency and payment terms.
What you will build
Variables and drivers for subscribers, price and churn.
Recurring revenue profiles with appropriate timing.
Cash behaviour based on billing cycles and delays.
Visibility of recurring revenue in statements and the Cash Waterfall.
Steps
Create subscriber and ARPU drivers
In the Data Library:
Create a subscriber count driver for each segment (e.g.,
Subs - Basic,Subs - Pro).Enter starting subscriber numbers.
Enter monthly net adds or growth rates.
Create an ARPU driver (Average Revenue Per User) per segment (e.g.,
ARPU - Basic,ARPU - Pro).Enter current prices and any planned price increases.
Build recurring revenue variables
For each segment:
Create a Revenue variable named clearly, for example
Revenue - Subscriptions - Basic.In the revenue modal:
Use a formula:
Revenue = Subscribers × ARPU.Link to the subscriber and ARPU drivers from the Data Library.
Set frequency to monthly (or your billing cycle).
Set start date and end date as appropriate.
For annual subscriptions:
Use a schedule that triggers revenue recognition annually.
Or model accrual monthly and billing annually via separate cash timing logic.
Add churn, retention and expansion
Churn and retention can be represented as drivers:
Create churn rate drivers (e.g.,
Churn - Basic,Churn - Pro).Incorporate churn into subscriber drivers, for example:
Subscribers_t = Subscribers_t_minus_1 × (1 minus churn_rate) + new_subscribers_t.
For expansion:
Create drivers for ARPU uplift or seat expansion.
Factor them into ARPU or subscriber counts.
This can be implemented either inside the driver definitions or through custom formulas referencing multiple drivers.
Configure cash timing
Billing and cash timing are handled by delays:
In each subscription revenue variable:
Set Delay based on billing terms:
For monthly billing with immediate payment, delay might be 0 to 7 days.
For annual billing paid in advance, revenue may accrue over the year but cash arrives at the start.
Model these explicitly:
Accrual pattern via schedule and formula.
Cash timing via delay settings.
This will automatically generate AR where accrual and cash timing differ.
Layer in subscription specific costs
To understand unit economics:
Create COGS variables for hosting, payment processing or direct support.
Create Staff variables for success and support teams.
Link these costs to drivers:
Cost per subscriber.
Cost per active user.
Cost per seat.
This allows you to see gross margin and contribution per segment.
Check your work
Recurring revenue levels follow subscriber and ARPU patterns.
Churn and retention have the expected effect on subscriber counts.
Cash timing reflects actual billing terms.
COGS and staff costs are correctly linked to subscriber activity.
Troubleshooting
Related guides
Last updated