Account
English

UBL Invoice Viewer

Open a UBL 2.1 invoice XML and read it like a normal invoice. Works for Peppol, XRechnung-UBL, NLCIUS and any EN 16931 file.

Files are processed in memory and never stored.

What is a UBL invoice?

UBL (Universal Business Language) is the OASIS XML vocabulary behind most European e-invoices. An EN 16931 UBL invoice starts with <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"> and uses the cac: and cbc: namespaces for its elements. Country profiles (XRechnung, Peppol BIS, NLCIUS, the Belgian and Italian CIUS) all build on the same structure, which is why one viewer can show them all.

Where UBL invoices come from

ProfileCountry / networkCustomization ID starts with
Peppol BIS Billing 3.0Belgium, Netherlands, Nordics, Peppol network worldwideurn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
XRechnung (UBL syntax)German public sectorurn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
NLCIUSDutch government and businessesurn:cen.eu:en16931:2017#compliant#urn:fdc:nen.nl:nlcius:v1.0
Generic EN 16931Any EU country, ERP exportsurn:cen.eu:en16931:2017

The viewer reads the customization ID, names the profile in the header and chooses the matching labels. A file without a customization ID is shown as plain UBL 2.1.

UBL or CII?

EN 16931 allows two XML syntaxes for the same invoice content. UBL is used by Peppol and by most Western and Northern European profiles; UN/CEFACT CII is used inside ZUGFeRD and Factur-X and as the second XRechnung syntax. The data model is identical, only the element names differ: cbc:ID in UBL is ram:ID in CII, cac:InvoiceLine becomes ram:IncludedSupplyChainTradeLineItem. This page accepts both and renders them identically, so you do not need to know which one you received.

Reading the XML yourself

If you only have a text editor, these are the elements that matter: cbc:ID (invoice number), cbc:IssueDate, cbc:DueDate, cbc:DocumentCurrencyCode, cac:AccountingSupplierParty and cac:AccountingCustomerParty (seller and buyer with cac:PartyTaxScheme/cbc:CompanyID as VAT number), cac:PaymentMeans/cac:PayeeFinancialAccount/cbc:ID (IBAN), cac:TaxTotal (VAT breakdown) and cac:LegalMonetaryTotal/cbc:PayableAmount (amount due). The viewer does exactly this mapping and adds the code-list labels, so a VAT category S reads as "standard rate".

What you get

Frequently asked questions

Does this page validate the invoice too?

It shows syntax problems and a quick EN 16931 check. For the complete rule sets use the profile pages: <a href="/peppol-validator/">Peppol validator</a> for BIS Billing 3.0 and <a href="/xrechnung-viewer/">XRechnung</a> for German files.

UBL 2.0, 2.1 or 2.3: which one is it?

EN 16931 invoices use the UBL 2.1 Invoice and CreditNote schemas. Later UBL releases (2.2, 2.3) are backwards compatible for invoices, so files declared as 2.1 remain valid. Older UBL 2.0 files from pre-2017 systems are opened, but shown as legacy.

Does it also read CII invoices?

Yes. UN/CEFACT Cross Industry Invoice (CII D16B) files, used by XRechnung-CII, ZUGFeRD and Factur-X, are rendered the same way.

Can I convert UBL to PDF?

Open the file here and use the browser print dialog with "Save as PDF". The rendered layout is designed for A4 printing.

Developers: same engine as an API

curl -F file=@invoice.pdf https://einvoicechecker.com/v1/validate
curl -F file=@invoice.xml https://einvoicechecker.com/v1/parse
curl -F file=@invoice.xml "https://einvoicechecker.com/v1/render?lang=en" -o invoice.html