(e)Invoice Viewer for PEPPOL & EN16931

Alle 164 Business Terms, sichtbar

Jedes Feld einer E-Rechnung. Auf Ihrer eigenen Seite.

Ein Shortcode macht aus Ihrer WordPress-Seite einen vollständigen E-Rechnungs-Leser. Der Besucher zieht eine ZUGFeRD-/Factur-X-PDF oder eine XRechnung-/UBL-XML in die Seite und sieht sofort das ganze Dokument – strukturiert, lesbar, bis zum letzten Detailfeld. Ohne externen Dienst, ohne API-Schlüssel, und die Datei wird nie gespeichert.

164

Business Terms

32

Business Groups

125

geprüfte Beispielrechnungen

3

Sprachen

Echte Ausgabe, kein Mockup

So sieht eine eingelesene Rechnung aus: Kopfzeile mit Rechnungsnummer, Datum, Währung und Zahlbetrag, darunter die Felder Zeile für Zeile — jedes mit seiner EN-16931-Kennung daneben.


Dieselbe Rechnung ohne eingeblendete BT-Kennungen: reine Leseansicht mit Kopfband, Rechnungsdaten sowie Käufer- und Verkäuferangaben

Ohne Kennungen: die reine Leseansicht für alle, die einfach nur die Rechnung sehen wollen.

Positionsangaben, USt-Aufschlüsselung und Summenblock des Viewers mit geöffnetem Tooltip zur Definition von BT-106

Positionen, USt-Aufschlüsselung und Summen — beim Überfahren einer Kennung steht die amtliche Definition aus der Norm.

Was der Viewer liest

Drei Eingänge, eine Darstellung.

Note Note

ZUGFeRD / Factur-X (PDF)

Die eingebettete XML wird automatisch aus dem PDF-Objektbaum geholt und gelesen. Ein PDF ohne eingebettete Rechnung wird sauber abgelehnt.

Search Search

CII (UN/CEFACT) XML

Wird direkt gelesen – der Weg, den XRechnung-CII und ZUGFeRD/Factur-X gemeinsam haben.

Tools Tools

UBL XML

XRechnung-UBL und Peppol BIS Billing 3.0, einschließlich Gutschriften/CreditNote-Dokumente werden wie Rechnungen behandelt und als Gutschrift ausgewiesen.

Das Format wird am Dokument selbst erkannt, nicht an der Dateiendung: eine .xml mit UBL und eine mit CII funktionieren beide, ohne dass der Besucher etwas auswählen muss.

Vollständige EN-16931-Abdeckung

164 von 164 Business Terms. Gemessen, nicht behauptet.

Alle 164 Business Terms und alle 32 Business Groups werden ausgelesen und dargestellt – auch die Blöcke, die die meisten Viewer auslassen. Die Abdeckung ist gegen den Beispielkorpus gemessen, nicht geschätzt.

BG-10 Zahlungsempfänger — BT-59, BT-60, BT-61

BG-11 / 12 Steuervertreter des Verkäufers — BT-62 … BT-69, BT-164

BG-20 / 21 Nachlässe und Zuschläge auf Dokumentebene — BT-92 … BT-105, mit Basisbetrag, Prozentsatz und Grundcode

BG-27 / 28 Nachlässe und Zuschläge auf Positionsebene — BT-136 … BT-145, in derselben Tiefe

Steuer BT-7 Steuerstichtag, BT-8 Fälligkeitscode, BT-121 Befreiungsgrundcode

Summen BT-111 Umsatzsteuer in Buchungswährung, BT-114 Rundungsbetrag

Referenzen BT-18 Objektkennung, BT-19 Buchungsreferenz, BT-26 Datum der Vorgängerrechnung

Leere Felder werden bewusst gezeigt

Ein Feld ohne Wert erscheint als „—“ statt zu verschwinden. Genau darin liegt der Sinn einer Business-Term-Ansicht: zu sehen, welche Terms die Norm vorsieht und welche diese Rechnung ausgelassen hat. Leere Felder auszublenden würde genau diese Information verstecken.

Die BT-/BG-Kennungen selbst lassen sich ein- und ausblenden, live vom Besucher umgeschaltet, ohne Neuladen – der Ausgangszustand kommt je Einbindung aus dem Shortcode (bt=“1″ / bt=“0″) oder global aus den Einstellungen.

Drei Sprachen, aus der Spezifikation

Beim Überfahren einer Kennung steht die amtliche Definition.

Jede BT-/BG-Kennung trägt beim Überfahren den normativen Term-Namen samt vollständiger Definition – in Deutsch, Englisch oder Französisch, der Sprache der Seite folgend.

Der Wortlaut stammt unverändert aus der Factur-X-Spezifikation, nicht umformuliert: Was dort steht, steht auch bei einer Prüfung. Die Oberfläche selbst ist vollständig in alle drei Sprachen übersetzt.

BT-31 · Umsatzsteuer-Identifikationsnummer des Verkäufers
BT-31 · Seller VAT identifier
BT-31 · Identifiant à la TVA du vendeur

Codierte Werte zeigen Code und Bezeichnung

Jedes Feld, dessen Wert aus einer Referenztabelle stammt, wird aufgelöst – Dokumentart, Zahlungsart, Maßeinheit, Steuerkategorie, Land, Kennungsschema und Schema der elektronischen Adresse.

BT-3 380 – Commercial invoice

BT-29-1 0088 – EAN Location Code

BT-81 30 – Credit transfer

BT-130 H87 – piece

BT-151 S – Standard rate

Datum, Zahlen und Beträge folgen der Seite: das Datumsformat aus Einstellungen → Allgemein, die Trennzeichen aus der aktiven Locale.

Darstellung

Sieht auf jeder Seite gleich aus.

  • Shadow DOM statt Theme-Roulette

    Die Ansicht wird in einem Shadow DOM mit vollständigem :host-Reset gerendert. Kein Theme-Styling dringt hinein, die Darstellung ist auf jeder Website identisch.

  • Einspaltiges Layout im Quba-Stil

    Farbige Abschnitts-Reiter zeigen auf einen Blick, welcher Block Daten trägt (gefüllt) und welcher leer ist (hell). Je Rechnungsposition eine Kartengruppe, dazu Steueraufschlüsselung, Summen, Hinweise und Anhänge.

  • Ohne Framework

    Drag-and-drop-Uploader in reinem JavaScript, Ergebnis per AJAX direkt in der Seite – kein Neuladen, keine Bibliothek im Frontend.

Sicherheit und Datenschutz

Die Rechnung verlässt Ihren Server nicht.

  • Keine Speicherung

    Die Datei wird aus dem temporären Upload gelesen und verworfen. Nichts landet in der Mediathek, im Uploads-Verzeichnis oder in der Datenbank – und es geht kein einziger ausgehender HTTP-Aufruf an einen fremden Dienst.

  • XXE-gehärtet

    Eine DOCTYPE-Deklaration wird abgewiesen, bevor libxml das Dokument sieht; der External-Entity-Loader ist aus, LIBXML_NONET verbietet Netzzugriff beim Parsen.

  • Upload-Prüfung und Tageslimit

    Endung, echter finfo-MIME-Test, Größenlimit (durch wp_max_upload_size() gedeckelt) und is_uploaded_file(). Dazu ein Tageslimit je Besucher – angemeldet nach Benutzer-ID, sonst nach gehashter IP – und ein live geholtes Nonce, damit Seiten-Caching keins veralten lässt.

Für Entwickler

Ein Shortcode – und darunter eine saubere Kante.

Einbinden

Ein Shortcode genügt. Setzen Sie einvoice_viewer in eckigen Klammern auf eine beliebige Seite. Mit dem Attribut bt=“1″ starten die Business-Term-Kennungen sichtbar, mit bt=“0″ verborgen – umschalten kann der Besucher jederzeit selbst.

Das EN-16931-Wissen liegt in einer eigenen Schicht (includes/core/), sauber getrennt vom WordPress-Teil – dadurch bleibt der Plugin-eigene Code klein und prüfbar. Keine PDF-Bibliothek zum Schreiben, keine Template-Engine, kein Framework wird mitgeschleppt.

SPEV_Renderer::model() gibt die ganze Rechnung als verschachteltes Array zurück – für Exporte, eigene REST-Endpunkte oder eine eigene Darstellung; model_json() liefert dasselbe als JSON-String. Die Form des Modells ist als versioniertes JSON-Schema festgehalten, abgeleitet aus dem tatsächlichen Output. Ein eigenes Layout ist eine Klasse; die Ausleselogik bleibt unangetastet.

Wer die Ansicht nicht per Shortcode, sondern aus eigenem Code anfordern will, kann statt der AJAX-Aktion auch die REST-Route POST /wp-json/einvoice/v1/render verwenden. Beide rufen denselben Code auf, keine der beiden ist veraltet.

Filter und Aktionen

spev_template — aktives Layout

spev_label_locale — Sprache der Term-Namen, unabhängig von der Seite

spev_date_format — Datumsformat der Rechnungsdaten

spev_client_ip — IP-Ermittlung für das Tageslimit

spev_code_tooltip — Tooltip um eigene Angaben erweitern (Kardinalität, Datentyp, XPath …)

spev_invoice_model — ganze zusätzliche Abschnitte an das Modell anhängen

spev_register_templates — Aktion, über die ein Begleit-Plugin eigene Layouts von außen registriert

Spielt mit den Nachbarn zusammen

Ist der KoSIT-Validator aktiv, erscheint nach einem XML-Upload ein Knopf, der dieselbe Datei zusätzlich validieren lässt – ohne zweiten Dateidialog. Ist das Export-Modul aktiv, kommt ein „Export nach Excel“ dazu, nach jedem Upload, PDF wie XML. Ist der Visualizer aktiv, stehen in den Einstellungen vier weitere, druckorientierte Layouts zur Wahl. In allen Fällen bleibt es bei einem Upload und einer Ergebnisansicht.

Geprüft

125 amtliche Beispielrechnungen.

25 / 25 ZUGFeRD 2.5 EN16931, XML

25 / 25 ZUGFeRD 2.5 EN16931, Factur-X-PDF

33 / 33 XRechnung-Testsuite, CII

33 / 33 XRechnung-Testsuite, UBL

9 / 9 Peppol BIS Billing 3.0 (inkl. Gutschrift)

Business-Term-Abdeckung über den gesamten Korpus: 164 / 164 BT und 32 / 32 BG.

Die XRechnung-Suite ist dabei besonders nützlich, weil sie dieselben Fälle in beiden Syntaxen liefert – damit prüfen sich der CII- und der UBL-Weg gegenseitig.

Ein PDF ohne eingebettete XML wird korrekt abgelehnt, ebenso fehlerhaftes XML und jedes Dokument mit DOCTYPE.

Zuletzt erneut geprüft, nachdem die Lese-Engine gewechselt wurde: dieselben 125 Dateien werden weiterhin gelesen, die absichtlich rechnungsfremde PDF im Korpus weiterhin abgewiesen.

Voraussetzungen: WordPress 5.8+ (getestet bis 7.1), PHP 8.2+.

Laden Sie eine eigene Rechnung hoch.

Die Demo läuft mit demselben Plugin, das Sie auf Ihrer eigenen Seite einsetzen würden. Nichts wird gespeichert.