What the forecast actually is
The 90-day cash-flow forecast signal in Spendaq's API is a projected daily balance curve — a time series that estimates the SMB account's balance at the end of each day for the next 90 days, starting from the current account balance and projecting forward based on expected inflows and outflows derived from corrected transaction history.
It is not a point estimate for day 90. A 90-day point estimate for an SMB with variable revenue is essentially noise — the confidence interval at that horizon is wide enough to be misleading. Instead, the signal includes a per-day projection with a confidence interval that widens as the forecast horizon extends. Day 7 projections carry tight intervals based on known recurring events; day 75 projections carry wide intervals that reflect genuine uncertainty about business cash flows at that distance.
The consuming application can choose how to use this. Most useful applications: 30-day projected balance for cash-position planning, 7-day projected balance for near-term liquidity alerts, pattern-of-concern detection (a projected period where balance drops below a threshold), and cash runway calculation (how many days until the projected balance hits zero on current trajectory).
The inputs: what feeds the model
The forecast model operates on corrected transaction history — categories that have been through Spendaq's reclassification layer rather than raw open banking categories. This is the prerequisite we've discussed at length elsewhere: a forecast built on miscategorized transaction history will be wrong in systematic, hard-to-detect ways.
From corrected transaction history, the model extracts four classes of inputs:
Recurring income stack
Transactions classified as revenue — customer payments, subscription income, recurring service fees — that repeat on a detectable cadence. The model identifies recurring income relationships by counterparty identity, amount pattern (exact match or within a tolerance band for invoiced amounts that vary slightly), and timing cadence. For each identified recurring income stream, the model projects forward on its observed cadence with an amount estimate based on the trailing 3-month distribution.
Counterparty-level tracking is important here: a single client who pays monthly is modeled as a recurring income source with a specific expected amount and timing. If they're 5 days late in the current period, the model flags the receivable as delayed rather than treating the month as income-free. This is the difference between a forecast that reflects business reality and one that just extrapolates trailing averages.
Fixed expense stack
Recurring expenses with known amounts and timing: rent, payroll, insurance, loan payments, subscription software. These are projected at their observed amounts and cadences. The model distinguishes fixed from variable by coefficient of variation — a payment that repeats at the same amount with a low coefficient of variation is treated as fixed; one with high variance is treated as semi-variable.
The fixed expense projection is the most reliable component of the 90-day signal. A business with stable payroll and fixed overheads will have accurate fixed cost projections even at the 60-90 day horizon. The uncertainty concentrates in the revenue and variable cost projections, not the fixed stack.
Variable expense model
Expenses that vary with business volume — materials, contractor labor, transaction-based processing fees — are projected as a percentage of projected revenue rather than as a fixed dollar amount. The relationship coefficient is estimated from the trailing correlation between revenue and these expense categories in the historical data. For service businesses with relatively stable margins, this is a reasonable approximation. For businesses with volatile margins or seasonal cost structures, the variable model introduces more uncertainty.
One-time items and noise suppression
The fourth input class is what gets excluded from projection: transactions that appear once in the historical window and have no recurring pattern. Equipment purchases, tax payments, professional fees — unless these appear at a regular cadence, the model excludes them from the forward projection rather than projecting them forward as if they'll repeat. Failing to exclude one-time items is a common error in naive forecasting approaches that makes projections systematically negative — large one-time expenses in the lookback window inflate projected costs if they're treated as recurring.
Confidence scoring and when to show it
Every day in the 90-day projection carries a confidence score that reflects how well the historical data supports the projection at that distance. The scoring considers: how many periods of history are available (longer history = higher confidence), how stable the recurring patterns are (low variance = higher confidence), how complete the most recent period is (partial current month reduces confidence), and the ratio of explained to unexplained cash flows in the historical data.
A typical confidence profile for an SMB account with 6+ months of clean history: days 1-14 score 0.85-0.95, days 15-30 score 0.70-0.85, days 31-60 score 0.55-0.70, days 61-90 score 0.40-0.60. The widening confidence interval as forecast horizon extends reflects genuine model uncertainty — the 90-day confidence score for an SMB with seasonal revenue swings or an irregular client payment schedule is lower, accurately, than for a business with highly predictable monthly revenue.
Product teams consuming this signal should display confidence information — not necessarily as a raw score, but as a visual representation that prevents users from treating long-horizon projections as high-certainty predictions. A 90-day balance chart with a widening confidence band is more honest and ultimately more trustworthy than a single line that implies false precision.
Edge cases that matter for SMB populations
Three edge cases require explicit handling that generic time-series forecasting approaches miss for SMB business accounts:
Seasonal businesses: A landscaping company, a retail shop, a tax preparation firm — businesses with strong seasonality need seasonality-aware forecasting rather than flat trend projection. The model applies a seasonal adjustment based on same-period-prior-year patterns when sufficient history is available (12+ months). For newer accounts with less than 12 months of history, the model flags potential seasonality detected in partial-year patterns and widens the confidence interval accordingly rather than producing a confidently wrong projection.
Large irregular receivables: A consulting firm with a $50,000 contract payment expected in 45 days that doesn't appear in the trailing average will have an artificially pessimistic projection unless that future payment is accounted for. The model can accept optional future event inputs — expected large receivables or one-time payments — that get incorporated into the projection. Without this hook, the forecast misses information the business owner has that the historical data doesn't reflect.
Owner intercompany flows: Many small businesses intermix owner personal transactions with business transactions, particularly early-stage businesses before clean accounting practices are established. Owner capital injections, intercompany transfers, and personal expense reimbursements appear in the business account and can significantly distort income projections if they're classified as revenue. The reclassification layer handles this by distinguishing ACH transfer counterparties that appear to be personal accounts from those that appear to be business counterparties — but it's imperfect, and the forecast model handles residual uncertainty here by weighting irregular large credits with lower confidence scores.
What the forecast doesn't claim to do
The 90-day cash-flow forecast is a quantitative signal based on observable historical patterns. It is not a financial advisor's recommendation, not a guarantee of future cash position, and not a substitute for the business owner's own understanding of their financial situation. It doesn't know about a contract that was just signed and will generate revenue in 60 days; it doesn't know about an invoice that the owner knows won't be paid on time. These are known unknowns that the historical data can't capture.
The right way to position the forecast feature in your product is as a monitoring and early-warning tool, not as a definitive financial projection. "Based on your recent patterns, here's where you're trending" is the honest frame — useful for catching problems before they happen, but not authoritative about a future that hasn't occurred yet. That positioning earns user trust in a way that over-confident projections don't.