Case study Wholesale & distribution Berlin · EUR · VAT 19 %
How a drinks wholesaler used day-by-day cash modelling to keep a Net 60 contract — and what the model said about five different ways to pay for it.
Every distributor knows this moment. A tender comes in that is bigger than anything you currently ship. The margin is good. The customer is solid. And then you read the terms: payment sixty days after delivery.
You will buy the goods in October. You will pay your supplier in November. The money arrives in December. Four times over.
The profit-and-loss account says yes. The question is whether the bank account agrees, and on which specific days it does not. That is not a question a spreadsheet answers well, because the answer is not a monthly total — it is a Friday.
What follows is a worked example on a real dataset, run in Golden Inventory. Every figure came out of the app; nothing is illustrative.
MetroFresh Distribution, Berlin. A B2B drinks and dry-goods wholesaler running two locations and four staff, serving five standing customers on weekly and monthly routes. It charges 19 % VAT on a trade price list and files a monthly return (UStVA), paid on the 10th of the month after.
| Cash in the bank | €28,550 |
| Agreed overdraft (Kontokorrent) | €15,000 |
| Standing costs, eleven rows | €11,300 / month |
| Wage bill | €14,200 / month |
| Revenue, next 170 days, net of VAT | €421,969 |
| Projected profit | €25,352 |
| VAT paid to the tax office in the window | €32,360 |
| Lowest projected cash | +€4,476 |
| Days below the agreed limit | 0 |
Comfortable is the wrong word. Solvent, and thin. The lowest point falls on 28 September — payroll day.
Hotel Central Group puts its conference-catering supply out to tender. MetroFresh wins it. Four monthly drops — 15 October, 15 November, 15 December, 15 January — of €50,502 each at volume prices, €60,097 with VAT. €202,008 of new revenue. The condition of the contract is Net 60.
Accepting it is not only a sales decision. To ship a 900-case water drop on top of the weekly routes, the warehouse has to carry more stock, so the reorder levels on twelve lines go up. That stock has to be bought, and the two suppliers who carry those lines are on Net 30 and Net 45.
Buy in October. Pay the supplier in November. Get paid in December. Four times, overlapping.
And the VAT on each drop falls due on the 10th of the month after it ships — a month before the customer pays it.
One screen, three fields: where to start, how far to look, what is in the bank that morning. Everything else the run takes from records that already exist — the orders, the vendors' terms, the reorder rules, the standing payments, the VAT settings.
The run plays 170 days forward in under a second. Here is the answer.
Run — tender accepted, nothing else done
Closing cash is higher than opening cash. Profit is €99,136 — nearly four times the pre-tender figure. Every one of 96 orders ships on time.
And the line goes through the floor twice.
A month has a closing balance. A business has Fridays.
Sort the day log by balance and the worst days come to the top, with the documents that caused them.
AUTO-SN-NUTS12, €4,070 with VAT — next to an ordinary €1,100 marketing retainer, three and a half weeks before the first contract payment arrives on 14 December.October's VAT return, €6,071, left the account ten days before that low. The December gap has a tax date in it too: November's VAT, €8,265, is due on 10 December, in the middle of the second trough.
Before spending money on a solution, it is worth pricing the free one. “Just pay late.” The app has a switch for exactly this — Do not pay if there is no money — which holds each payment until the balance can cover it.
Run A — hold what the bank cannot cover
The hole closes. The profit and loss account does not move by a cent, because the cost of November is a cost of November whether or not the bank moved. That invariant is what makes the two runs comparable at all.
The day log names the price.
A stopgap, not a plan. Now the real levers.
Each row below is the same company, the same contract, the same 170 days, with exactly one thing changed.
| Change | Lowest cash | Days below limit | Worst shortfall | Profit |
|---|---|---|---|---|
| Accept, change nothing | −29,929 | 12 | 14,929 | 99,136 |
| A — Hold payments the bank cannot cover | −14,976 | 0 | — | 99,136 |
| B — Rhein Beverage Bottlers to Net 60 | +4,476 | 0 | — | 99,136 |
| B — Rhein to Net 45 only | −27,322 | 6 | 12,322 | 99,136 |
| C — Seven “non-essential” lines bought to order | −33,721 | 20 | 18,721 | 87,529 |
| D — Three outside services paused | −26,739 | 9 | 11,739 | 108,706 |
| E — Four standing costs cut | −29,079 | 12 | 14,079 | 101,656 |
One vendor. Rhein Beverage Bottlers carries the beverage lines, which is most of the contract by volume. Moving them from Net 30 to Net 60 solves the entire problem on its own — the trough returns to +€4,476, exactly where it was before the tender, and closing cash improves by €34,977.
Nothing was borrowed. Nothing was cut. The payment terms simply match the terms MetroFresh itself was forced to accept.
Note the row under it, though. Rhein at Net 45 — a much more likely outcome of a real negotiation — closes the November gap and leaves December's: six days and a €12,322 hole, with the VAT payment inside it. The lever is sensitive to exactly where it lands, which is worth knowing before the meeting rather than after it.
Here is the finding that justifies running the model at all.
Deferring stock on seven lines the contract does not touch — pasta, rice, beans, chocolate, soap, flour, crisps — looks like free working capital. Stop filling the shelf with them; buy them only when an order needs them.
It makes everything worse. Twenty days below the limit instead of twelve. An €18,721 shortfall instead of €14,929. And €11,607 of profit gone.
The day log explains it. 61 of the 96 deliveries wait for stock, and the run records 416 daily “still waiting” entries against them, concentrated on five documents and led by the weekly routes. Four never ship before the window ends. Four deferred lines do the damage — crisps and flour sit on the weekly routes, beans and soap on the monthly ones — and an order that is short one line does not ship at all.
Stop stocking the crisps, and you stop delivering to the kiosk. Revenue falls €30,409, profit €11,607, and the cash position gets worse, not better. No spreadsheet catches this, because a spreadsheet does not know which items are on which order.
Pausing the IT retainer, the marketing agency and the depot cleaning from November to January stops €9,570 of payments and adds all of it to both cash and profit. Trimming four standing costs — a software tier, the bookkeeper, fuel, the insurance excess — adds another €2,520.
One detail worth having: the app does not pause “the 15th”. It pauses the occurrence, on the working day the schedule actually falls — the November IT retainer is the 16th, because the 15th is a Sunday. Three of the nine occurrences in this season shift like that. Hard-code the dates and you under-count by €3,190.
Both levers help. Neither closes a €14,929 hole on its own, because the hole is a timing problem and these are run-rate savings. Together they take the shortfall to €10,889 — useful, and not the answer.
A working-capital line is a question, not a record, so it goes on the what-if lane. It reaches a projection only when the run is explicitly asked for it.
How much? On its own, drawn on 18 November, €15,000 is just enough. It brings the trough to −€14,929 — €71 inside the agreed facility — and clears both gaps. €20,000 leaves €5,071 of room. €40,000 puts the trough back to +€4,476, and costs the most.
How late can it be signed? This is the one worth knowing.
| Drawn | Days below limit | Repaid in this window |
|---|---|---|
| 1 October | 1 | fails by €591 |
| 18 November | 0 | €1,987.50 |
| 19 November | 1 | fails by €5,090 |
| 1 December | 6 | fails by €14,929 |
18 November is the safe day. Draw on the 19th and a €5,090 hole opens — six beverage orders are paid on the 18th, one day before the money arrives. Draw early and it fails too: signed on 1 October, the first €662.50 repayment leaves on 1 November, and the trough misses the limit by €591.
Not one lever. Four, in the order of what they cost.
| Step | Lowest cash | Days below | Shortfall | Closing cash |
|---|---|---|---|---|
| Accept, change nothing | −29,929 | 12 | 14,929 | 67,880 |
| 1. Rhein negotiated to Net 45 | −27,322 | 6 | 12,322 | 102,857 |
| 2. + three outside services paused Nov–Jan | −23,492 | 6 | 8,492 | 112,427 |
| 3. + four standing costs cut | −22,112 | 6 | 7,112 | 114,947 |
| 4. + €15,000 drawn 16 November | −7,112 | 0 | — | 127,960 |
Run — the plan
| Decline the tender | Accept, no plan | Accept, with the plan | |
|---|---|---|---|
| Revenue, net of VAT | €421,969 | €623,977 | €623,977 |
| Profit | €25,352 | €99,136 | €111,226 |
| VAT paid in the window | €32,360 | €36,760 | €36,760 |
| Closing cash | €70,308 | €67,880 | €127,960 |
| Days past the overdraft limit | 0 | 12 | 0 |
Accepting without a plan ends the window with less cash than declining.
Against declining the tender: +€85,874 of profit. Against accepting it and improvising: +€12,090 of profit and +€60,080 of cash, and twelve fewer days of explaining yourself to a bank.
The borrowing needed was €15,000, not the €40,000 an anxious owner would have asked for — and the difference between signing on 18 November and signing on 19 November was the difference between a plan and a shortfall.
Any forecast that does not state its limits is marketing, so:
MetroFresh's contract was never a bad deal. It was a good deal with a twelve-day hole in it, and the hole was invisible at monthly resolution, invisible in the P&L, and invisible in the bank balance until the week it arrived.
Finding it took under a second. Testing five ways to fix it took an afternoon — including the one that would have made everything worse.