Since 1 January 2025 every business in Germany must be able to receive structured e-invoices, and since 1 September 2026 so must every VAT-registered business in France. The trouble is what arrives: an XML file (XRechnung, UBL, CII), a PDF with an XML file hidden inside it (ZUGFeRD, Factur-X), or in Italy a signed .p7m envelope around FatturaPA XML. None of these open nicely in a normal viewer.
Most free online viewers solve this by asking you to upload the invoice. An invoice carries names, addresses, VAT IDs, bank details and prices, so uploading it to a site you know nothing about is a poor trade.
Reading it in the browser instead
We built a set of viewers that do all the work in the page:
- XRechnung: UBL 2.1 invoices and credit notes, and UN/CEFACT CII.
-
ZUGFeRD / Factur-X: the embedded
factur-x.xmlorzugferd-invoice.xmlis pulled out of the PDF with pdf.js, then rendered. -
FatturaPA: FPR12 and FPA12, batches, and signed
.p7mfiles (the CMS envelope is unwrapped in JavaScript; the signature is not verified, and the page says so). - KSeF: Polish FA(2) and FA(3), including corrections.
- Peppol BIS / UBL: invoices and credit notes, also inside an SBDH envelope.
Every format is mapped to one model based on the EN 16931 business terms (seller, buyer, VAT IDs, lines, VAT breakdown, totals, payment details) and shown as a readable invoice, with "print or save as PDF", a JSON export and a raw XML view.
How it stays safe
- The file is read with the File API and parsed with
DOMParser; there is no request with a body and no request to another site. - Any
DOCTYPEorENTITYdeclaration is refused before parsing, so entity-expansion tricks do not apply. - Every value is written with
textContent, never as HTML. - Attachments inside the invoice are offered only as downloads.
It is a viewer, not a validator: it does not check the invoice against the EN 16931 rules or transmit anything.
Try it: XRechnung viewer · Factur-X / ZUGFeRD · FatturaPA · KSeF · Peppol / UBL. All in 12 languages, free, no account.
Top comments (0)