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.
Step 3 — The year-end entries
The accounts are cleared; now come the entries that exist only because the financial year is ending.
Depreciation. Odoo treats fixed assets as objects in their own right: duration, method, depreciation account, automatic generation of the entries on the scheduled dates. Properly configured, depreciation is no longer a closing entry but a continuous flow that you merely have to monitor. Our article Depreciation: how to automate it? sets out the configuration step by step.
Accruals and deferrals. Expenses and revenues to be carried forward — the insurance paid in October for twelve months, the subscription collected in November for the following year — are handled through the deferred expenses and deferred revenues mechanisms: you state the period covered, and the ERP spreads the expense or the revenue over the financial years concerned. Odoo's checklist explicitly requires posting "all depreciation and deferred revenue entries" before closing.
Provisions and value adjustments. Doubtful debts, disputes, guarantees granted. Here the ERP has nothing to offer, and that is as it should be: a provision is an estimate resting on facts that only a human knows.
Appropriation of the result. Odoo computes the result of the current financial year continuously and displays it within equity. Its documentation says so unambiguously: the appropriation takes the form of a miscellaneous entry dated the last day of the financial year, which transfers the result to the equity account chosen. This is where the director's decisions come in — legal reserve, liquidation reserve, dividend — and this is where the year's tax changes weigh most heavily. Several parameters have moved recently; we reviewed them in Belgian Programme Act of 28 May 2026: what changes for Belgian SMEs and their directors.
Step 4 — Lock, approve, file
The accounts are settled. Three acts remain, in this order.
Lock. Odoo recommends setting a lock date ("Lock Everything") on the last day of the closed financial year: no entry can be created or modified at an earlier date any more. That is what guarantees that the balance sheet presented to the general meeting will still be the same one six months later.
Approve. The administrative body submits the comptes annuels to the general meeting, which approves them and rules on the discharge of the directors. A reminder: within six months of the closing date.
File. Filing is done with the Centrale des bilans through the Banque nationale's Filing application (the former Sofista application was deactivated on 4 April 2022). Three routes: importing an XBRL file produced by accounting software, filing a PDF form, or creating the form online. After validation the file moves to awaiting payment, and the filing only takes effect once that payment has been settled — a point that catches out the latecomers of 31 July.
What the ERP carries, what stays human
| Step of the closing | What Odoo carries | What remains a human act |
|---|---|---|
| Inventory | Dated stock adjustment, stock variation entry | Deciding on a write-down |
| Cut-off | Draft filter, invoices to be received | Identifying the uninvoiced service |
| Bank | Reconciliation, models, REGEX | Settling the persistent discrepancies |
| Customers / suppliers | Matching off, aged balance | Qualifying a receivable as doubtful |
| VAT | Intervat return, reconciliation of the accounts | Correcting a tax configuration |
| Fixed assets | Automatic depreciation | Choosing duration and method |
| Accruals and deferrals | Deferred expenses and revenues | Delimiting the period covered |
| Provisions | — | Estimating the risk |
| Result | Continuous computation, appropriation entry | Deciding on the appropriation |
| Locking | Lock date | Fixing the moment |
| General meeting and filing | Export of the financial statements | Convening, approving, filing |
A well-kept ERP removes the reconstruction work, not the decision work. The time you no longer spend tracking down an entry, you spend judging the entries that matter.
doo.FINANCE, your Belgian closing without unpleasant surprises
A closing that goes well is a closing that started in January, not in May. We keep the books of Belgian SMEs in Odoo throughout the financial year — recording, reconciliations, VAT, fixed assets — so that the closing becomes nothing more than a formality of control and decision.
We step in in three ways: as full bookkeeping if you have no in-house accountant, as closing support if your team keeps the books but wants an outside view on the cut-off and the year-end entries, or as a remediation if your Odoo was never configured for the Belgian localisation. Discover our accounting services around Odoo.
Let's talk about your next closing before it becomes urgent.
Talk about my annual closing →Frequently asked questions
What is the exact deadline for filing the annual accounts in Belgium?
Two rules apply together. The comptes annuels are filed with the Centrale des bilans within 30 days of their approval by the general meeting, and at the latest 7 months after the closing date of the financial year: whichever of the two deadlines falls first governs. For a financial year ending on 31 December, the absolute cut-off is 31 July, even if the general meeting was held in June.
What does a Belgian SME risk if it files its annual accounts late?
A surcharge invoiced by the Banque nationale, which starts in the ninth month after the closing date. In 2026 it amounts to €151 for a small company filing an abbreviated or micro format (€227 from the 10th to the 12th month, €453 from the 13th) and to €504 for other companies (€755, then €1,510). These amounts are indexed each 1 January. A legal risk comes on top of that: the CSA provides for a presumption of damage to third parties where the accounts have not been submitted to the general meeting within six months.
Does Odoo allow the annual accounts to be filed directly with the Banque nationale?
Filing is done on the Banque nationale's Filing application, which accepts an XBRL file produced by accounting software, a PDF form or a form created online. The ERP intervenes upstream: it produces the trial balance, the balance sheet and the profit and loss account on which the filed format is built. Check with your partner which outputs your installation actually generates — that depends on your version and on the Belgian localisation modules activated.
Should the accounting periods be locked after the closing?
Yes, and it is Odoo's explicit recommendation: a lock date on the last day of the closed financial year prevents any entry from being created or modified at an earlier date. Without it, a single retroactive posting — often unintentional — is enough to make the live accounts diverge from the filed ones. The lock is set after the accounts have been settled and before the general meeting.
How much does filing the annual accounts cost in 2026?
The filing fees depend on the format and on the medium, VAT included: €67.00 for a micro format in XBRL (€137.30 in PDF), €89.40 for an abbreviated format (€159.50 in PDF) and €379.50 for a full format (€449.70 in PDF). A corrected filing costs €86.00. These rates are revised every year by the Banque nationale.
This article sets out the general framework of the annual closing of a Belgian company. The rules vary according to the legal form, the size of the company and the particular features of your financial year. Professional support remains advisable for any accounting or tax decision.
