invoicePress - EN16931 e-Invoice Viewer
invoicePress – e-Invoice Viewer — Upload & visualize e-invoices (ZUGFeRD, Factur-X, XRechnung) on your WordPress site Let your visitors drop an electronic invoice onto your page and see it as a clear, structured view instantly — without any external service and without storing the file. A standalone WordPress plugin that reproduces the core function of the ZUGFeRD Quba viewer, right inside a simple shortcode. Whether you offer an e-invoice demo, a validation helper, or a cus…
All source code listed on this site is collected from the internet. If any listing infringes your rights, please contact us and we will remove it immediately.
Description
invoicePress – e-Invoice Viewer — Upload & visualize e-invoices (ZUGFeRD, Factur-X, XRechnung) on your WordPress site
Let your visitors drop an electronic invoice onto your page and see it as a clear, structured view instantly — without any external service and without storing the file. A standalone WordPress plugin that reproduces the core function of the ZUGFeRD Quba viewer, right inside a simple shortcode.
Whether you offer an e-invoice demo, a validation helper, or a customer-facing viewer, this plugin reads ZUGFeRD / Factur-X PDFs and CII / UBL / XRechnung XML files and renders every invoice field — optionally with the matching EN 16931 business-term numbers (BT-…). The result is displayed inline via AJAX, inside a Shadow DOM, so it looks identical in every theme.
Why you’ll love it
- Reads all common e-invoice formats. ZUGFeRD / Factur-X (PDF), CII (UN/CEFACT) XML and UBL / XRechnung XML — the embedded XML is extracted from PDFs automatically.
- ️ Drag & drop uploader. Vanilla JavaScript, no framework, no page reload — the structured view appears inline.
- Complete field coverage. Invoice header, parties, order and delivery data, payment, line items, VAT breakdown, totals, notes and attachments — empty fields shown as placeholders, just like the Quba viewer.
- EN 16931 business terms. Show or hide the BT numbers live, per setting or via the shortcode attribute bt=”1” / bt=”0”.
- Theme-independent. Rendered inside a Shadow DOM with a full style reset, so no theme styles leak through — identical look everywhere.
- No storage. The file is read from the temporary upload only and is never saved.
- ️ Secure by design. XXE protection, upload validation (extension + MIME + size), nonce-based CSRF protection with a live nonce, and a per-visitor daily rate limit.
- Translatable. Text domain sp-einvoice-viewer; German translation included.
Key features
Supported invoice 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.
Modern, Quba-inspired layout
A single-scroll layout with coloured section tabs (filled = data present, light = empty section): a hero header with the highlighted amount due, followed by invoice data, buyer, seller, order/contract data, delivery information, payment, line items, VAT breakdown, totals, notes and attachments. All fields are always shown — even empty ones — exactly like the original viewer.
EN 16931 business terms (BT numbers)
Each field can be labelled with its EN 16931 business-term number. Visitors toggle the numbers live via a switch in the viewer, and you set the default per embed via the shortcode attribute bt=”1” / bt=”0” or globally in the settings. The field mapping was verified against the official EN 16931 specification.
Theme independence via Shadow DOM
The viewer is rendered inside a Shadow DOM with a full :host style reset and px units throughout, so no inheritable theme styles (font, size, colour, line-height) cross the boundary. The result looks identical in every WordPress theme.
Security & privacy
XXE protection (DOCTYPE rejection, no external entity loader, no network access while parsing), upload validation (extension + finfo MIME check + size limit), nonce-based CSRF protection with a live nonce against page caching, and a per-visitor daily upload rate limit. The file is processed in memory only and is never stored; every invoice value is escaped on output.
Extensible template engine
The data extraction is separated from the HTML rendering, so additional layouts can be added as a template subclass without touching the extraction logic.
Why not pixel-perfect to Quba? The Quba viewer transforms with the KoSIT XRechnung XSLT 3.0 via Saxon-JS; PHP only supports XSLT 1.0. An own, Quba-inspired PHP template is used instead — functionally equivalent, but not the identical KoSIT markup.
How it works
- Add the [einvoice_viewer] shortcode to any page or post.
- The visitor drops an invoice (PDF or XML) into the viewer.
- The file is validated, rate-limited and read on the server; the invoice is rendered to HTML and returned via AJAX.
- The structured view is inserted inline — the file is never stored.
Settings
- Daily uploads per visitor — limit per calendar day (0 = unlimited).
- Maximum file size — capped by the WordPress upload limit.
- Trust proxy header — use X-Forwarded-For for the client IP (only behind a trusted reverse proxy).
- Show BT numbers by default — visitors can still toggle.
- Layout template — the active view (more can be added).
What’s included
- The plugin (shortcode, uploader, renderer, settings and the bundled horstoeko libraries).
- English and German translations (text domain sp-einvoice-viewer).
- Full documentation in English and German (README + feature overview).
Requirements & compatibility
- WordPress 5.8+ (tested up to 6.9)
- PHP 7.4+
- The bundled vendor/ directory (horstoeko libraries) inside the plugin folder
Changelog
2.0.1
- Business-term corrections, verified against the official EN 16931 specification (BT-115, BT-28/BT-33, BT-56/BT-41, BT-10, BT-47/BT-30 and the added scheme fields BT-47-1 / BT-30-1).
- Updated and recompiled translations.
- Renamed the plugin to “invoicePress – e-Invoice Viewer”; switched the text domain to sp-einvoice-viewer and hardened input handling for the WordPress coding standards.
2.0.0
- New rectangular Quba-style layout with coloured section tabs and a dedicated card group per line item.
- Introduced the template engine (data model separated from HTML rendering).
- Many more fields (BT-127 to BT-160, payment cards, delivery details and more).
- Colours matched to the invoicePress logo.
Related products
More digital goods in the same category or with similar tags.
WordPress / eCommerce
Paymaster - Multipurpose Payment Gateway
WordPress / eCommerce
2Checkout Payment Gateway - Easy Digital Downloads
WordPress / eCommerce
Shopify for WordPress
WordPress / eCommerce
All Purpose Currency Converter
WordPress / eCommerce
EDD Stripe Payment Gateway
WordPress / eCommerce
Contact Form 7 Square Payment Addon
WordPress / eCommerce
PayPal Button - PayPal plugin for WordPress
WordPress / eCommerce
Easy Digital Downloads Product Audio Sampler Player
invoicePress - EN16931 e-Invoice Viewer
After successful payment, you will receive a download link for the source code