In many Dutch MKB companies (MKB: Dutch small and medium-sized businesses), cash flow has a file name. Cashflow_definitief_v7.xlsx, on the laptop of the controller or of the owner. Every Monday morning the bank balance is typed over, a few open invoices are updated, and out rolls a forecast for the weeks ahead.
That is not sloppiness. It was a sensible choice at the moment it was made. The spreadsheet costs nothing, it is there immediately, and it follows exactly the thinking of whoever built it. No implementation project, no discussion with IT, no extra subscription.
The problem starts later. At doo.FINANCE we see the same pattern in growing MKB companies, including companies that have kept their accounting in Exact Online or Odoo for years: the spreadsheet is still sitting next to it. And that is exactly what makes it expensive — not in licence costs, but in retyping, in a balance that does not add up, and in decisions that come too late.
Why the spreadsheet always wins at the start
Anyone who says Excel is unsuitable for cash flow has misread the question. The spreadsheet wins at the start, and it wins on merit. For three reasons:
- It costs nothing extra. The licence is already there. Nobody has to sign off, no business case is needed, no new supplier joins.
- It is there immediately. A usable overview is ready in an afternoon. Every alternative asks for configuration first, and then for getting used to it.
- It fits the head of its maker exactly. That one customer who always pays two weeks late, the seasonal peak in the third quarter, the supplier who wants payment up front — none of that sits there as a parameter, but as a cell someone adjusts by hand.
A cash flow overview that actually gets used is worth more than a forecasting module nobody opens. That is exactly why this file still exists five years later.
And why it loses after that
A spreadsheet is not a system. It is a snapshot that someone keeps current by hand. As long as that someone is there, it works.
It dies the day its maker is away
Holiday, illness, a new job. The file still exists, but nobody dares touch it: formulas pointing at other tabs, hidden columns, numbers typed in by hand once and shifting along ever since. The colleague who takes it over starts a version of their own, out of caution.
A cash flow overview that is no longer updated is not an overview. It is an archive. And the dangerous part is that it still looks current.
Dutch cash flows fit badly into a manual overview
This is where the Dutch MKB differs materially. Three cash flows that are the norm here are exactly the ones a manually maintained file cannot follow.
Receipts through iDEAL arrive bundled. iDEAL accounts for around 70% of all e-commerce transactions in the Netherlands and processed more than 1.5 billion transactions in 2025 (Betaalvereniging Nederland). For a webshop or a service provider taking online payments that means: hundreds of separate orders, but one credit on the bank account — from the payment service provider, net of fees, on its own payout rhythm. Anyone who types their cash flow over from the bank statement sees one amount hiding hundreds of invoices. Lining those two up is manual work, and manual work is the first thing to go when it gets busy. How to reconcile those payouts properly is something we covered earlier in the right Mollie connector for Odoo.
On top of that, iDEAL is being folded into Wero: the brand name changes from the end of January 2026, and by the end of 2027 all iDEAL merchants will have been migrated (Betaalvereniging Nederland). That changes nothing about the principle — it does change the connections you maintain.
Amounts collected by direct debit are not final yet. With a SEPA-incasso Algemeen, the Dutch core direct debit, the payer can have the amount reversed up to 8 weeks after it was debited (ABN AMRO). The money is in your account, but it is not certainty yet. A SEPA-incasso Bedrijven, the business-to-business variant, cannot be reversed once it has been debited — so that reservation does not apply there. For a company with subscriptions or service contracts, that difference is the difference between having a buffer and not having one. A spreadsheet does not know the distinction, unless somebody builds a column for it by hand. Almost nobody does.
btw is not revenue. With a quarterly btw-aangifte — the return for btw, the Dutch VAT — both the return and the payment must be in by the last day of the month following the quarter: 31 January, 30 April, 31 July and 31 October (the Belastingdienst, the Dutch tax administration). That is a large, predictable outflow at four fixed moments a year. In many spreadsheets receipts are recorded including btw, while the payment itself sits as a loose line — or is missing altogether. The overview then looks roomier than it is for a whole quarter.
It grows faster than the business
A second bank account. A second entity. A supplier invoicing in dollars. A loan with a repayment schedule. Every expansion of the business is one more column in the spreadsheet and one more formula somebody has to drag down. The file grows with the complexity, but control over it does not. At some point nobody knows any more whether tab 7 is still in use.
What the spreadsheet really costs: three lines
The cost of running cash flow in Excel appears on no invoice. It is real, and it can be read off in three places.
1. Retyping
Every figure in the file already exists somewhere else: at the bank, in the accounts, in the invoicing system. Retyping adds no information — it moves information that already exists. That costs time, and it costs reliability: every retyping round is a place where a figure can drift.
We deliberately name no number of hours per week here. That differs per company, and a figure we cannot substantiate does not help you. What does hold for everyone: the work is there, it repeats every week, and it produces no new insight.
2. The gap between the balance in the file and the balance at the bank
Ask any MKB company for today's bank balance and for the balance in the cash flow file. They are rarely the same. Usually there is an explanation: a credit from the payment service provider that has not been broken down yet, a direct debit that was reversed, an invoice that was sent but never updated.
The gap itself is not the problem. The problem is that nobody knows where it comes from without spending half a day on it. As long as that is the case, neither number is really trusted. And a number that is not trusted is not used to base a decision on.
3. The decision that comes too late
This is the most expensive of the three, and the least visible. Buying stock, hiring someone, going ahead with an investment, asking a supplier for more time — all of those decisions hang on one question: how much room do I have eight weeks from now?
Anyone who only gets that answer after the file has been updated decides with a delay. In practice that means two things: too cautious when things are going well, and too late when they get tight. Neither appears on an invoice, and both cost money.
What steering from your ERP changes
The alternative is not "a better spreadsheet". The alternative is to take cash flow from the place where the underlying data already lives: your accounting records.
Reconciliation stops being retyping
Odoo imports bank statements in CAMT.053, the SEPA format for cash management, and also CSV, XLSX, OFX and QIF (Odoo documentation). With a bank connection, the bank journals synchronise every twelve hours by default. Transactions come in, are matched against open items, and whatever does not match automatically stays visible — precisely the lines that need attention.
The effect is not "faster bookkeeping". The effect is that the bank balance and the ledger balance are the same number, every day, without anyone retyping anything.
The forecast runs on real due dates
A forecast in a spreadsheet runs on assumptions somebody once filled in. In your accounting records it runs on due dates that are already there: sales invoices with their payment terms, purchase invoices with theirs, recurring contracts, salaries, the quarterly btw payment.
If a payment fails to arrive, that shifts in the forecast as soon as the due date passes — without anyone touching a cell. That is the real difference: the overview no longer ages between two updates. Taking this step in effect builds on building a budget in Odoo: the budget sets the direction, the cash flow forecast sets the pace.
One version of the number
Director, controller and accountant look at the same source. The conversation is then about what you are going to do, not about which file is right. That is also exactly why interim reporting in Odoo only gains value once the underlying records reconcile: reporting on figures assembled by hand only moves the problem.
How to switch without losing your grip
Dropping the spreadsheet does not have to be a big bang. Five steps that work in practice:
- Connect the bank first. As long as the bank statement is loaded by hand, every other improvement stays theoretical.
- Set the payment terms properly in your master data. A forecast on due dates is only as good as the terms recorded per customer and per supplier.
- Reconcile your payment service provider's payouts. Post them through a suspense account, so the bundle breaks back down into the invoices it is made of — including the fees withheld.
- Put btw, salaries and loan repayments in as fixed future items. These are the amounts most often missing from spreadsheets, and they are the largest.
- Run the spreadsheet alongside for one quarter. Compare both overviews weekly. As soon as they say the same thing, you can retire one — and that is the spreadsheet.
This order is not accidental. Each step makes the next one measurable, so you can see along the way whether it works instead of having to take it on trust afterwards.
Need advice?
Contact us and discover how we can help you.
For MKB companies that would rather not carry this internally, we do it as a fractional CFO: a fixed rhythm of reporting and cash flow steering, without you having to hire anyone. Regulations and tax deadlines change; always have your own situation reviewed before you steer on the figures.
Contact us for a free call →Frequently asked questions
Can I really steer my cash flow without Excel?
Yes, provided the source is right. Once the bank connection runs and payment terms are recorded per contact, the forecast comes out of the open items instead of out of typed-in assumptions. In practice Excel does stay around for ad-hoc analyses and scenarios — that is fine. The difference is that the spreadsheet is then no longer the source, but a worksheet on top of a source that is right.
When do I put the btw payment into my cash flow forecast?
On the statutory date, not on the day you transfer it. With a quarterly btw-aangifte, both the return and the payment must be in by the last day of the month following the quarter: 31 January, 30 April, 31 July and 31 October. Put that amount in as a fixed future item as soon as the quarter starts, and not only when the return is being prepared — otherwise your room looks bigger than it is for three months.
Which bank statement formats does Odoo read?
CAMT.053 — the SEPA format for cash management — and also CSV, XLSX, OFX and QIF. For Belgium, Odoo additionally supports CODA. If you work with a bank connection you no longer have to download a file at all: the bank journals synchronise every twelve hours by default. Do check with your bank which format and which connection method are available for your type of business account.
When is an MKB company too big for cash flow in Excel?
Not at a revenue threshold, but at three signals. One: more than one person needs to be able to update the overview. Two: your receipts arrive bundled through a payment service provider or by direct debit, so a bank line no longer equals an invoice. Three: you make decisions with a horizon of more than four weeks. If you recognise two out of three, the spreadsheet has already stopped working — it only looks like it still does.
