E-Invoice Human-Readable PDF Renderer
Turn structured UBL 2.1 and UN/CEFACT CII (EN 16931) e-invoices into a styled, readable PDF your buyers can actually read
A structured e-invoice (UBL or CII XML) is built for machines, not for people. When a customer receives a Peppol, XRechnung, Factur-X or ZUGFeRD document, the human in accounts payable still needs a clear, printable page they can read, file and approve. This module generates exactly that: a styled, human-readable PDF rendition of any UBL 2.1 or UN/CEFACT CII e-invoice, fully offline, on the EN 16931 semantic model that every European mandate builds on.
Both syntaxes, one renderer
OASIS UBL 2.1
Reads Invoice and CreditNote documents in the UBL syntax used by Peppol BIS Billing 3.0, XRechnung (UBL flavour), OIOUBL, PINT and most national CIUS.
UN/CEFACT CII D16B
Reads CrossIndustryInvoice documents - the syntax embedded in Factur-X / ZUGFeRD and used by the XRechnung CII flavour and Peppol BIS CII. The syntax is detected automatically.
What you get
Faithful, complete layout
- Document type, number, issue / due / delivery dates
- Full supplier and customer blocks with VAT, registration number, electronic address and contact
- Line table with quantity, unit, unit price, VAT and net amount - including per-line allowances and charges
- Per-rate VAT breakdown table (BG-23)
- Document-level allowances and charges (BG-20 / BG-21)
- Totals, prepaid amount, rounding and the amount due
- "How to pay" block (means, IBAN, reference)
- Preceding-invoice reference for credit notes
Human-readable, not just machine codes
- Document type codes resolved to words via UNTDID 1001 (380 → Commercial invoice)
- VAT category codes via UNTDID 5305 (AE → VAT reverse charge)
- Unit of measure codes via UN/ECE Rec. 20/21 (C62 → piece, KGM → kilogram)
- Payment means via UNTDID 4461 (58 → SEPA credit transfer)
- Amounts formatted with the correct ISO 4217 minor units (EUR 2 decimals, JPY 0, BHD 3)
Built-in trust badge
A rendition is only useful if the buyer can trust it. The renderer re-derives every total rather than echoing the supplier's figures: it checks that the line nets sum to the line total, that allowances and charges reconcile, that taxable base plus VAT equals the grand total, and that each VAT category's base recomputes from the lines (EN 16931 BR-CO rules). The PDF shows a clear "Totals reconcile" badge - or lists the exact discrepancy.
How it fits your workflow
| Entry point | What happens |
|---|---|
| From an invoice | A server action on any invoice finds the attached UBL or CII XML and renders the buyer PDF in one click. |
| Render wizard | Upload any UBL or CII XML file; the syntax is detected and the PDF is generated and opened. |
| Renditions log | Every rendition is stored with its extracted summary, VAT breakdown and reconciliation result - searchable by syntax, document type, supplier and status. |
Technical notes
- Pure-Python parsers and renderer - fully offline, no external service, no data leaves your database.
- XML parsing is hardened against XXE (no entity or network resolution).
- Community-only dependencies:
account,web,mail. No Enterprise modules required. - Standard QWeb PDF report - works with your existing PDF engine.
- Compatible with Odoo 18 and Odoo 19.
This module produces a courtesy human-readable copy of the structured e-invoice. The structured XML remains the legally authoritative document.
Screenshots
Pdf Renditions
Render E Invoice
Update date: 2026-07-02