Odoo / ERP

Bilingual FR/NL accounting: what it costs your Belgian SME, and how Odoo absorbs it

The doo.FINANCE team· 11 mininfX

A supplier invoice arrives from Antwerp, in Dutch. It is entered by a bookkeeper who works in French. The journal item label becomes "facture Van Damme" — "Van Damme invoice" — with no contract reference and no translation of the line item. Four months later, an inspector from the SPF Finances (FOD Financiën), Belgium's federal tax administration, asks for the supporting document behind a line in account 613. Nobody knows which of the forty entries booked that month it belongs to.

This is not a failure of organisation. It is daily life in a Belgian SME whose suppliers, customers and tax administration do not all speak the same language. Belgium is the only market where accounting has to live in two languages at once — and where the language is not a preference but a consequence of where the business is established. At doo.FINANCE, bilingual accounting is the first source of re-keying we come across when we open a Belgian file.

Here is what it really costs, what Odoo absorbs, and what it will not do for you.

Bilingual accounting: in Belgium, language is not a choice

Three language regimes coexist, and it is the location of the siège d'exploitation — the place of business from which the company actually operates — that determines which one applies to your company documents.

  • Dutch language region (Nederlands taalgebied): the Flemish Decree of 19 July 1973 requires Dutch for the company's deeds and documents, and for employer-employee relations.
  • French language region (région de langue française): the Decree of 30 June 1982 requires French.
  • Brussels-Capital Region: the Act of 2 August 1963, coordinated by the Royal Decree of 18 July 1966, applies bilingualism — French for French-speaking staff, Dutch for Dutch-speaking staff.
  • German language region: German.

An SME with its office in Namur and a warehouse in Ghent therefore falls under both regimes, not one. This is not a rare case: it is the normal shape of a Belgian company as it grows.

The rule then carries through to the annual accounts — the comptes annuels, jaarrekening in Dutch. Financial statements filed with the Banque nationale de Belgique (Nationale Bank van België), Belgium's national bank, must be drawn up in the language — or in one of the official languages — of the language region in which the legal entity has its registered office (article 2:33 of the Code des sociétés et des associations, the CSA/WVV, Belgium's code of companies and associations). The Commission des normes comptables (Commissie voor Boekhoudkundige Normen), Belgium's accounting standards board, confirmed this in its opinion 2020/03 of 12 February 2020, which it publishes in French: documents filed together must all be in one and the same language. An English translation remains possible on a voluntary basis, but on its own it does not satisfy the filing obligation.

On the VAT side, the constraint is narrower than it is generally believed to be. Article 61, § 1 of the Code de la TVA, Belgium's VAT code, allows the administration to require, for invoices drawn up in a language other than one of the national languages, a translation into one of those languages. Since French, Dutch and German are all three national languages, an invoice written in Dutch remains perfectly valid against a French-speaking inspector. The risk is therefore not legal — it is operational: the person who has to justify the entry has to be able to read the document.

Finally, the language constraint stops where European law begins. In its New Valmar judgment of 21 June 2016 (case C-15/15), the Court of Justice of the European Union held that requiring Dutch, on pain of absolute nullity, on the cross-border invoices of a company established in Flanders was contrary to the free movement of goods. In other words: your export invoices are not prisoners of the language of your region.

What bilingualism really costs a Belgian SME

The cost of bilingualism is nowhere to be read in the profit and loss account. It hides in three places.

The double vocabulary

When accounting and operations do not speak the same language, two vocabularies appear for the same thing. The warehouse manager in Ghent talks about leveranciers, the bookkeeper in Liège about fournisseurs — suppliers, in both cases — and the tracking spreadsheet carries both columns. Every reconciliation becomes a mental translation, done from memory, leaving no trace.

The symptom is easy to recognise: an in-house chart of accounts, kept alongside the official one, with the account names "the way we say them here".

Inconsistent labels and the document nobody can find

This is the most expensive of the three. One journal item label written in the language of the document, another in the language of the person entering it, a third abbreviated because the field was too short: by the end of a financial year, a keyword search no longer returns anything you can rely on.

The day a document has to be found, you stop searching in the accounts — you search the archives, then the emails. That is where the hours go.

Audits and closings that drag on

A VAT audit, a statutory review, a request from the bank: every time, the same mechanics. You produce an account statement, trace it back to the document, translate it for the person asking. Multiplied by the number of lines requested, the exercise turns a one-hour request into a two-day project.

Setting up Belgian VAT in Odoo sorts out the filing mechanics, but not this particular friction: it is linguistic, not fiscal.

Bilingual accounting in Odoo: what the software absorbs

Odoo does not "translate" your accounting. It does something more useful: it stores a single piece of data and displays it in the language of whoever is looking at it. Three mechanisms carry the bulk of the work.

The Belgian chart of accounts already ships in three languages

Odoo's Belgian localisation module (l10n_be) installs the complete Belgian PCMN — the plan comptable minimum normalisé, Belgium's standard chart of accounts. What is less widely known: the reference file for that chart of accounts, in the public Odoo 18 repository, contains 308 accounts, and every one of them carries its French, Dutch and German name — the name@fr, name@nl and name@de columns are filled in on every single line.

In concrete terms, account 400 is called Clients for the French-speaking user and Handelsdebiteuren for the Dutch-speaking one — trade receivables, either way. Account 440 is Fournisseurs or Leveranciers, trade payables. Account 411 is TVA à récupérer or Terug te vorderen btw, VAT recoverable, and account 451 is TVA à payer or Te betalen btw, VAT payable. One account, one balance, two readings.

There is nothing to buy and nothing to configure for this: it comes with the Belgian localisation. The only condition is to have installed the Belgian localisation, and not a generic chart of accounts.

The contact's language decides the language of the document

On every contact record, Odoo exposes a Language field. The official documentation is explicit: the language set there is the one in which "all emails and documents sent to this contact are translated". The same mechanism applies to internal users: documents reach them in the language chosen in their profile.

This is the most profitable setting on the list, and the one most often forgotten. An invoice goes out in Dutch because the customer is Flemish — not because a colleague remembered to switch template at the moment of sending. The quotation, the payment reminder and the credit note follow the same rule, with no intervention.

The language does have to be installed in the database first: that is done in the settings, Languages section, before the first entry is booked.

Journals, taxes and products follow the same mechanism

The principle does not stop at the chart of accounts. In the Odoo 18 code, the names of accounts, journals, taxes, account groups and products — including the sales description that is carried over onto the invoice — are all translatable data. You enter a second version of the name, and each user sees their own.

That is what makes it possible to keep a single purchase journal, rather than an Achats journal and an Aankopen journal — purchases, in French and in Dutch — that would then have to be consolidated.

Where Odoo stops: the journal item label

This has to be said plainly, because it is precisely where bilingualism is still paid for.

The Label field on a journal item line is not a translatable field. It is free text, entered once, displayed as it is to everybody. And that is logical: a journal item label is accounting data, not an interface caption. Nobody wants automatic translation on a supporting document.

The answer is therefore not technical but methodological: a single labelling convention, independent of language. Document number, counterparty, order or contract reference, in that order, every time. The label stops being a sentence to be understood and becomes a search key — one that works just as well for a French-speaking tax inspector as for a Dutch-speaking auditor.

This is the rule we set systematically at the start of a Belgian file, before the very first entry.

Five settings to put in place when the file is opened

  1. Install the languages before booking anything. Add Dutch (and German if you have activity in the Communauté germanophone, the Deutschsprachige Gemeinschaft, Belgium's German-speaking Community) in the settings, then set the interface language for each user.
  2. Fill in the Language field on every contact record. It is that field — not the address, not the language of the sales representative — that decides the language of the invoice sent out.
  3. Check that the Belgian localisation is properly installed. It is what brings in the PCMN and its FR/NL/DE names. A generic chart of accounts deprives you of the entire benefit.
  4. Write the labelling convention down and have it applied by everyone, your external accountant included.
  5. Translate your own additions. Every account, journal, tax or product created by hand is born in a single language: the second version does not write itself.

If you already process your invoices through Peppol, these settings combine: the electronic flow carries the structured data, and language only concerns what a human reads. We go into this point in our article on Peppol and the time it costs you — or gains you.

doo.FINANCE: your Belgian accounting, in both languages

We keep the books of Belgian SMEs that work in French and in Dutch, often with teams spread between Brussels, Flanders and Wallonia. As an Odoo Gold Partner, we configure the Belgian localisation, set the labelling conventions, and handle the bookkeeping and the closings — in the language your registered office, your tax administration and your customers expect.

If your team still spends time translating documents in order to find them again, let's talk. We always start with a review of your file: what is already bilingual, what is not, and what that costs you every month. Discover our Odoo accounting services.

Contact us for a free call →

Frequently asked questions about bilingual accounting in a Belgian SME

Do I have to keep two sets of books if my company is bilingual?

No, and it is in fact to be avoided. One set of accounts, one chart of accounts, one set of journals — with translated names. Odoo stores a single piece of data and displays it in the user's language. Duplicating the structures creates two versions of the truth that have to be reconciled at every closing, with no regulatory benefit at all.

Can I invoice a Flemish customer in French?

The Language field on the customer record decides the language of the document sent out: set it to Dutch and the invoice will go out in Dutch, automatically. Legally, the Belgian language obligations apply to the documents imposed by law and are determined by the region of your siège d'exploitation; for cross-border invoices, the Court of Justice of the EU set aside an exclusive language requirement in the New Valmar judgment. If you are in doubt about your own situation, have the point confirmed by your adviser.

Does Odoo translate my journal item labels automatically?

No. The label on a journal item line is free text and is not translatable — unlike the names of accounts, journals, taxes and products. That is the limit of the software, and the reason why a written labelling convention is worth more than a tool.

Which language should I file my annual accounts in?

In the language of the language region where the company has its registered office, under article 2:33 of the Code des sociétés et des associations. In Brussels, French or Dutch, but the whole set of documents filed together has to be in one and the same language. An additional translation, into English in particular, remains possible on a voluntary basis.

Is a paid module needed to obtain a bilingual chart of accounts?

No. The Belgian chart of accounts shipped with the l10n_be localisation already contains the French, Dutch and German names of its 308 accounts. The work that remains concerns the accounts you create yourself and your products.

Let's take action

A question about your accounting?

A free first consultation with a doo.FINANCE expert to review your situation.

Book a call →