SaaS businesses fail on cash more often than the recurring-revenue narrative suggests, because the timing of collections and the cost of acquisition rarely line up with the revenue you are permitted to recognise.
Recognised revenue is not cash
An annual contract billed upfront is twelve months of recognised revenue and one month of cash. A monthly contract is the reverse position. A model built on the P&L alone will mislead you in both cases. Forecast the invoice, the collection date and the recognition schedule as three separate things.
The inputs that actually drive the model
- **New MRR by channel**, built bottom-up from leads and conversion, not from a market-share assumption
- **Gross and net revenue retention**, applied separately, because expansion and churn move independently
- **Billing mix**, monthly vs annual, because it changes the cash curve without changing revenue
- **Days sales outstanding**, measured from your own ledger rather than assumed at 30
- **CAC payback in months**, which tells you how long each new customer is a cash drain
- **Cost to serve**, including hosting and support, which scales with customers rather than with revenue
The metric most models get wrong
Churn applied as a single blended percentage flattens the thing you most need to see. Cohort behaviour differs sharply by acquisition channel and by plan. If discounted annual customers churn at renewal and self-serve monthly customers churn in month two, a blended rate describes neither.
Growth funded by upfront annual billing is a loan from your customers. It is still real cash, but it has to be modelled as timing, not performance.
Building the forecast
Run a 13-week direct cash forecast for the near term and a 24-month indirect forecast for planning. The short one governs decisions this quarter: hiring, spend, whether a raise is time-critical. The long one tests strategy. They should reconcile.
Where this goes wrong in practice
A team hits a strong growth quarter, hires against forecast revenue, and finds that the cash from those contracts arrives across the following year while the salaries start next month. The model was not wrong about revenue. It was silent about timing.
If you want this built properly for your numbers, our [cash flow work](/services) starts with your billing data rather than a template.