DEV Community

Tanod Labs
Tanod Labs

Posted on

How to open an XRechnung, Factur-X or FatturaPA invoice without uploading it

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.xml or zugferd-invoice.xml is pulled out of the PDF with pdf.js, then rendered.
  • FatturaPA: FPR12 and FPA12, batches, and signed .p7m files (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 DOCTYPE or ENTITY declaration 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)