How I Build a SaaS Revenue Forecasting Model With Baremetrics

A forecast only matters if it survives the next billing cycle. That’s why I treat SaaS revenue forecasting as a working model, not a slide deck.

Baremetrics gives me a clean view of recurring revenue, churn, and expansion. I still need assumptions, though, and sometimes I need spreadsheets or accounting data to close the gap between operations and finance. If I want a forecast people can trust, I have to set it up with discipline from the start.

Start with clean billing data and one revenue definition

I begin by connecting Baremetrics to the billing system that actually moves money, usually Stripe, Recurly, or Chargebee. If finance needs a tighter link to the books, I add Xero or QuickBooks Online through Forecast+.

Before I build anything, I pick one revenue lens. For forecasting, I usually use recurring billed revenue as the operating view, then reconcile that against accounting later. That keeps the model readable. It also keeps the team from arguing over whether the forecast is about cash, bookings, or recognized revenue.

I also segment the data early. Plan, billing interval, customer type, and acquisition source can each change the shape of the forecast. A blended number can hide a weak monthly cohort behind a healthy annual one.

For a deeper read on the numbers I keep close, I use tracking subscription churn and MRR while I set up the base model.

That first pass is about removing noise. If the input is messy, the forecast will be messy too.

The metrics I build the model around

I do not give every metric equal weight. Some numbers shape the forecast. Others only decorate it.

MetricHow I use itWhat I watch
New MRRAdds fresh recurring revenueClose rate, pipeline quality, acquisition pace
Churned MRRRemoves lost revenueCancellation reasons, at-risk accounts
Expansion and downgradesAdjusts revenue from current customersSeat growth, plan changes, usage shifts
Net revenue retentionChecks whether the base is growingCohort health, segment mix, upsell strength
Average revenue per accountShows pricing and mix effectsEnterprise mix, small-account churn
Billing cadenceShapes cash timingMonthly, quarterly, and annual contracts

This is where the forecast stops being one line and starts becoming a system. New MRR tells me how much fresh revenue enters the model. Churned MRR tells me what leaks out. Expansion and downgrades tell me whether the current base is getting healthier or thinner.

I treat net revenue retention as a truth test. If new MRR rises while NRR falls, growth may look strong on paper and weak in the base. Average revenue per account helps me tell volume growth from pricing growth. That matters when I’m planning hiring or cash use.

Billing cadence matters too. Annual contracts can pull cash forward without changing the monthly recurring picture. That difference matters when I compare Baremetrics with finance reports or use a spreadsheet to map cash timing.

Stripe’s SaaS revenue forecasting guide makes the same point I do, the forecast works best when I tie assumptions to real data sources and clear ownership.

Build the forecast in layers, not one giant number

I do not start with a complex formula. I start with a base case I can explain in a meeting.

Baremetrics works best when I have enough history to trust the trend. I use at least six months for a rough forecast, 12 months for a stronger base, and 36 months when seasonality starts to matter. That history gives me a shape to work from.

My build order looks like this:

  1. I set a baseline with trailing 12-month revenue or a straight-line trend if growth is steady.
  2. I add new MRR, churned MRR, expansion, and downgrades as separate lines in the model.
  3. I smooth out noise with a moving average when one month spikes or drops hard.
  4. I add a seasonal layer if buying patterns repeat by month or quarter.
  5. I create best-case, expected-case, and worst-case scenarios so leaders can plan around risk.

The best model is the one I can explain without a screen share. That is why I like the approach in Grid’s revenue forecasting examples. It keeps the model simple enough to defend and flexible enough to adjust.

Straight-line forecasts work when the business is stable. Moving averages help when one month is noisy. A T12M average gives me a broader view when a short stretch looks too good or too bad. Seasonality helps when renewals, holidays, or buying cycles keep repeating.

Set assumptions people can challenge

The hardest part is not the math. It’s the assumptions.

I want every important assumption tied to a person, a source, and a review date. If sales expects a stronger close rate, I want to know why. If customer success sees churn pressure in one segment, I want that reflected in the model. If product pricing changes mid-quarter, I want the timing in the forecast, not buried in a note.

This is the structure I use when I write assumptions down:

AssumptionWho I align withWhat I check
Sales close rateSales leaderWin rate, stage mix, average deal size
Churn rateCustomer successCancellation reasons, renewal risk
Expansion timingProduct or CSSeat growth, add-ons, usage thresholds
Billing cadence changesFinanceAnnual prepay mix, invoice timing
Price changesFinance and salesLaunch date, grandfathered accounts

If I cannot explain an assumption in one sentence, I do not put it in the forecast.

A forecast gets stronger when the team can argue with it early.

That is where Baremetrics helps, but it does not finish the job for me. It shows the revenue pattern. It does not know that a pricing change starts next Tuesday or that a renewal motion shifted from monthly to annual billing. I still need manual assumptions for those changes.

Review the forecast on a fixed cadence

I review the forecast on a set rhythm, usually monthly and sometimes weekly when churn or sales velocity changes fast. The point is not to watch the model obsessively. The point is to catch drift before the board deck is due.

Each review starts with a few direct checks:

  • Did new MRR land where I expected?
  • Did churned MRR rise or fall?
  • Did expansion offset any losses?
  • Did the billing mix change enough to affect cash timing?

If the answer changes, I update the assumption and write the reason beside the model. That note matters more than a polished chart. Six weeks later, I want to know why the model moved.

I still keep a spreadsheet next to Baremetrics for scenario roll-ups, one-off adjustments, and board prep. Baremetrics gives me the operating view. The spreadsheet lets me test the cash effect of a delayed renewal, a price increase, or a churn spike in one segment.

When I want a broader read on the setup, I compare it with Baremetrics financial forecasting guide. It helps me spot where the model is solid and where I still need a manual check.

If failed payments are part of the churn story, I separate them from true cancellations before I change the forecast. That keeps the model from blaming the wrong problem.

Conclusion

A useful forecast starts with clean billing data, a small set of core metrics, and assumptions people can name. Once I break revenue into new MRR, churn, expansion, and billing cadence, the model gets easier to read and easier to defend.

That is the real value of deploying a SaaS revenue forecast in Baremetrics. I get a clearer view of what is happening now, and a better path for what I expect next.

When revenue shifts, I want the reason to show up in the model. That is how I keep the forecast honest.