On 31 December your financial year ends. By 30 June at the latest, your general meeting must have approved the comptes annuels (jaarrekening in Dutch) — the statutory annual accounts every Belgian company draws up. By 31 July at the latest, those accounts must be filed with the Centrale des bilans, the central balance sheet office of the Banque nationale de Belgique (BNB), Belgium's central bank. Between those three dates there is no pile of tasks to be handled "when we have time": there is a sequence, and each step conditions the next.
That is what makes the annual closing of a Belgian SME stressful when you ignore it — and manageable when you follow it. The classic scenario repeats itself every spring: in May you discover that no inventory was dated 31 December, that a November supplier invoice was never recorded, and that the bank reconciliation stops somewhere in October. The balance sheet becomes an investigation instead of a photograph.
This guide follows the Belgian closing in the order in which it is actually lived. At each step it separates what the ERP already carries — Odoo matches, reconciles, depreciates, accrues, locks — from what remains a human judgement. At doo.FINANCE, an Odoo Gold Partner, we support SMEs in Brussels, Antwerp and Ghent along that path.
The Belgian statutory timetable: three dates, in this order
Before talking about entries, the framework has to be set: the Belgian closing is governed by the Code des sociétés et des associations (CSA / WVV), Belgium's companies and associations code, and by the filing obligations of the Centrale des bilans. Three deadlines.
1. The general meeting: six months. Article 3:1 of the CSA is explicit: "The annual accounts must be submitted for approval to the members meeting in assembly or to the general meeting within six months of the end of the financial year." This is not a formality of convenience: the CSA attaches to any breach of that deadline a presumption of damage to third parties, unless proven otherwise. An aggrieved creditor therefore does not have to demonstrate that your delay harmed him — it is for you to demonstrate the opposite.
2. The filing: 30 days after approval, and 7 months at the outside. The Banque nationale states the rule in two parts: the comptes annuels are filed "within 30 days of their approval by the general meeting" and "at the latest 7 months after the closing date of the financial year". Both conditions apply together: whichever falls first governs. For a financial year ending on 31 December, the absolute cut-off is therefore 31 July.
3. The late filing surcharges: they start in the ninth month. Once the seven-month deadline has passed, one month of tolerance runs without surcharge. From the ninth month after the closing date, the BNB invoices a supplement, indexed each 1 January. Amounts in force in 2026:
| Filing made | Small company (abbreviated or micro format) | Other companies |
|---|---|---|
| From the 9th month | €151 | €504 |
| From the 10th to the 12th month | €227 | €755 |
| From the 13th month | €453 | €1,510 |
These surcharges come on top of the ordinary filing fees, which are also revised every year: in 2026, €67.00 for a micro format filed in XBRL, €89.40 for an abbreviated format and €379.50 for a full format (VAT included). A corrected filing costs €86.00.
Being late does not cost much in itself. But Belgian comptes annuels are public — that is their function: a late filing signals to your banks, your suppliers and your public-sector customers that the house is not being kept.
Step 1 — Stopping the flows: inventory and cut-off
The first step does not happen in the software, but in the warehouse, in the contracts and in the mailboxes.
The inventory, an act that carries a date
Belgian accounting law requires an annual inventory: a statement of the assets, rights, debts and obligations at the closing date. For an SME in trade or production, that means counting stock on 31 December — not on 15 January, and not "roughly".
Odoo carries the mechanical part: the Inventory application launches a dated stock adjustment, line by line or by location, and generates the stock variation entry if the valuation is set to perpetual inventory. What the ERP does not do: decide that a batch of spare parts from 2019 is no longer worth its purchase value. The write-down is a judgement, it has to be reasoned and it has to be documented.
The cut-off: every euro in the right financial year
The cut-off attaches each expense and each revenue to the financial year that gave rise to it, independently of the date of the invoice or of the payment. That is where the discrepancies discovered too late are lodged. Three controls cover the essentials:
- Late purchase invoices. A service delivered in December and invoiced in February belongs to the closed financial year — as an invoice to be received while the document is not yet there.
- Uninvoiced deliveries. Symmetrically, goods dispatched on 28 December and invoiced on 5 January are revenue of the closed financial year.
- Drafts. Odoo filters documents in "Draft" status over the period. Every draft still open on 31 December is a decision not taken: either confirm it, or cancel it.
The quality of the cut-off depends directly on how quickly supplier invoices enter the system during the year. If your suppliers already send you structured invoices, the Peppol network works in your favour here rather than against you: an invoice received machine-readable is an invoice recorded the same day.
Step 2 — Clearing the subsidiary ledgers: bank, customers, suppliers, VAT
Once the flows have stopped, you clear. Odoo's closing documentation puts this step at the top of its own checklist: making sure that all bank accounts are fully reconciled up to the closing date and that the accounting balances match the balances on the statements.
It is the most mechanisable step of the closing — and the one that takes the most time when it has been neglected all year. Odoo offers three levers, from the coarsest to the finest:
- one-click reconciliation when the match is obvious — see Bank reconciliation: simplify it with a button? ;
- reconciliation models, which automatically allocate recurring entries (bank charges, subscriptions, rent) — see Bank reconciliation: automate it with templates? ;
- regular expressions, for the structured bank narratives that nothing else catches — see Bank reconciliation: using regular expressions (REGEX)?.
In parallel, the customer and supplier accounts are matched off: every open invoice must correspond to a real receivable or a real payable. A customer invoice from 2022 still open is not a balance, it is a doubtful debt in disguise.
Then comes the VAT check: the sum of the year's Intervat returns — Intervat being Belgium's VAT filing portal — must reconcile with the VAT accounts on the balance sheet. A discrepancy almost always points to a configuration issue: a rate applied to the wrong account, a missing fiscal position, a forgotten exemption notice. If you have never audited that configuration, our guides Setting up VAT: how to do it? and VAT exemption notices: how to add them? cover the subject in detail.
