With module Account Invoice UBL, invoices are generated according to generic UBL rules.
In Europe, some countries use the PEPPOL 3.0 BIS standard as a more strict subset of UBL.
With this module you can specify some or all of your invoices to be generated and validated according to this stricter standard.
auto_awesome What this module does
AI-generated from the code · Odoo 14.0Generate customer invoices as PEPPOL 3.0 BIS compliant UBL files. You choose which invoices use the stricter PEPPOL format via a domain, and configure default tax and unit of measure for the XML.
This module extends the existing UBL invoice export so that selected invoices are produced in the stricter PEPPOL 3.0 BIS dialect instead of generic UBL. It does not add a new button; it changes how the UBL XML is built when you generate it.
In Accounting settings you get three new options: a PEPPOL domain (a filter that decides which invoices are exported in PEPPOL format, for example only customers in certain countries), a default tax to use when an invoice line has no tax, and a default unit of measure to use when a line has no unit. The domain is validated when saved, so an invalid filter is rejected.
A new menu 'PEPPOL EAS codes' under Accounting lets you maintain the list of electronic address scheme codes (EAS). Each country can be linked to one EAS code, and the partner's company registration number plus that country code form the PEPPOL endpoint identifier written into the XML. The module also adjusts the generated XML: it adds the PEPPOL customization and profile identifiers, removes fields not allowed by PEPPOL, adds endpoint identifiers, and fills in missing tax categories or tax subtotals using the configured defaults.
Depends on
Menus it adds
Models and fields (6)
- res.company · extends an existing modelubl_default_tax (Default tax), ubl_domain_peppol (PEPPOL domain), ubl_default_uom_id (Default UoM)
- res.country · extends an existing modelpeppol_eas_code
- res.partner · extends an existing model
- account.move · extends an existing model
- peppol.eas.list · new modelcode, name, active, display_name
- res.config.settings · extends an existing modelubl_default_tax, ubl_domain_peppol, ubl_default_uom_id
Text generated by AI (DeepSeek) from reading the Odoo 14.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 14.0
Confirmed on 2026-11-03 in branch 14.0 of OCA/edi.
terminal Installation and usage
OCA documentation · Odoo 14.0Configuration
Source · Odoo 14.0- Go to menu Invoicing > Configuration > Settings > Invoicing, under Electronic Invoices.
- Formulate a domain for which invoices the dialect should become PEPPOL. By default it is [], so all UBL invoices will be PEPPOL. If you want this only for Belgian partners, then you can fill here for example:
[('partner_id.country_id.code', '=', 'BE')]Or you can choose to enable this only for selected partner ids. - You can configure a default tax to use in case an invoice line has no tax specified. This is necessary for example in case of an NGO to satisfy business rule BR-CO-18. Any tax you choose must also have a UNECE tax type (eg. VAT) and tax category (eg. "Services outside scope of tax") defined.
- You can configure a default unit of measure, of which the UNECE code will be used in case an invoice line has no unit or product unit. A typical default unit could be the Odoo 'unit', configured with a UNECE code of UN, XUN or C62. This is to satisfy rule BR-23.
- Go to menu Contacts Fill the field
coc_registration_numberfor your own company's partner record and for those partners that you want to send e-invoices to. - Go to menu Contacts > Configuration > Localization > Countries On any country relevant for invoice traffic, configure the correct PEPPOL EAS id. For the Netherlands, this is for example
0106, which stands for Dutch chamber of commerce number. - Either: make sure that every invoice has a bank account filled in; Or: make sure that your payment modes have a fixed connection to a bank account. To do the latter: Go to menu Invoicing > Configuration > Management > Payment mode Per payment model, set the field
bank_account_linktofixed
Usage
Source · Odoo 14.0In the invoice form click on button Send & Print.
If the invoice matches the configured domain for PEPPOL, the invoice will be generated and validated according to the stricter PEPPOL 3.0 BIS standard.
The validator on https://test.peppolautoriteit.nl/validate can be used to test the validity of the generated XML file. There are other online validators around as well.
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.