13-Week Cash Flow Forecasting — Case Study

Building an Engine That Updates Itself

The customer data from Parts 1 and 2 had to become a real 13-week forecast. The first version needed every number typed in by hand, every single week. That was slow, and it caused mistakes. Here is what I built instead: change one date, and the whole forecast updates. Add one row of new data, and it appears in the correct week with no typing required.

By Andris Škutāns Incoming Cash Flow Forecasting Part 3 of 5

Part 1 and Part 2 covered the customer data — country, industry, payment terms, and the revenue findings. This part covers a different problem: how to turn that data into an actual 13-week forecast, without typing every number in by hand every week.

Where this went wrong the first time

The first version of this forecast required a lot of manual work every week. I started with an accounts receivable report showing only the customer name and total outstanding balance. Then I examined the individual invoices that made up each balance. For every customer, I created a table listing each invoice amount together with its expected payment date. Finally, I manually entered each amount into the correct week of the cash flow forecast.

This process was slow and produced a dataset that was difficult to read, verify, and maintain. Every weekly update required reviewing the same information again instead of simply adding new data.

It also introduced unnecessary risk. A mistyped date, a misplaced decimal point, or one skipped invoice could make an entire week's forecast incorrect. These errors often remained unnoticed until the forecast no longer matched reality.

Here is an example of what the source data actually looked like for one customer:

Before: one packed cellAfter: one row per payment
"29,600 (16 Jul 2026), 9,400 (6 Sep 2026), 35,300 (30 Oct 2026), 1,200 (12 Nov 2026)" 4 separate rows — one customer, one amount, one expected payment date per row

Extracting four amounts and four dates from a single text field every week is exactly the kind of repetitive task that leads to mistakes. It also made maintaining the forecast unnecessarily time-consuming. Advancing the forecast by one week meant reviewing and re-entering much of the existing data instead of updating only the new information.

What I built instead

The rebuild happened in stages. Each one fixed a specific problem with the version before it.

Here is a closer look at the real sheets — the same four sheets used to build this forecast, with real numbers pulled directly from the file.

How the Forecast Is Built

The forecast is built in four steps. Each sheet prepares the data for the next one. All numbers below are real, taken directly from the actual file, with cents removed for easier reading.

Step 1 — Payment Schedule

Every payment I know about in advance gets one row: a customer, an amount, and the date I expect the money. This sheet holds nothing else.

CustomerTypeAmountExpected date
Customer 11Existing A/R€6006 Jun 2026
Customer 34Open Orders€37,5005 Jul 2026
Customer 38Open Orders€40,7005 Jul 2026

If a payment date changes, only this one row needs updating. Nothing else in the forecast needs to be touched by hand.

Step 2 — Historical Transactions

This sheet holds real past payments — the ones that did not come from a known invoice or a known open order. Each row is one payment, tagged as either "Recurring" (a normal, small, repeat-style payment) or "Large" (a big, one-time payment).

DateAmountType
3 Jun 2025€8,700Recurring
4 Jun 2025€21,917Recurring
17 Jun 2025109,100Large

This list is where the "Recurring" and "Large" split, covered later in this series, actually comes from. Every row here is a real, individual payment — not a summary.

Step 3 — Historical Weekly

This sheet adds up every row from Step 2, one week at a time. It answers one question: in a typical past week, how much of this kind of cash actually came in?

Week endingRecurring totalLarge totalCombined total
8 Jun 2025€90,444€0€90,444
15 Jun 2025€5,979€0€5,979
22 Jun 2025€2,725€109,100€111,825

Only the Recurring Total column gets averaged to make the trailing average in Step 4. The Large Total column, like the €109,100 above, is left out of that average completely. There are too few large, one-time payments in a year for an average of them to be useful. Instead, future large deals get tracked a different way — by asking sales managers directly what deals they expect. That becomes the Large Deal Pipeline number, covered later in this series.

Step 4 — 13-Week Forecast

This is the sheet a business owner actually reads. Every number here comes from one of the three sheets above, pulled in automatically by formulas. Nothing on this sheet gets typed in by hand.

Cash-in categoryWeek ending 7 JunWeek ending 14 JunWeek ending 21 JunWeek ending 28 JunWeek ending 5 Jul
Existing A/R€600€0€0€0€0
Open Orders€0€0€0€0€37,500
Recurring (trailing average)€27,141€27,141€27,141€27,141€27,141
Large Deal Pipeline€0€0€0€0€0
Total incoming€27,741€27,141€27,141€27,141€64,641

Each week, only new information gets added — a new row in Payment Schedule, a new week of actuals in Historical Transactions. Every number already in the forecast stays correct on its own.

"Change one date. The whole 13-week forecast updates. No rebuilding, no re-typing, no risk of last week's numbers staying in this week's forecast by mistake."
Download the actual workbook Download the actual workbook — free, no email required
Why this needed a separate record, not just a longer forecast

Keeping the 13-week forecast at exactly 13 weeks, always starting from today, means it stays fast to read and fast to update. Growing it to hold every past week too would make it slower to open and harder to read, for no real benefit. Past weeks get recorded somewhere else instead: a separate sheet called Actuals & History. That sheet holds every past forecast next to what actually happened. The 13-week forecast sheet never needs to hold that information itself.

Why this matters to a client

The real value here is not the spreadsheet mechanics by themselves. The real value is what they make possible. A forecast that takes ten minutes to update each week actually gets kept current. A forecast that takes half a day is far more likely to be skipped. After being skipped a few times, people stop using it. By the time a real cash problem happens, nobody trusts the forecast anymore.

This part of the work is not something a business owner sees directly. But it is the difference between a forecast that keeps getting used, and a report that was accurate once and became wrong within a month.

This is Part 3 of a 5-part case study. Part 4 — forecasting the cash that is not from customers — publishes soon.


Frequently asked questions
Does this need special software, or does it work in regular Excel?+
Regular Excel. Nothing here needs a plugin or a paid add-on. The formulas doing the work — matching a date to a week, adding up a group of payments — are standard Excel formulas. The same approach works in Google Sheets too, with small changes to a few formula names.
What if a payment date or amount gets typed into the table wrong?+
That row shows in the wrong week, or shows the wrong amount — same risk as before, just now limited to one row instead of the whole forecast. The fix is to check the payment table itself against the source data occasionally, the same way any typed number gets checked. What this method removes is a different risk: typing the same number wrong a second time when copying it into the forecast grid.
Why not just use the cash flow forecast feature built into accounting software?+
Built-in forecast features usually work from stated payment terms — what the invoice says, not what a specific customer actually does. Part 1 and Part 2 both showed cases where that difference matters: a customer's real reliability score, or a customer paying early or late compared to the invoice date. A spreadsheet built around this specific business's real payment behavior can account for that. Most built-in tools cannot, because they are built to work the same way for every business using the software.

Custom Excel vs Dedicated 13-Week Cash Flow Forecasting Software

Area Custom Excel Dedicated 13-Week Cash Flow Software
Initial cost Very low Subscription or license cost
Implementation Immediate Weeks or months
Flexibility Excellent Limited to vendor design
Custom calculations Unlimited Often limited
Data integration Mostly manual unless custom-built Automatic ERP and bank integration
Multiple users Difficult Designed for collaboration
Audit trail Weak unless carefully designed Usually strong
Security Depends on workbook protection Enterprise security and permissions
Scenario analysis Excellent if built well Usually built in
Maintenance Your responsibility Vendor responsibility
Reporting Whatever you build Standard dashboards
Scalability Eventually becomes difficult Handles larger organizations
What happens if a week gets missed and the forecast does not get updated on time?+
Nothing breaks. The date cell just needs to move forward by more than 7 days the next time it gets updated — for example, 14 days instead of 7, if one weekly update got missed. Every formula still works the same way, because they are all based on that one date, not on a fixed weekly habit.