eInvoice Viewer for PEPPOL & EN16931
eInvoice Viewer for PEPPOL & EN16931

eInvoice Viewer for PEPPOL & EN16931

0/5 (0 ratings) — active installs Updated Sep 21, 2026
The drag &amp; drop uploader rendered by the <code>[einvoice_viewer]</code> shortcode.

The drag &amp; drop uploader rendered by the <code>[einvoice_viewer]</code> shortcode.

➜ Try the live demo – upload an XRechnung, ZUGFeRD/Factur-X or Peppol BIS invoice and see it rendered instantly.

eInvoice Viewer for PEPPOL & EN16931 turns an uploaded electronic invoice into a clear, structured HTML view directly on your page – without any external service and without storing the file.

Add the [einvoice_viewer] shortcode to a page and your visitors can drag and drop an electronic invoice into the viewer. The document is read and rendered entirely in the visitor’s own browser – it is never uploaded to your server. The result (invoice header, parties, order and delivery data, payment details, line items, VAT breakdown and totals) appears instantly, without a page reload and without a single byte of the invoice ever crossing the network. The layout is inspired by the official ZUGFeRD Quba viewer and is rendered inside a Shadow DOM, so it looks identical in every theme.

Supported formats

  • ZUGFeRD / Factur-X (PDF) – the embedded XML is extracted and read automatically.
  • CII (UN/CEFACT) XML – read directly.
  • UBL / XRechnung (XML) – converted to CII internally and then read.

Highlights

  • Drag & drop uploader – vanilla JavaScript, no framework, no page reload.
  • Complete field coverage – all 164 EN 16931 business terms and all 32 business groups, verified against 125 official sample invoices. Empty fields are shown as placeholders on purpose, so you can see which terms the standard defines and which ones this invoice omitted.
  • Business-term labels with a short description – each field can carry its BT / BG code, and hovering it shows the term name plus a short description of the field in German, English or French. Further details (cardinality, data type, business rules) are provided by the separate “eInvoice Viewer – Technical Details” extension. Toggled live, per setting or via the shortcode attribute bt="1" / bt="0".
  • Trilingual – the interface is available in English, German and French.
  • Theme-independent – rendered inside a Shadow DOM with a full style reset, so no theme styles leak through.
  • The document never leaves your browser – reading and rendering both happen client-side; your server never receives the file, so there is nothing to store, log or leak in the first place.
  • Secure by design – the invoice is parsed by the browser’s own DOMParser (no server-side XML parser, so no XXE surface for the upload itself); every invoice value is escaped on output. Sibling paid extensions that genuinely need server-side processing (validation, export, …) keep their own independent upload, nonce and rate-limit handling.
  • Extensible – additional layouts can be added as a template subclass, and a structured-data API returns the whole invoice as a nested array. Two filters (spev_code_tooltip, spev_invoice_model) let an add-on extend the BT/BG tooltips and the invoice model itself.

Third-party libraries

Since reading moved into the browser, the only bundled third-party code is Mozilla pdf.js (assets/js/pdfjs/, Apache License 2.0, license text next to the files), used to pull the embedded XML out of a ZUGFeRD / Factur-X PDF. Everything else in vendor/ is this plugin family’s own code under GPL-2.0-or-later; composer.lock lists it.

Demo

Try the viewer without installing anything: live demo on invoicePress.de. Drop in your own e-invoice; it is read and rendered in your browser, exactly as on your own site. The plugin itself never contacts the demo site.