Peppol Hybrid PDF — Embed UBL in Your Invoice PDF
Embed the Peppol BIS Billing 3.0 / EN 16931 UBL XML inside the standard Odoo invoice PDF for hybrid, human-and-machine readable delivery.
One PDF, two readers
A hybrid invoice is a single PDF that a person can open and read, and a machine can parse. This module attaches a structured Peppol BIS Billing 3.0 UBL document inside the standard Odoo invoice PDF — the same Associated-Files / PDF/A-3 embedding mechanism that Factur-X and ZUGFeRD use, applied to UBL. Your customer receives one file; their accounting system extracts the structured data, while everyone else simply reads the page.
EN 16931 UBL builder
A genuine OASIS UBL 2.1 serialiser producing a Peppol BIS Billing
3.0 Invoice or CreditNote: document header
(ibt-001..024), supplier/customer parties with their Peppol electronic
address endpoints and EAS scheme, payment means, VAT breakdown
(TaxTotal / TaxSubtotal) and legal monetary totals.
PDF/A-3 embedding
The UBL is embedded as a named attachment wired into the document
catalog’s /AF (Associated Files) array and the
/Names /EmbeddedFiles name tree, with the correct
/AFRelationship and an XMP metadata packet declaring the
embedded file. Existing attachments are preserved.
Round-trip verified
After embedding, the module re-extracts the UBL from the produced PDF and compares it byte-for-byte. Every embed is recorded in an audit log with sizes, document type and a verified flag, so you can prove the machine-readable payload is really inside the file you sent.
Pre-embed validation
Before serialising, a business-rule check runs the EN 16931 / Peppol rules that would otherwise make the attachment worthless to a receiving access point: invoice number, dates, ISO currency, party country, VAT category codes, standard-rate vs zero-rate consistency and the BR-CO total derivation chain.
Features
| Capability | What it does |
|---|---|
| Generate UBL only | Produce and attach the Peppol BIS Billing 3.0 UBL XML to the invoice without touching the PDF. |
| Embed UBL in PDF | Render the standard invoice PDF and embed the UBL into it, storing a downloadable hybrid PDF on the invoice. |
| Download hybrid PDF | One click to download the hybrid PDF (generates it on demand if not yet produced). |
| Batch wizard | Validate or embed many selected customer invoices at once, with a per-invoice result log and skip-invalid option. |
| Scheduled embedding | An optional, disabled-by-default cron that drains posted invoices flagged for hybrid delivery. |
| Credit notes | Full support for customer credit notes (UNTDID 1001 type 381) with a reference to the original invoice. |
| Peppol endpoints | Per-partner electronic address ID + EAS scheme, with a sensible country-based default when not set. |
| Audit log | A searchable log model recording every embed, its result and round-trip verification. |
Standards & scope
- Peppol BIS Billing 3.0 — CustomizationID
urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0, ProfileIDurn:fdc:peppol.eu:2017:poacc:billing:01:1.0. - EN 16931 semantic model in OASIS UBL 2.1 syntax.
- Code lists: UNTDID 1001 document types, UNCL5305 VAT category codes, UNTDID 4461 payment means, UN/ECE Rec 20 units, Peppol EAS (ICD) schemes.
- PDF/A-3 Associated Files embedding (ISO 32000-2 relationship
/Data).
This is a pure format-and-embed utility. It produces the structured payload and bakes it into your PDF; it does not connect to any Peppol access point and does not require any vendor accreditation. You keep full control of how the hybrid PDF is delivered.
How it works
- Enable Embed Peppol UBL in PDF on your company and set the default EAS scheme.
- Set the Peppol endpoint ID / scheme on your customers (optional; falls back to the VAT number and a country default).
- On a posted customer invoice, click Validate Peppol UBL, then Embed UBL in PDF.
- Download the hybrid PDF and deliver it — the structured UBL travels inside the file.
Screenshots
Embed Logs
Update date: 2026-07-02