Home/Blog/Why Your Cash Forecast Is Off by 20%: The Anatomy of a Bad AR Model
Strategy

Why Your Cash Forecast Is Off by 20%: The Anatomy of a Bad AR Model

The cash forecast is where AR performance meets CFO credibility. When it is off by 20%, the CFO stops trusting the number, starts building a shadow model, and the entire monthly finance review turns into a debate about whose model is right.

Almost every cash forecast in a manual AR shop is off by 15 to 25%. Not because the finance team is bad at forecasting, but because the model is built on the wrong inputs. Here is exactly where the miss comes from and how to fix each source.

Where does the 20% miss actually come from?

Most cash forecasts miss for three compounding reasons. Each contributes, and together they explain almost the entire error.

Source of miss Typical contribution Fixable?
Aging-based collection probability 8 to 12% Yes, with account-level scoring
Promise-to-pay slippage 5 to 8% Yes, with kept-rate adjustment
Disputes mixed with clean AR 3 to 6% Yes, with a separate dispute line
Timing noise (weekends, holidays) 1 to 2% Yes, with a calendar overlay

Fix all four and you drop from 20% variance to under 5%. Fix only one and you still miss by 12 or 15%. Compounding matters.

Why does aging fail as a forecasting basis?

The most common forecast model works like this: apply historical collection rates to each aging bucket, roll up by week, and call it a forecast. It looks reasonable on paper. It fails in practice for a specific reason.

Aging buckets aggregate customers whose behavior is not comparable.

  • Two customers, both 45 days past due. Customer A always pays at day 60. Customer B has a serious dispute and will pay 30% of the invoice at day 120. In the aging report, they are the same row.
  • Historical bucket collection rates. If 70% of your 31-to-60 bucket historically collects within 30 days, and your current mix in that bucket is heavier on customer-B-like accounts, applying 70% overstates the forecast.
  • Mix shifts. Aging bucket mix moves quietly. A single large customer sliding from reliable to erratic can shift the composition of the 61-to-90 bucket meaningfully, without changing its total dollar value.

The fix is to score each invoice on the customer's own historical payment behavior, then roll up to the week. The bucket still exists for reporting, but it is not the forecasting basis.

How do you score an individual invoice?

The math is simpler than it sounds.

For each open invoice, compute a probability distribution of when it will land, based on the customer's own last 12 to 24 months of payment behavior.

  • Base rate. The account's average days past due, weighted by invoice size.
  • Distribution. Not just the mean but the shape. A customer with mean of 15 days past due and low variance is different from one with the same mean and high variance.
  • Recency weighting. Recent behavior counts more than old behavior. A customer whose last 3 invoices came in 20 days later than their historical mean is drifting.
  • Invoice-specific adjustments. Larger invoices tend to age slightly longer than small ones from the same customer. Adjustments this fine are optional in the first version of the model.

Multiply the probability distribution by the invoice amount and roll into weekly buckets. That is your forecast for that invoice.

Why do promises to pay slip so often?

Promises to pay slip because they are made under pressure to end a phone call, not to commit to a corporate payment cycle.

Three patterns account for most slippage.

  • AP-clerk optimism. The AP clerk on the call knows the invoice is in the queue and estimates when it will process. They do not always know that a controller sign-off or a treasury cycle sits between the estimate and the actual send.
  • Wire cutoff timing. Promises made for "end of week" often slide to Monday because the wire cutoff was earlier than expected. This is a timing miss, not a bad-faith one.
  • Approval friction. Larger invoices need more signatures. A promise to pay on Friday from someone who cannot actually approve $50K becomes a Tuesday payment.

The fix is not to stop taking promises. It is to discount them by the account's actual kept rate. If a customer historically hits 65% of their promised dates within 5 days, treat their next promise as a 65% probability at the promised date and a 100% probability by day 10 after.

How much do disputed dollars distort the forecast?

Enough to matter. Disputed dollars sit in the aging report at face value, but they almost never resolve at face value.

  • Full-invoice disputes. Rare, but when they happen, the resolution is usually a credit memo or a write-off, not a payment at face value.
  • Line-item disputes. More common. The customer disputes 15% of the invoice, resolves it, and pays 85% at some later date. The forecast should reflect that.
  • Stale disputes. Disputes that sit unresolved for 60+ days are strong candidates for eventual write-off. Their forecast probability drops rapidly with age.

Move all disputed dollars to a parallel line: expected resolution amount, expected resolution date, and resolution status. Total AR still reports at face value, but the forecast uses expected values. This alone typically improves forecast accuracy by 3 to 6 percentage points.

What does the working forecast look like?

Six columns per invoice, rolled up to weekly buckets.

  1. Invoice amount. Face value.
  2. Customer segment. Reliable, predictably slow, erratic, chronic late.
  3. Expected days to pay. From the account's model, adjusted for recent behavior.
  4. Promise-to-pay adjustment. If a promise exists, apply the account's kept rate.
  5. Dispute status. If disputed, use expected resolution amount instead of face value.
  6. Expected week of collection. Bucket into calendar weeks.

Roll up by week. Compare to actual weekly collections. Track variance. When variance exceeds 5% in a week, attribute it: which customer, which mechanism, which bucket of the model failed.

That attribution is what makes the model improve over time. A forecast that just misses without diagnosis stays broken.

How do you know the model is improving?

Three lagging metrics.

  • Weekly forecast variance. Rolling 8-week mean, should trend toward 5% or below.
  • Bias. Are you consistently over-forecasting or under-forecasting? Consistent bias points to a wrong assumption. Random noise is harder to fix but less concerning.
  • Big-miss attribution. When you miss by more than 10% in a week, can you point to specific accounts and specific mechanisms? If yes, the model is diagnostic. If no, the model is opaque.

A forecast that improves is more valuable than one that is briefly accurate. The mechanism of the miss teaches the AR team where the process is weakest.

The mistake to avoid

The mistake is treating cash forecasting as a spreadsheet problem, when it is a data problem. No amount of formula sophistication rescues a model whose inputs are stale, whose promises are not logged, and whose disputes are mixed with clean AR. Fix the inputs first: per-account payment behavior scores, dated promises tied to invoices, and separated dispute state. The math is straightforward once the data is right. And when the CFO stops building a shadow model, you have won.

cash forecastar modelcollectionsworking capital

Frequently asked questions

Why is aging a bad basis for forecasting?

Aging describes the current state of receivables, but it does not distinguish between an invoice that is 45 days late because the customer always pays late and one that is 45 days late because they will never pay. Both look identical in the aging report. A forecast built on aging assumes historical bucket-level collection rates apply uniformly, which they do not.

How much do promises to pay actually slip?

In most mid-market AR shops, 25 to 40% of dated promises slip past the promised date by more than 5 days. If your forecast assumes a 100% kept rate on promises, that alone accounts for a significant portion of the 20% miss. Applying the account's actual historical kept rate to each promise is one of the cleanest single fixes.

Should disputed invoices be excluded from the forecast entirely?

Excluded from the primary forecast, tracked in a parallel disputed-receivables line. Disputed dollars will eventually resolve into a lower amount, a credit memo, or a write-off. Including them at face value in the near-term forecast inflates it. Separating them out lets the CFO see both what is expected and what is at risk.

What is the right forecast accuracy target?

Within 5% variance on a weekly basis, within 3% on a monthly basis. Above 10% weekly means the model is broken. Between 5 and 10% is common in mid-market and usually points to promise-tracking gaps. Below 3% weekly is rare and typically requires purpose-built AR tooling, not a spreadsheet.

Can you build this forecast in a spreadsheet?

For a small book, yes. Past about 100 open invoices, the maintenance cost of keeping per-account payment scores, promise slippage rates, and dispute states current in a spreadsheet exceeds the value. The math is not the hard part. Keeping the inputs fresh at scale is.

Turn your AR into a cash forecast

Melenyn syncs open invoices from NetSuite, QuickBooks, or Xero, runs adaptive dunning sequences, and tells you which week the money actually lands.

Request early access