Tax

Peppol & UBL in Odoo: fast, btw-compliant e-invoicing for Dutch SMEs

The doo.FINANCE team· 10 mininfX

A supplier emails you a pdf. Your administration retypes the lines, someone checks the btw (Dutch VAT) rate by hand, and three weeks later the same invoice turns out to have been posted twice. That is not an exception in the Dutch MKB — the country's small and mid-sized businesses — that is the default situation as soon as invoicing has never really been digitalised.

E-invoicing solves that. But there is a lot of noise around it. One party tells you it "becomes mandatory next year", another sends you a UBL file — structured invoice data in XML — that your software cannot read, and a third confuses Peppol, the European e-invoicing network, with a file format. At doo.FINANCE, an Odoo Gold Partner, we get this question from Dutch controllers every week.

This article sets out the facts: what really is mandatory in the Netherlands and what is not, what UBL and Peppol actually are, what you switch on in Odoo, and how you check that you genuinely send and receive.

Is e-invoicing mandatory in the Netherlands?

Start with the honest answer, because this is where it usually goes wrong. The Netherlands is not Belgium. There is currently no general Dutch obligation to invoice B2B electronically.

What is mandatory is the government side. Ondernemersplein, the official government business portal, is brief about it: "Do you supply goods or services to the central government? Then you must send an e-invoice." Decentralised authorities — municipalities, provinces and water boards — sometimes require it too. That is the B2G obligation, and it stands apart from your invoicing to businesses.

For ordinary commercial invoices between businesses, the Belastingdienst, the Dutch tax administration, leaves you free: "You decide yourself whether you send your invoices on paper or digitally." There is one condition attached: "your customer must agree to you invoicing digitally." And you must be able to give assurance about "the authenticity of origin, the content and the legibility" of that digital invoice. So your customer is not obliged to accept an e-invoice.

The Dutch Peppolautoriteit, the authority that supervises the network in the Netherlands, is equally explicit: no concrete agreements have yet been made to make e-invoicing via Peppol mandatory in the Netherlands.

What does that mean in practice? E-invoicing in the Netherlands today is market adoption, not a mandate. Your large customers and the government ask for it; the legislator does not. At European level that picture does change, but that is a different timeline — we wrote about it earlier in ViDA: the digital shift in the EU VAT system. So anyone setting this up now does so out of self-interest, not under time pressure. That is exactly the moment when you can afford to do it properly.

What exactly are UBL, NLCIUS and Peppol?

These three terms are constantly mixed up. They belong on different layers.

UBL is the file, not the network

UBL (Universal Business Language) is an XML format. A UBL invoice is a structured data file that your customer's accounting system can read straight in: invoice number, lines, btw rates, IBAN, everything as a field. A pdf is not — not even with a neat layout around it. A pdf by email is a digital invoice, not an e-invoice.

On top of UBL sit agreements about which fields are mandatory. The European standard EN 16931 fixes the semantics. NLCIUS is the Dutch implementation of it, and Peppol BIS Billing 3.0 the implementation used on the Peppol network. In practice the two are compatible: the Handreiking basisfactuur Rijk from Logius describes the basic invoice as fully compliant with both NLCIUS and Peppol BIS.

Watch out for the old standard. SI-UBL 1.2, widely used between 2013 and 2019, was declared optional by the Dutch Peppolautoriteit as of 1 July 2022, and the central government has not accepted the format since 1 January 2023. If your current connection still runs on SI-UBL 1.2, that is not an edge case but an open risk.

Peppol is the network, not the file

Peppol is the infrastructure those UBL files travel over. It works on a four-corner model: you deliver your invoice to your access point, that access point looks up the recipient's address and delivers to their access point, which puts the invoice into your customer's system. You do not have to agree anything with your customer about protocols or formats — the network handles that.

For that you need one thing: an electronic address, your Peppol ID. Dutch companies normally use their KvK number for this — the number held by the Kamer van Koophandel, the Dutch chamber of commerce register — so that other participants can find them. Government bodies use their OIN, a 20-digit organisation identification number.

The central government itself has been on Peppol since early 2024 through its own Rijksoverheid Access Point (ROAP); alongside that, Digipoort, the government's digital exchange gateway, still exists as a channel. For you as a supplier the consequence is simple: once you are connected to Peppol, you reach the central government and your business customers through the same channel.

Activating Peppol and UBL in Odoo: four steps

Odoo is itself an access point and SMP on the Peppol network. So you do not need a separate service provider to send and receive. The set-up breaks down into four steps.

Step 1 — get the Dutch localisation and btw settings right

Install the Dutch localisation (l10n_nl). It brings the Dutch chart of accounts, the btw rates (21%, 9% and 0%) and the reporting for the btw-aangifte, the Dutch VAT return, and the ICP-opgaaf, the listing of intra-Community supplies.

Then go through your master data. This is the most underestimated step and at the same time the cause of most rejections:

  • KvK number and btw identification number of your own company filled in completely;
  • IBAN correct and linked to the right bank journal;
  • address details complete, including country code;
  • btw rates correctly assigned to your products and services, including reverse-charge btw and intra-Community supplies.

An e-invoice is checked by machine. A missing field that nobody notices on a pdf leads to a technical rejection here.

Step 2 — activate Peppol and register your electronic address

In Odoo, go to the Accounting settings and click Activate Electronic Invoicing in the PEPPOL Electronic Invoicing section. You enter your endpoint identifier (for most Dutch companies: the KvK number), plus an email address and telephone number for the verification. Registration is usually active within a day.

From that moment your company is in the Peppol address book and other participants can find you. If you register several legal entities, you do this per entity — one Peppol address per legal entity.

Step 3 — set the right format per customer

Odoo supports BIS Billing 3.0, NLCIUS and XRechnung CIUS, among others. You set the format per customer: open the customer record, go to the Accounting tab and choose the format in the customer invoices section.

For invoices to the central government, two extra requirements apply that you cannot skip: the OIN of the receiving department and the purchase order number. Logius warns about this explicitly — an incorrect reference, for example with a prefix, spaces or full stops, leads to longer processing time. So record that order number as a mandatory field in your sales process, not as a free-text note afterwards.

Step 4 — let incoming invoices arrive

E-invoicing is not one-way traffic, and this is the half most often forgotten. In the same Peppol section, designate the purchase journal that received documents should land in. Odoo then imports incoming invoices automatically and turns them into draft vendor bills, with the lines and btw amounts already filled in.

That changes your accounts payable process fundamentally: your team moves from retyping to checking and approving.

How do you check that you really send and receive?

"It is switched on" is not proof. Run these five checks properly, once, before you close the project:

  1. 1. Registration status. Is your Peppol registration in Odoo set to active, and not to pending?
  2. 2. Findability. Look yourself up in the Peppol address book by your KvK number. If you cannot find yourself, your customer cannot find you either.
  3. 3. Outgoing test. Send one real invoice to a customer you know is on Peppol, and ask for confirmation of receipt in their system — not by email, but in their bookkeeping.
  4. 4. Incoming test. Ask a supplier to send you an e-invoice and check that a draft appears in the designated purchase journal.
  5. 5. Content check. Open the XML file you sent. Are the btw rate and btw amount, the KvK number, the IBAN and the order number reference all correct?

Bear the retention obligation in mind as well. You keep your records for seven years (ten years for data on immovable property). With an e-invoice, the XML file is the original — not the pdf rendering your system makes of it. Make sure your archiving holds on to that file.

What does it deliver for your organisation?

The gain is not in "going paperless". It sits in three concrete places.

Less manual work on the purchasing side. A draft vendor bill that is already filled in saves your administration from retyping every line — and with it the typing errors that only surface at the btw review.

Better btw quality. Because rates and amounts come in structured, the basis of your btw position is correct from the start. Errors in btw codes on purchase invoices are a classic source of later corrections; those largely disappear.

Faster payment and a harder trail. An e-invoice lands straight in your customer's approval flow, with no mailbox in between. And every transmission is traceable — which puts an end to the "we never received an invoice" discussion.

Be realistic about the pace. As long as there is no Dutch B2B obligation, your customer portfolio decides how fast this goes. Start with the parties already asking for it: the government, large buyers, and suppliers who are already on Peppol.

Need advice?

doo.FINANCE is both an Odoo Gold Partner and an accountancy firm. That difference matters here: an IT provider switches Peppol on, we also check whether your btw codes, journals and master data will stand up to a Belastingdienst review.

We set up your Dutch localisation, activate and verify your Peppol registration, configure the formats per customer group — including the OIN and order number logic for government customers — and test the incoming flow with your own suppliers. See our Odoo accounting services, or ask us whether your current set-up is already right.

Contact us and discover how we can help you.

Contact us for a free call →

Frequently asked questions

Is e-invoicing mandatory for my MKB company?

Not in general. If you supply the central government, you must send an e-invoice; some municipalities, provinces and water boards require it too. For invoices to businesses you decide yourself whether you send paper or digital, provided your customer agrees to digital invoicing. The Dutch Peppolautoriteit states that no concrete agreements have yet been made to make Peppol mandatory in the Netherlands.

Is a pdf invoice by email an e-invoice?

No. A pdf is an image of an invoice that a human has to read. An e-invoice is a structured file — in practice UBL — that your customer's system processes automatically. A pdf is a valid digital invoice for btw purposes, provided your customer agrees and you can safeguard authenticity, content and legibility.

Should I choose NLCIUS or Peppol BIS Billing 3.0?

For sending over the Peppol network you use BIS Billing 3.0; NLCIUS is the Dutch implementation of the same European standard EN 16931 and is widely accepted. Odoo supports both, configurable per customer. More important than the choice is that you stop using SI-UBL 1.2: the central government has not accepted that format since 1 January 2023.

What is my Peppol address?

Dutch companies normally use the KvK number as their electronic address, so that other participants can find them. Government bodies use their OIN. In Odoo you enter this number as the endpoint identifier when you activate Peppol, per legal entity.

How long do I have to keep e-invoices?

You keep your records for seven years; for data on immovable property, ten years. With an e-invoice the XML file counts as the original. So check that your archiving keeps the XML file and not only a pdf rendering of it.

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 →