Skip to main content
iVentureTeam
Odoo in Germany

Odoo E-Invoice Formats Compared: Factur-X, XRechnung, UBL, Peppol BIS

Odoo e-invoice formats compared: Factur-X, ZUGFeRD, XRechnung, UBL and Peppol BIS in Odoo 19 and 20, with defaults by country and which one to choose.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
November 14, 202612 min read1 view
Odoo E-Invoice Formats Compared: Factur-X, XRechnung, UBL, Peppol BIS cover

Choosing an e-invoice format sounds like a technical detail, but a wrong choice means rejected invoices and late payments. Our Odoo implementation services include a format map for every customer group before the first invoice goes out.

Related service: Odoo implementation in Germany — GoBD, XRechnung/ZUGFeRD and DATEV export done properly.

This guide is for finance leads and Odoo admins in Europe who invoice across borders. It compares formats only; for mandates by country, start with our guide to Odoo localization gaps and the country posts linked below.

What are the main e-invoice formats in Odoo 19 and 20?

Odoo 19 and 20 ship the same seven UBL and CII e-invoice formats in the customer's eInvoice format field. You pick one per customer, or let Odoo suggest it from the country.

The list sits in the account_edi_ubl_cii module: France (FacturX), Germany (ZUGFeRD), Germany (XRechnung), EU Standard (Peppol BIS 3.0), Netherlands (NLCIUS), Australia (BIS Billing 3.0 A-NZ) and Singapore (BIS Billing 3.0 SG).

Other countries use their own clearance formats in separate modules, such as FatturaPA in Italy, CFDI in Mexico or FA(3) for KSeF in Poland. Those are not interchangeable with the formats above.

How do UBL, CII and EN 16931 fit together?

EN 16931 is the European rulebook for what an invoice must contain, while UBL and CII are the two XML languages allowed to write it. Every format in this guide is one of those two languages plus a national or network rule set.

Think of it in three layers:

  1. The data model: EN 16931 defines the fields, such as seller, buyer, VAT breakdown, payment terms and line items.
  2. The syntax: UBL 2.1 or UN/CEFACT CII, the two XML structures EN 16931 accepts.
  3. The rule set (CIUS): extra rules for one country or network, such as XRechnung for Germany or Peppol BIS Billing 3.0 for the Peppol network.

So a Peppol BIS file and an XRechnung file share a syntax but can still fail each other's checks.

Factur-X vs XRechnung vs UBL vs Peppol BIS: how do they compare?

Odoo e-invoice formats: Which format fits each buyer?

Factur-X is a human-readable PDF with data inside, while XRechnung and Peppol BIS are machine-only UBL files with stricter field rules. The table shows how each one behaves in Odoo 19 and 20.

FormatSyntaxWhat the customer getsSent over Peppol by OdooTypical use
Factur-XCII inside PDF/A-3One PDF with embedded XMLNo, email or platformFrench and EU B2B by email
ZUGFeRDCII inside PDF/A-3One PDF with embedded XMLNo, emailGerman B2B by email
XRechnungUBLXML file onlyYesGerman public sector (B2G)
Peppol BIS Billing 3.0UBLXML file, PDF optional insideYesCross-border EU B2B and B2G
NLCIUSUBLXML fileYesDutch B2B and government
BIS A-NZ and SGUBLXML fileNot through Odoo's access point yetAustralia, New Zealand, Singapore

Odoo's code marks A-NZ and Singapore as valid Peppol formats not yet available through its own access point.

Factur-X vs XRechnung: what is the real difference?

Factur-X is a hybrid PDF that a person can read and a system can parse, while XRechnung is a pure XML file built for automated public-sector processing. Both meet EN 16931, but they suit different buyers.

Choose Factur-X or ZUGFeRD when customers still read or archive PDFs. The file works whether or not their software reads the XML.

Choose XRechnung when the buyer is a German public body, or a private company whose portal asks for it. XRechnung needs a buyer reference, which for German B2G is the Leitweg-ID, and Odoo fills the BuyerReference field from it.

Field coverage also differs in practice. On the Odoo forum, users found that invoice period dates appeared only in XRechnung, not in Factur-X, and one German user needed a custom build on Odoo 16. Test the fields your customers check.

Is ZUGFeRD in Odoo the same as Factur-X?

Yes, technically: Odoo builds ZUGFeRD and Factur-X from the same CII template and only changes the file name. German customers get a file named with _zugferd.xml, everyone else gets _factur_x.xml.

The French and German bodies behind the standard publish it jointly; the current release pairs Factur-X 1.09.2 with ZUGFeRD 2.5.2. Factur-X defines five profiles, from MINIMUM up to EXTENDED. Odoo writes its XML with the EXTENDED profile identifier, which conforms to EN 16931.

That matters in Germany. German guidance treats ZUGFeRD from version 2.0.1 as a valid e-invoice, except the MINIMUM and BASIC WL profiles. Odoo's output is above both, so a correctly filled ZUGFeRD invoice from Odoo counts as a structured e-invoice for German B2B.

Odoo also embeds a Factur-X XML in its invoice PDFs when you choose another format, for portability.

What does Peppol BIS mean in Odoo, and is it a format or a network?

Peppol is the network and Peppol BIS Billing 3.0 is the main invoice format that travels on it. Odoo acts as a Peppol access point and SMP, so you can send and receive without a third-party provider.

Odoo's electronic invoicing documentation says Peppol registration is free, works in Odoo Community, and supports sending BIS Billing 3.0, XRechnung CIUS and NLCIUS. Registration is usually activated within a day.

Peppol BIS Billing 3.0 is a UBL format that follows EN 16931 plus Peppol and national rules; the current release is from May 2026. Studio can add extra Peppol fields such as contract or project references.

Over Peppol, Odoo uses only formats its access point allows. A German customer set to ZUGFeRD gets Peppol BIS 3.0 instead, or XRechnung if they have a Leitweg-ID.

For Belgium, where Peppol is the mandate route, see our Odoo Peppol guide for Belgium.

Which format does Odoo choose by default for each customer?

Odoo suggests a format from the customer's country and identifiers, and you can override it on the customer's Accounting tab.

Customer countryFormats offeredOdoo's default suggestionOver Peppol
GermanyZUGFeRD, XRechnung, Peppol BISZUGFeRDPeppol BIS 3.0
Germany, with Leitweg-IDSameXRechnungXRechnung
FranceFactur-X, Peppol BISFactur-XPeppol BIS 3.0
NetherlandsNLCIUS, Peppol BISNLCIUSNLCIUS
Belgium and other Peppol countriesPeppol BISPeppol BIS 3.0Peppol BIS 3.0
Australia, New Zealand, SingaporeBIS A-NZ or BIS SGThe local BIS variantNot via Odoo's access point

To set the format yourself:

  1. Open the customer record from Accounting, then Customers.
  2. On the Accounting tab, pick the eInvoice format.
  3. Enter and verify the Peppol endpoint, usually a VAT or registry number.
  4. Set the sending method, for example by Peppol.
  5. Send one test invoice and check the XML first.

There is one Odoo 19 vs 20 detail for German public customers. Odoo 19.0 detects B2G when the Peppol EAS is 0204, while Odoo 20 reads a Leitweg-ID stored as a routing identifier. Check these records after an upgrade; our Odoo 19 vs Odoo 20 guide covers the wider choice.

Which e-invoice format should you choose in Odoo?

Rolling out e-invoicing? Price it first

Choose by buyer type and delivery channel first, then by country: Peppol BIS for Peppol-connected buyers, XRechnung for German public bodies, and Factur-X or ZUGFeRD for buyers who still take email. Work through these questions for each customer group.

  1. Is the buyer a public body? In Germany, use XRechnung with the Leitweg-ID. In France, B2G goes to Chorus Pro, which Odoo reaches through Peppol.
  2. Is the buyer on Peppol? Verify their endpoint in Odoo. If valid, send Peppol BIS 3.0, or NLCIUS for Dutch buyers.
  3. Is the buyer French and in scope for the domestic reform? Use Odoo's approved platform module, which sends in UBL. Factur-X stays useful for buyers outside the reform.
  4. Is the buyer German B2B, not on Peppol? ZUGFeRD by email is the practical default and counts as an e-invoice.
  5. Does the country run its own clearance system? Poland, Italy, Mexico and others need their own module, not one of these formats.
  6. Does the buyer's portal name a format? Then use that one, even if Odoo suggests another.

Want a budget for the setup across several countries? The free Odoo project estimate tool gives a first range in minutes.

How do country mandates change the format choice?

Mandates decide who must send or receive structured invoices and by when, which narrows the formats you can use. Our country posts cover the full setup.

  • Germany: all businesses must be able to receive e-invoices since 1 January 2025. Issuing becomes mandatory from 1 January 2027 for firms with prior-year turnover above EUR 800,000, and for nearly all firms from 1 January 2028. XRechnung and ZUGFeRD both qualify.
  • France: every company must receive e-invoices via an approved platform from 1 September 2026, and all must send from 1 September 2027. Odoo's France localization page says its platform receives Factur-X, UBL and CII but sends only UBL. Our France e-invoicing guide covers the PA setup.
  • Belgium: the B2B mandate runs on Peppol, so Peppol BIS 3.0 is the format.
  • Poland: KSeF uses its own FA(3) structure, not UBL or CII.
  • UAE: the UAE model uses PINT AE over accredited service providers; see our UAE e-invoicing setup guide.

If you trade into Germany from abroad, our Odoo implementation partner page for Germany explains how we run DACH rollouts.

What are the common Odoo e-invoice format problems?

Most format problems come from missing master data, not from the format itself. These are the issues we and other Odoo users see most often.

  • Two invoices in one email: an Odoo Online user found that sending ZUGFeRD attached both the PDF and a separate XML, so customer systems booked two invoices. Odoo 20 code now skips the separate XML when it is already embedded; test on your version.
  • Missing bank account: Odoo's CII builder requires payment instructions on outgoing invoices, so an invoice without a recipient bank account fails validation.
  • Wrong endpoint: a VAT number in the wrong EAS scheme makes Peppol verification fail. Verify every customer before sending.
  • No Leitweg-ID: German public customers without it get ZUGFeRD or Peppol BIS instead of XRechnung, and the portal rejects them.
  • Missing order fields: add order references or invoice periods with the Studio fields Odoo documents for Peppol.
  • Custom PDF layouts: a custom invoice template can lose the embedded XML unless it is added to Odoo's list of Factur-X templates.

Which e-invoice format fits your industry?

The industry changes who your buyers are, and the buyer type usually decides the format. Public-sector suppliers need XRechnung or Peppol, while trading firms mostly need hybrid PDFs plus Peppol.

IndustryPain or cost driverOdoo approachHow iVentureTeam helps
Public-sector suppliersPortals reject invoices without buyer referencesXRechnung with Leitweg-ID, Peppol deliveryLoad Leitweg-IDs, test portal acceptance
Wholesale and distributionMany buyers, mixed formats and channelsFormat per customer, Peppol where verifiedBuild a customer format map
ManufacturingOrder and delivery references on every invoicePeppol BIS with order reference fieldsAdd Studio fields, link sales orders
Professional servicesInvoice periods and contract referencesXRechnung or Peppol BIS with period datesMap timesheet periods to invoice fields
eCommerce and B2CFew structured invoice needsFactur-X PDF by emailKeep B2C simple, separate B2B rules
Healthcare and labsHospital buyers on Peppol or portalsPeppol BIS, NLCIUS in the NetherlandsVerify endpoints, set receiving journals

How iVentureTeam helps with Odoo e-invoice formats

We turn the format question into a tested customer map, so every buyer gets the file their system accepts. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.

  • Format map: each customer group matched to Factur-X, ZUGFeRD, XRechnung, Peppol BIS or a national format.
  • Peppol setup: registration, endpoint verification, receiving journals and Documents routing.
  • Country modules: France approved platform, Chorus Pro, German Leitweg-ID handling and other localizations.
  • Portal and EDI links: where a buyer needs a portal or a third-party network, our Odoo integration services build and monitor the connection.
  • Testing: sample invoices validated before go-live, and checks after every Odoo upgrade.

Odoo e-invoice formats case study: Fernando Tax Management

A Dutch tax practice moved to Odoo 18 with localized, compliance-ready reporting, the groundwork any e-invoicing rollout depends on. The firm works across the Netherlands and Curaçao.

The firm had outgrown a rigid legacy system. Hand-keyed data produced duplicate records, and reports had translation gaps.

We migrated the firm to Odoo 18 in 10 weeks, fixed a hidden journal lines issue, built custom tax compliance reports for both jurisdictions and corrected translation defects in the tax and reporting modules.

The firm now runs its processes on one Odoo platform and cut manual data entry by 60%. Clean accounting data like this is what makes structured formats such as NLCIUS work. Read the Fernando Tax Odoo accounting automation case study.

The bottom line on Odoo e-invoice formats

Use Peppol BIS wherever your buyer is on Peppol, XRechnung for German public bodies, and Factur-X or ZUGFeRD for buyers who still take email. Then follow each country's mandate for the rest.

Odoo 19 and 20 already include the formats most European firms need. The real work is master data: endpoints, Leitweg-IDs, bank accounts and buyer references. Get those right and test real files.

Ready to map your Odoo e-invoice formats?

Get a format review

Tell us your countries and buyer types, and we will tell you which formats to switch on. Get an Odoo e-invoice format review, call +91-90235-15208, or email business@iventureteam.com.

Frequently Asked Questions

What is the difference between Factur-X and XRechnung?

+

Factur-X is a PDF/A-3 invoice with CII XML embedded, readable by people and systems. XRechnung is a pure XML file, usually UBL in Odoo, built for German public-sector processing and requiring a buyer reference such as the Leitweg-ID.

Is ZUGFeRD the same as Factur-X?

+

Yes. Factur-X and ZUGFeRD are the same hybrid standard under two names. Odoo builds both from one CII template and only changes the XML file name for German customers.

Does Odoo support XRechnung?

+

Yes. Odoo 19 and 20 include a Germany (XRechnung) format to the XRechnung 3.0 rules. Odoo suggests it automatically when a German customer has a Leitweg-ID and can send it over Peppol.

Is Peppol a file format?

+

No. Peppol is a network of access points for exchanging documents. Peppol BIS Billing 3.0 is the main invoice format sent on it. Odoo acts as a free access point and also sends XRechnung and NLCIUS over Peppol.

Is Peppol registration in Odoo free?

+

Yes. Odoo's documentation says Peppol registration is free and available in Odoo Community. Activation usually completes within a day after you submit your company identifier, email and phone.

Which e-invoice format should a German company use in Odoo?

+

Use XRechnung for public-sector buyers with a Leitweg-ID. For private B2B buyers, ZUGFeRD by email or Peppol BIS over Peppol both meet the German e-invoice definition.

Does a normal PDF count as an e-invoice?

+

No. In Germany and France, a plain PDF is not a structured e-invoice. A Factur-X or ZUGFeRD PDF counts because it carries EN 16931 XML inside.

Can Odoo receive Factur-X and Peppol invoices from suppliers?

+

Yes. Odoo can receive Peppol documents as draft vendor bills or into the Documents app, and it reads UBL and CII XML from incoming files. French approved-platform reception accepts Factur-X, UBL and CII.

Do Odoo 19 and Odoo 20 offer different e-invoice formats?

+

No. Both offer the same seven UBL and CII formats. The main change is how Odoo 20 stores the German Leitweg-ID, so check B2G customers after upgrading.

Free e-invoicing and tax readiness check

Getting Odoo ready for Peppol e-invoicing?

We check your Odoo version, localization and invoice flows against Peppol e-invoicing, then send what to set up, what to test and the effort involved.

Free, with no obligation. A senior consultant replies within 12 business hours.

We use cookies to improve your experience

Essential cookies make the site work; with your permission we also use analytics to improve it. See our cookie policy.