Expense Forecasting: The Step Before the 13-Week Cash Flow Model
Before any weekly cash flow numbers can be trusted, every operating expense must be identified, classified, and timed to the day it actually leaves the bank. This is how that work gets done.
Revenue forecasting attracts much of the attention, but operating expenses — payroll, rent, taxes, subscriptions, insurance — are the part of the model where surprises actually cost money. They hit the bank account on fixed dates regardless of how sales are going. Miss them in the forecast and the weekly closing balances become fiction.
Extracting from the general ledger
The starting point is 12 to 24 months of actual transaction history from the accounting journal. This is the primary data source. It shows what the business actually paid — not what anyone thinks it paid.
Twelve months reveals normal operating patterns and seasonality. Twenty-four months may also show anomalies: a one-off legal settlement, an insurance claim, an unusually large repair. Both perspectives are useful.
- Date
- Account code
- Account name
- Description
- Amount
- Supplier / payee name
- Department or branch
- Invoice reference
Once exported, I filter to expense accounts only — removing for example revenue and equity lines. Then I calculate 12-month and 24-month totals per account. And mark which accounts appear every month (recurring) and which appear only occasionally (sporadic).
To each expense line I assign (add grouping columns):
- Category (payroll, occupancy, marketing, general and administrative, taxes, CapEx, other).
- Expense item (more specific: "office salaries", "warehouse rent", "Google Ads", etc.).
- Branch / department (if necessary / meaningful).
Grouping into forecasting categories
The chart of accounts is already organized — I use it as the starting structure rather than building something new. I usually map every expense account to one of forecasting categories.
| Category | Typical accounts |
|---|---|
| Payroll & employee benefits | Salaries, bonuses, payroll taxes, health insurance, pension contributions |
| Occupancy & utilities | Office rent, warehouse rent, electricity, water, heating |
| Selling, marketing & distribution | Digital advertising, agency fees, events, delivery costs, sales commissions |
| General & administrative | SaaS subscriptions, stationery, IT support, bank charges, postage |
| Taxes & statutory payments | VAT settlements, corporate tax instalments, local business taxes |
| Capital expenditure | Equipment purchases, vehicle acquisitions, leasehold improvements |
| Other / non-recurring / non-operating | Legal settlements, redundancy costs, one-off consulting fees, insurance claims, provisions |
Each general ledger (GL) account goes into exactly one category (type of expenses). Where an account could fit in two, I assign it to the more dominant one and add a note. It is reasonable to resolve any overlaps at this stage — not later when the register is already in use.
Setting the right level of detail
Not every expense line needs its own row in the forecast. The rule is straightforward: keep items individual when they are large or unpredictable; group them when they are small and stable.
| Category / expense type | Recommended detail level | Reason |
|---|---|---|
| Payroll | By department or by person for key staff | Largest outflow; timing is exact |
| Rent & occupancy | Individual per property | Fixed amounts, fixed dates |
| Major professional fees | Individual (audit, legal, main consultant) | Large and lumpy |
| Marketing | Medium — by channel or agency | Variable but manageable in groups |
| Office supplies, small SaaS tools | Grouped into one line | Small and stable; not worth individual tracking |
| Taxes | Individual per obligation | Specific due dates; penalties for late payment |
| Capital expenditure | Individual per project or asset | Large, one-off, specific timing |
If necessary, I break down certain categories by expense item. For example, Payroll & employee benefits category might be broken down by the following expense items: wages, bonuses, payroll taxes, health insurance, and pension contributions.
For multi-branch businesses, I add a branch or department column alongside the category column. This keeps the consolidated model intact while making it possible to examine cost pressure by location.
The master expense register
Once I have extracted and cleaned historical expense transactions, the next step is to create a master expense register.
The master expense register is not the raw list of thousands of historical transactions. It is also not the final weekly cash forecast.
It is a summary working document that sits in between:
- Raw historical transactions (from GL or accounting journal).
- Final 13-week cash flow forecast.
A goal is to have one clean, manageable place where I list every type of expense the company has, with all the key information needed to forecast it for the next 13 weeks.
The expense register looks like a table (usually in Excel) with one row per category / expense type and if necessary by expense item.
| Column | Purpose |
|---|---|
| Category / expense type | One of the main broader groups. |
| Expense item / GL account | Specific name, usually matching the GL / chart of accounts (e.g. "salaries – office staff", "electricity", "audit fee"). Not individual suppliers unless very important. |
| Branch / department | For multi-location businesses. |
| Historical monthly average | From GL analysis. Base figure for estimates. |
| My forecast monthly | My best estimate for the coming period. |
| Forecasting basis | How I arrived at the number (new hires, signed contract, expected sales, management input, etc.). |
| Expense frequency | Daily / weekly / monthly / quarterly / annual / one-off. |
| Payment timing | When cash actually leaves (e.g. "1st of month", "last working day"). |
| Notes & assumptions | Any change from historical base and the reason. |
| Data source | GL / contract / payroll / tax calendar / invoice |
| Status | Draft / validated / final |
What it looks like in practice:
Master register row:
- Expense: marketing & advertising
- Historical monthly average: 5,800
- Base forecast monthly: 6,500
- Basis: +12% due to increased sales target + new contract with agency.
- Expense frequency: mostly monthly, with occasional spikes.
- Payment timing: weekly for Google Ads, monthly for agency.
Data sources by category
Each expense category has a natural hierarchy of data sources — I use the most reliable one available for each item.
Adjusting from the historical base
The historical average is the starting point, not the final answer. Adjustments are applied only where there is specific evidence for a change.
Factors that may impact the expense forecast
After placing base amounts from the master expense register into the weekly draft, I review the following factors and adjust where necessary:
- Historical seasonality — Compare with the same week or month in previous year(s). Significant differences often have logical explanations (holidays, annual events, maintenance cycles).
- Business volume trends — Higher or lower sales, production volume, or customer numbers usually drive variable expenses (marketing, supplies, commissions, utilities).
- Headcount changes — New hires, terminations, temporary staff, or overtime.
- Price changes — Supplier price increases, wage raises, rent escalations, or tariff changes for utilities.
- New contracts and commitments — Newly signed leases, software subscriptions, service agreements, or marketing campaigns.
- One-off or lumpy events — Annual insurance payments, audit fees, major repairs, tax settlements, bonuses, or legal costs.
- Economic and external factors — Inflation, energy price spikes, currency fluctuations (for imported services), or regulatory changes.
- Operational changes — Opening/closing branches, process improvements, remote work shifts, or efficiency initiatives.
- Management decisions — Approved budgets, cost-cutting programs, expansion plans, or discretionary spending.
- Calendar effects — Number of working days, public holidays, or quarter-end pressures.
Finding lumpy and hidden items
Lumpy and hidden expenses are the most common source of forecast error. They do not appear in the weekly or monthly rhythm, so they are easy to overlook when building the register from monthly averages. When they hit, the weekly balance drops sharply — and the model looks wrong, even though the error was in preparation, not in the model itself.
The most common items missed
- Annual insurance premiums.
- Audit, legal, and accounting fees — especially year-end amounts.
- Licence renewals and regulatory permits.
- Property taxes and municipal levies.
- Bonus payments and sales commissions on annual targets.
- Major repairs and planned maintenance.
- VAT and tax settlements outside the regular instalment schedule.
- Annual software licences and subscription renewals.
- Recruitment fees.
- Training events and conferences.
- Legal settlements or provisions.
How to find them systematically
GL filter: filter all transactions to those appearing only one to four times in the 24-month export. Sort by amount descending. Review the top items individually — most of the risk sits here.
Contract review: search signed contracts for the words "annual", "quarterly", "renewal", and "milestone". Any payment triggered by these clauses goes into the register at its contracted amount and date.
Board and management minutes: look for approved capital commitments, legal provisions, or bonus arrangements not yet invoiced.
Bank statements — December, March, April: year-end and tax-season payments cluster in these months. Cross-reference against the GL to confirm they are captured.
Cross-checking total of expense categories
After creating expense forecasts, I sum all forecasted expenses for a comparable period — for example, the next three months — and run a check.
I compare the total to the same period's actual expenses for last year. Last year's expenses are adjusted to remove non-cash items — primarily depreciation and amortisation, which appear in the P&L but do not produce a cash outflow. Capital expenditure works the other way: it does not appear in operating expenses on the P&L, but it does produce a cash outflow, so it must be included in the cash forecast total.
A gap of less than 10% on either check is generally acceptable. A gap larger than 10% means something material is missing or misclassified. The response is to investigate the specific items causing the gap — not to add a general buffer across all lines.
Validation with management
The forecast of expenses at this stage is data-driven but incomplete. Management holds information that does not appear in the GL: planned spending decisions, informal commitments, upcoming changes to contracts or headcount, and anything agreed verbally but not yet signed.
Presenting a draft, not a blank page
The approach is to prepare a clean, summarized version of the expense forecast and present it to key people asking them to correct it. Open questions produce unreliable answers. Presenting a specific draft and asking for corrections produces reliable ones. People are much better at spotting errors than at generating numbers from memory.
Short conversations — 15 to 30 minutes — work well for each area:
- Finance or the controller — for the full register and reconciliation.
- HR — for payroll, headcount changes, and benefits.
- Operations or department heads — for their category spend.
- CEO or managing director — for big-picture changes and one-off items.
Questions that produce useful answers
- "Is anything important missing from this list?"
- "Are any of these amounts or frequencies wrong?"
- "Did we pay anything unusual last year that should repeat this year?"
- "Are there new suppliers, contracts, or commitments signed but not yet invoiced?"
- "Are there planned price increases, bonuses, or one-time payments not in these numbers?"
Handling unrealistic input
If management suggests that costs will be significantly lower than history shows, the response is to ask which specific items will be lower and why — then keep the original data-driven figures visible alongside any adjustments. Where there is genuine disagreement between the historical base and management expectations, the better practice is to maintain two versions: a data-driven base case and a management-adjusted case. Both carry the same structure; only the amounts differ. Every change from the data-driven base is documented with its source and the name of the person who confirmed it.
Converting to a weekly payment schedule
The expense forecast holds expense amounts and frequencies. The 13-week model needs cash amounts at specific week numbers. This conversion is the final step before the expense data enters the main model.
Determine when cash actually moves
For each line in the expense forecast, the question is not when the expense is incurred but when the cash leaves the bank account. These are often different. An invoice dated on the 1st with net-30 terms produces a cash outflow on or around the 1st of the following month, not the 1st of this month. Many businesses also pay on fixed days regardless of invoice terms — the 5th, the 15th, the 25th, the last working day. Historical payment behavior from the GL or bank statement is more reliable than stated terms.
Priority order for determining cash timing:
- Actual historical payment dates from GL or bank statements — when does the business actually pay this item?
- Contracted payment terms from the relevant agreement.
- Direct debit or standing order schedules from bank statements.
- Official calendars for payroll, VAT, and corporate tax payment dates.
Building the weekly payment schedule
The completed payment calendar is the input to the main 13-week cash flow model.
The weekly payment schedule is a worksheet with expense categories as row labels on the left, and weeks 1 through 13 as columns across the top. Each column header shows the week number and the week start date beneath it. Where a payment falls in that week, the amount goes in the corresponding cell. Each row totals across all 13 weeks. Each column totals down to show total cash outflow for that week.
A monthly expense goes into whichever week contains its actual payment date. Annual or quarterly items land in the single week when the payment falls. Expenses which move with sales volume — delivery costs, sales commissions, raw materials — cannot be entered as a fixed amount. Their forecasted amount for each week is calculated by applying a rate or percentage to the sales forecast for that same week.
Weeks where total outflows are significantly above the 13-week average deserve a note: for example, "Week 4 — high outflow: payroll + quarterly VAT + rent all due." These are the weeks where the inflow side of the model must be checked most carefully.