13-Week Cash Flow Forecasting — Case Study

Comparing the Forecast Against What Actually Happened

The first real week of this forecast missed by roughly 16 times! not adjusting the numbers, but tracking each transaction until the true cause was identified.

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

The first real test

A forecast is not only tested by how it looks. It can look solid — clean formulas, reasonable-sounding numbers, no typos — but that doesn't tell you if it's actually good. A forecast is tested by comparing it to what actually happened.

Week endingForecastActualGap
7 Jun 2026€600€754,200about 1,257 times
14 Jun 2026€0€45,400no forecast to compare
21 Jun 2026€0€19,100no forecast to compare
28 Jun 2026€0€89,400no forecast to compare
5 Jul 2026€78,200€333,600about 4.3 times
Total€78,800€1,241,600about 16 times

A gap this size means small mistakes are not the cause. Wrong dates or slightly wrong amounts explain a gap of maybe 20 to 30 percent, not a gap of 16 times. A gap this large means something much bigger: most of the cash that came in was never in the source data used to build the forecast, in any form.

Finding the real cause

The next step was not guessing how to fix the situation. It was to go through every single transaction that made up that week's actual cash, one at a time, and sort each one into a category based on what actually happened.

1

Known item, paid early or late

Something already in the forecast, just on a different date than expected. Normal timing noise, not a real error.

2

New order, no lead time

A sale that did not exist yet when the forecast was built. The order and the payment both happened within days of each other (or even in the same day). Nobody could have forecast this in advance.

3

Untraceable receipt

Money arrived with no matching order or invoice anywhere. Worth investigating directly, since it could point to a documentation problem.

4

Forecasted item, did not arrive

A payment I already expected simply arrived later than planned. Not a mistake — this happens normally with payments I already knew about.

Once every transaction from that week was sorted this way, one category was clearly larger than the rest:

CategoryShare of that week's actual cash
New order, no lead time89%
Known item, paid early11%
Untraceable receiptunder 1%

One category explained almost everything

The week ending 7 Jun 2026 was the sharpest miss in the table above - about €754,000 actual against a forecast of only €600. Eleven separate payments made up that week's actual total. Only two of them matched orders already known before the forecast was built, arriving a little earlier than expected. The other nine — including the largest single payment of the eleven, €478,181 — were new. None of the nine existed in any form when the forecast was made.

The pattern behind those nine was the same each time: a customer sends an email, a sales manager replies, an order gets created, an invoice gets sent, the customer pays. All of this can happen within days. None of it existed yet when the forecast was built. The conversation, the order, and the payment all happened afterward, within days. There was nothing to see in advance, because nothing had happened yet.

"Not being able to explain a payment right away does not mean something is wrong. It means more checking is needed first."

The largest of the nine payments required more investigation. The payment reference included a proforma invoice number. This situation is different from a payment that contains no useful reference at all. After further checking, I found that the related sales order had been created four days before the payment was received. However, both the sales order and the payment were created after the cash flow forecast had already been prepared. They did not exist when the forecast was built, so there was no information available that could have been used to predict this receipt.

Once I confirmed this, the picture for the whole week became clear. Orders that did not exist yet when the forecast was built explained close to 90% of that week's gap between forecast and actual. Not one unusual payment — nine ordinary ones, each following the same fast pattern: nothing existed when the forecast was made, then within days, an order was created and paid.

Getting earlier visibility, and where that stops working

It is likely that the sales managers already knew about some of these nine orders while they were still being negotiated with customers, before either a sales order or a payment existed in the system. That information never reached the person preparing the cash flow forecast because there was no quick or reliable way to obtain it from the sales team.

This was not the result of forgetting to ask a single question. It was a process problem. Information about future sales was either passed on too late or not shared at all, preventing it from being incorporated into the forecast.

For larger, slower-moving opportunities, the solution is straightforward. Sales can provide early visibility through a Large Deal Pipeline that tracks each significant opportunity by customer, expected value, expected timing, and confidence level. Because these opportunities develop over weeks, they can usually be incorporated into the forecast before cash is received.

Most of these nine payments were different. The time between the first customer contact, the order, and the payment was often only a few days. A weekly discussion with the sales team would not necessarily capture them because the entire sales cycle could begin and end between two forecasting updates.

This is an inherent limitation of relying on sales information alone. It improves visibility into larger opportunities but cannot reliably capture every fast-moving transaction.

The practical solution is to combine both approaches. Use information from the sales team wherever advance notice is available, and use historical patterns to estimate the cash generated by fast-moving deals that cannot realistically be identified beforehand. Historical analysis does not replace communication with sales; it fills the forecasting gap that communication alone cannot eliminate.

The fix that came out of this

89% of a week's cash coming from orders with no advance warning is not a data problem to be solved by looking harder. It is a fact about how this business gets a large part of its orders — placed and paid within days, with nothing to see in advance. A forecast built only from known invoices and open orders will always show close to zero for this part of the business, every single week, and be wrong every single week in the same direction.

The fix was not to try harder to predict which specific new order would arrive in which specific week. That is not possible — the order does not exist yet at the time the forecast is built. The fix was to stop treating this part of the business as zero, and instead measure how much of this kind of cash usually shows up in a week, based on many past weeks. This is the trailing average method covered in Part 3, and it is the direct result of this investigation, not a separate idea added later.

Large, one-off deals get a different fix again — tracked by name, with an expected amount, a date, and a confidence level, sourced directly from conversations with sales, rather than guessed from history that does not have enough events to average.

Why this matters to a client

Almost no forecast is accurate from the very first week — especially for a business where a large part of the cash comes from new orders that did not exist yet when the forecast was built. The first week here was a real miss, not a small one. What happened next is what actually matters: instead of leaving that miss unexplained, or just adding a bigger safety margin without understanding why, the gap got traced transaction by transaction. That work found the real cause and led to a real fix — the statistical baseline covered in Part 3. The forecast in use today is more accurate because of that specific investigation.

A forecast that gets checked every week, and corrected with a clear reason whenever it is wrong, becomes more accurate over time. A forecast that never gets checked stays wrong, silently, for as long as nobody looks.

This closes the five-part case study. The workbook used throughout it — the same Payment Schedule, Historical Transactions, Historical Weekly, and 13-Week Forecast sheets shown in Part 3 — is available to download below. It is the real file, not a cleaned-up version, including the forecast that missed by 16 times before this investigation.

Download the example workbook (anonymized)
Frequently asked questions
When a payment cannot be explained right away, how do you know when to stop checking and just accept that it has no explanation?+
I check a specific list of places first: the order system, the invoice list, and the date the order started. Only treat a payment as unexplained after all of these have actually been checked. In the story above, one of these checks — the order start date — had not been done yet. That is why checking further found the real answer. The rule is simple: if there is still a specific place (fact) left to check, check it before deciding there is no explanation. I don't give up on a payment until I've actually checked every real place it could be explained — not until it just feels unexplainable.
If 89% of the miss came from one category, why not just forecast that category more accurately instead of using an average?+
Because "more accurately" is not available for this category, in the way it is for known orders. Each individual new order is genuinely unknown until it happens — there is no missing document to find, no better check to run. An average value from previous weeks does not pretend to know which order is coming. An average cannot predict which individual orders will arrive. But it can estimate the total amount because, over many weeks, the total value of new orders is usually much more stable than the individual orders themselves.
Does a 16 times miss in week one mean the whole forecast should have been thrown out and rebuilt from nothing?+
No — and this is the actual difference between a forecast that improves and one that gets abandoned. The known-order part of the forecast (existing A/R, open orders) was not the problem; it was reasonably close. Only one part of the model was structurally wrong: treating an entire real income channel as zero. Fixing that one part, rather than starting over, is what turned a 16 times miss into a model that keeps the parts that already worked.