The European Union's directive on electronic invoicing (Directive 2014/55/EU) and the subsequent EN 16931 semantic data model established a unified standard for electronic invoices across member states. However, while the semantic model defines the business terms (BTs) of an invoice, the standard permits two distinct XML syntaxes:
- UBL 2.1 (Universal Business Language) — OASIS Standard ISO/IEC 19845
- UN/CEFACT CII (Cross Industry Invoice) — D16B XML syntax
Understanding the architectural differences, validation rules, and tooling around these formats is crucial for finance engineers building automated invoicing and tax compliance pipelines.
The Semantic Core vs. Syntax Bindings
EN 16931 separates the semantic data model (what information an invoice must contain) from the syntax binding (how that information is serialized).
+-------------------------------------------------------------+
| EN 16931-1 Semantic Data Model |
| (Business terms: Seller, Buyer, Lines, Totals, VAT breakdown)|
+-------------------------------------------------------------+
|
+--------------+--------------+
| |
v v
+-------------------------------+ +-------------------------------+
| EN 16931-3-1: UBL 2.1 | | EN 16931-3-2: UN/CEFACT CII |
| (urn:oasis:names:specification| | (urn:un:unece:uncefact:data |
| :ubl:schema:xsd:Invoice-2) | | :standard:CrossIndustry...) |
+-------------------------------+ +-------------------------------+Both syntaxes can represent 100% of the mandatory and optional business terms defined in the European standard. However, national implementations have created preferences across member states, which you can monitor by jurisdiction on the EU E-Invoicing Tracker.
National Syntax Preferences in the EU
| Country | Mandated / Preferred Syntax | Platform / Gateway |
|---|---|---|
| France | Factur-X (Hybrid PDF/A-3 + CII) & UBL | Chorus Pro & PDPs |
| Germany | XRechnung (both UBL & CII accepted), ZUGFeRD | Peppol, ZRE, OZG-RE |
| Italy | FatturaPA (national XML schema; Peppol gateway translates to/from UBL) | SDI (Sistema di Interscambio) |
| Poland | FA_VAT XML (national schema for KSeF) | KSeF 2.0 |
| Spain | Facturae (B2G), transitioning to EN 16931 for B2B | FACe, VeriFactu |
| Nordics (SE, FI, DK, NO) | Peppol BIS Billing 3.0 (UBL 2.1 exclusive) | Peppol Network |
Peppol BIS Billing 3.0: The Dominant UBL Profile
In practice, the vast majority of cross-border European e-invoicing traffic runs through the OpenPeppol network using the Peppol BIS Billing 3.0 specification.
Peppol BIS Billing 3.0 is a strict CIUS (Core Invoice Usage Specification) of EN 16931. It exclusively uses UBL 2.1:
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>INV-2026-0042</cbc:ID>
<cbc:IssueDate>2026-09-17</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<!-- ... -->
</Invoice>Every valid Peppol BIS Billing 3.0 invoice is guaranteed to satisfy the EN 16931 standard, but not every EN 16931 invoice satisfies Peppol's tighter business rules (e.g. required electronic address schemes like EAS 0088 / GLN or EAS 9901 / Hungarian tax number).
Factur-X and ZUGFeRD: The Hybrid CII Approach
Germany and France pioneered the hybrid e-invoice model through the synchronized ZUGFeRD 2.2 / Factur-X specification.
A hybrid invoice is a standard PDF/A-3 visual document with an embedded XML file:
- Visual layer: High-fidelity PDF readable by human clerks, accountants, and auditors.
- Structured layer:
factur-x.xmlattached inside the PDF, containing the complete UN/CEFACT CII invoice document.
+------------------------------------------------------------+
| PDF/A-3 Visual Container |
| |
| +------------------------------------------------------+ |
| | Invoice #INV-2026-0042 | |
| | Bill To: Acme Corp GmbH | |
| | Total: €12,500.00 | |
| +------------------------------------------------------+ |
| |
| Embedded File Attachment: |
| [factur-x.xml] -> Valid UN/CEFACT CII D16B Document |
+------------------------------------------------------------+Why Hybrid Matters for SMEs
Hybrid PDF/A-3 invoices eliminate the friction of migrating suppliers who do not yet possess automated ERP ingestion systems. Small businesses can print or visually inspect the PDF, while automated systems extract and validate the XML attachment directly.
Validating VAT Identifiers in E-Invoicing Payloads
Under EN 16931, both UBL and CII require strict validation of seller and buyer VAT identification numbers:
- Seller VAT ID (
BT-31): Must begin with the 2-letter ISO country code (orELfor Greece). Check format syntax using our VAT Format Validator. - Tax Representative VAT ID (
BT-63): Required if the seller acts through a tax representative. - Buyer VAT ID (
BT-48): Required for reverse-charge cross-border transactions under Article 196.
If an invoice payload carries an unverified or formatted incorrectly VAT identifier:
- Peppol Access Points (SMP/SML routing) will fail document delivery.
- Tax authority gateways (like Chorus Pro or SDI) immediately reject the submission with syntax error codes.
- Buyer accounts payable systems flag the invoice for manual dispute.
Automated Validation Pattern
Before serializing into UBL or CII XML, validate the counterparty VAT number using the VAT Number Lookup tool:
import { validateVatNumber } from "@vat-tools/sdk";
const result = await validateVatNumber({
countryCode: "FR",
vatNumber: "76834079813",
});
if (result.outcome !== "valid") {
throw new Error(`Cannot issue e-invoice: Counterparty VAT is ${result.outcome}`);
}
// Attach authoritative consultation number to invoice metadata
invoice.accountingSupplierParty.partyTaxScheme.companyID = result.vatNumber;Conclusion & Architecture Recommendations
- Default to UBL 2.1 / Peppol BIS 3.0 for pan-European cross-border B2B invoicing. It has the widest cross-border gateway interoperability.
- Support Factur-X / CII if transacting heavily with French or German counterparties who prefer hybrid PDF/A-3 workflows.
- Verify VAT numbers at source: Always validate buyer VAT registration against live authority registers (VIES) before dispatching electronic invoices to prevent costly rejections and payment delays.
Frequently Asked Questions
What is the difference between UBL 2.1 and UN/CEFACT CII?
Both UBL 2.1 and UN/CEFACT CII are approved syntax representations for the EN 16931 semantic invoice model. UBL is maintained by OASIS and is the exclusive syntax used by the OpenPeppol network across Scandinavia and international trade. UN/CEFACT CII is an international standard maintained by the UN and serves as the XML payload embedded in French Factur-X and German ZUGFeRD hybrid PDF/A-3 invoices.
Is Peppol BIS Billing 3.0 mandatory for cross-border invoicing?
While the EU Directive 2014/55/EU mandates that public sector entities accept any EN 16931-compliant invoice, Peppol BIS Billing 3.0 has become the de facto operational standard for cross-border business-to-government (B2G) and business-to-business (B2B) transactions due to its centralized 4-corner discovery network (SML/SMP).
Why are German and French buyers adopting hybrid PDF/A-3 Factur-X invoices?
Hybrid invoices combine a human-readable visual PDF with an embedded machine-readable XML file (factur-x.xml). This allows small suppliers and accounting teams without fully automated ERP ingestion pipelines to inspect the PDF normally, while sophisticated enterprise AP workflows automatically extract and reconcile the structured CII data without OCR errors.