Handbuch
eInvoice Validator for MustangInstallieren, arbeiten, einstellen
invoicePress / Handbücher / eInvoice Validator for Mustang

eInvoice Validator for Mustang – Handbuch

Gilt für Fassung 1.7.0. Stand 26.10.2026.

1 · Überblick

Der eInvoice Validator for Mustang ist ein WordPress-Plugin. Es stellt auf einer Seite Ihrer Website eine Ablagefläche bereit, auf der ein Besucher eine E-Rechnung ablegt. Die Rechnung wird von dem Validator des Mustangproject geprüft, den Sie selbst auf Ihrem Server abgelegt haben. Der Prüfbericht erscheint danach auf der Seite und lässt sich als Datei herunterladen.

Das Plugin richtet sich an Betreiber einer WordPress-Website, die eine Rechnungsprüfung auf dem eigenen Server anbieten wollen: für Kunden, für Lieferanten oder für die eigenen Kolleginnen und Kollegen.

Achtung: Das Plugin enthält keinen Validator und lädt auch keinen herunter. Es startet die Datei Mustang-CLI.jar, die an dem Pfad liegt, den Sie einstellen. Es ist ein unabhängiges Werkzeug von invoicePress und kein Produkt des Mustangproject.

Was das Plugin kann

  • Es stellt mit einem Kurzbefehl eine Ablagefläche für E-Rechnungen auf eine Seite oder in einen Beitrag.
  • Es nimmt ZUGFeRD- und Factur-X-PDF sowie CII- und UBL-XML entgegen, per Ziehen und Ablegen oder über die Dateiauswahl.
  • Es liest bei einem PDF die eingebettete Rechnung schon im Browser aus und sendet nur dieses XML an Ihren Server.
  • Es startet für jede Prüfung den Mustang-Validator auf Ihrem Server und zeigt dessen Bericht in einer verständlichen Ansicht mit Regeltexten und Fachbegriffen.
  • Es heftet die hochgeladene Rechnung an den Bericht, damit die Fundstellen in der Belegansicht an ihrer Stelle stehen.
  • Es bietet den unveränderten Bericht des Validators als report.xml zum Herunterladen an.
  • Es begrenzt die Zahl der Prüfungen je Besucher und Kalendertag sowie die Dateigröße.
  • Es prüft auf der Einstellungsseite, ob der Validator startbereit ist, und überwacht mit einer Prüfsumme, ob die jar-Datei noch die ist, der Sie zugestimmt haben.
  • Es gibt einer Rechnung, die im eInvoice Viewer geöffnet ist, den Knopf Mit Mustang prüfen.
  • Es bringt Übersetzungen für Deutsch und Französisch mit; die Ausgangstexte sind englisch.

Was das Plugin nicht kann

  • Es prüft nichts ohne den Mustang-Validator und ohne Java auf dem Server.
  • Es prüft bei einem PDF nur die eingebettete Rechnung. Die PDF-Datei selbst erreicht den Server nicht und wird deshalb nicht untersucht.
  • Es liest kein gewöhnliches oder gescanntes PDF; ein PDF ohne eingebettete Rechnung wird mit einer Meldung abgewiesen.
  • Es speichert weder Rechnungen noch Berichte und führt keine Liste früherer Prüfungen.
  • Es spricht den Validator nur auf einem Weg an: als Java-Prozess auf demselben Server. Einen entfernten Prüfdienst kann es nicht ansprechen.

Voraussetzungen

WasAnforderung
WordPressab Version 6.0
PHPab Version 8.2
Javaeine Java-Laufzeitumgebung ab Fassung 11, auf dem Server installiert und für den Benutzer des Webservers aufrufbar
Mustang-Validatordie Datei Mustang-CLI.jar, von Ihnen selbst von der Website des Mustangproject geladen und auf dem Server abgelegt
ServerPHP muss ein Java-Programm starten dürfen; der Benutzer des Webservers muss die jar-Datei lesen können
Browser des BesuchersJavaScript eingeschaltet
Bildschirmfoto fehltscreenshots/vm-ablage.de.pngDie Ablagefläche auf einer WordPress-Seite mit der Aufforderung, eine E-Rechnung hineinzuziehen oder eine Datei zu wählen, darunter die Zeile mit den angenommenen Formaten
Die Ablagefläche auf einer WordPress-Seite mit der Aufforderung, eine E-Rechnung hineinzuziehen oder eine Datei zu wählen, darunter die Zeile mit den angenommenen Formaten

2 · Installieren

ZIP-Datei hochladen

Bezug über wordpress.org

Der Bezug über das Plugin-Verzeichnis von wordpress.org ist vorgesehen, das Plugin ist dort aber noch nicht veröffentlicht. Sobald es dort steht, finden Sie es über die Suche unter „Plugins" und „Plugin hinzufügen".

Den Validator bereitstellen

Diese Schritte gehören zur Installation, denn ohne sie prüft das Plugin nichts.

Den Validator über einen Prüfdienst erreichen

Darf Ihr Webspace kein Java ausführen oder keine Programme starten, prüft das Plugin über einen Prüfdienst. Ein Prüfdienst ist eine von zwei Arten von Dienst, die dieselben Adressen anbieten:

  • Validator Bridge: ein kleiner freier Dienst, der Mustang auf diesem oder einem anderen Rechner ausführt und über HTTP anbietet. Ihre Anleitung liegt bei ihr.
  • eInvoice API: eine WordPress-Website mit dem Plugin eInvoice API, die die Prüfung an ihre eigene Bridge weiterreicht und dafür einen Schlüssel und ein Kontingent vergibt.

Pfad, java-Programm und die Unversehrtheit der jar betreffen dann nicht mehr dieses Plugin, sondern den Prüfdienst.

Aktualisieren

Sie ersetzen das Plugin durch die neue Fassung, indem Sie die neue ZIP-Datei hochladen. Solange das Plugin nicht auf wordpress.org steht, meldet WordPress eine neue Fassung nicht von sich aus. Ihre Einstellungen bleiben erhalten. Die jar-Datei des Validators aktualisiert das Plugin nicht; das tun Sie selbst (siehe Kapitel 6).

Entfernen

Sie deaktivieren und löschen das Plugin unter „Plugins". Die jar-Datei und Java bleiben auf dem Server, denn beide gehören nicht zum Plugin. Das Plugin legt in der Datenbank die Einstellungen spmv_jar_path, spmv_java_bin, spmv_timeout_seconds, spmv_role_limits ( die Tabelle je Rolle; bis zu ihrem ersten Speichern gilt der frühere Einzelwert spmv_daily_limit ), spmv_max_filesize_mb, spmv_trust_proxy und spmv_jar_sha256 an, dazu die Zähler der Tagesgrenze. Das Plugin räumt beim Löschen nicht auf: Die Einstellungen bleiben in der Datenbank stehen. Die Zähler verfallen nach einem Tag von selbst.

3 · Erste Schritte

Bildschirmfoto fehltscreenshots/vm-systempruefung.de.pngDer Abschnitt „Systemprüfung" der Einstellungsseite mit grünen Haken in allen Zeilen und der Meldung, dass der Validator gestartet werden kann
Der Abschnitt „Systemprüfung" der Einstellungsseite mit grünen Haken in allen Zeilen und der Meldung, dass der Validator gestartet werden kann
Bildschirmfoto fehltscreenshots/vm-shortcode.de.pngDer WordPress-Editor mit einer Seite, die nur den Kurzbefehl in eckigen Klammern enthält
Der WordPress-Editor mit einer Seite, die nur den Kurzbefehl in eckigen Klammern enthält
Bildschirmfoto fehltscreenshots/vm-bericht.de.pngDie Seite nach einer Prüfung: oben die Ablagefläche, darunter der Prüfbericht mit Befunden in verständlicher Sprache und dem Knopf zum Herunterladen
Die Seite nach einer Prüfung: oben die Ablagefläche, darunter der Prüfbericht mit Befunden in verständlicher Sprache und dem Knopf zum Herunterladen

4 · Arbeiten mit dem Validator

Eine Rechnung ablegen

Der Besucher zieht eine Datei auf die Ablagefläche oder klickt darauf und wählt eine Datei. Die Fläche lässt sich auch mit der Tastatur bedienen: Die Eingabetaste oder die Leertaste öffnet die Dateiauswahl. Angenommen werden Dateien mit der Endung .pdf oder .xml. Während der Validator läuft, nimmt die Fläche keine zweite Datei an.

Ein PDF prüfen lassen

Ein ZUGFeRD- oder Factur-X-PDF trägt die Rechnung als XML-Anhang in sich. Diesen Anhang liest das Plugin im Browser des Besuchers aus; währenddessen steht dort die Meldung, dass die Rechnung aus dem PDF gelesen wird. An den Server geht nur das XML. Die dafür nötigen Skripte werden erst geladen, wenn wirklich ein PDF abgelegt wird. Enthält das PDF keine Rechnung, sagt die Meldung das ausdrücklich.

Auf den Bericht warten

Für jede Prüfung startet Java neu. Die ersten Sekunden sind deshalb Anlauf und keine Prüfung. Für eine gewöhnliche Rechnung wurden mit Mustang-CLI 2.25.0 insgesamt rund zwei Sekunden gemessen. Solange die Prüfung läuft, steht unter der Ablagefläche ein Hinweis.

Den Bericht lesen

Der Bericht erscheint unter der Ablagefläche. Das Plugin zeigt ihn in einer verständlichen Ansicht: Die Befunde des Validators stehen dort mit Regeltexten und Fachbegriffen, und die hochgeladene Rechnung ist als Beleg angeheftet, sodass jede Fundstelle an ihrer Stelle im Beleg steht. Lässt sich diese Ansicht nicht aufbauen, zeigt das Plugin eine einfachere Berichtsansicht; der Bericht bleibt in jedem Fall lesbar. Die Darstellung ist von der Gestaltung Ihres Themes abgeschirmt.

Den Bericht herunterladen

Über dem Bericht steht der Knopf „report.xml herunterladen", daneben die Zeile „Prüfbericht". Der Knopf speichert den Bericht genau so, wie der Mustang-Validator ihn ausgegeben hat. Der Dateiname setzt sich aus dem Namen der Rechnung und dem Zusatz -report.xml zusammen, zum Beispiel rechnung-4711-report.xml.

Bildschirmfoto fehltscreenshots/vm-download.de.pngDer Kopf des Berichts mit der Beschriftung „Validation report" und dem Knopf „Download report.xml"
Der Kopf des Berichts mit der Beschriftung „Validation report" und dem Knopf „Download report.xml"

Die Tagesgrenze sehen

Unter der Ablagefläche steht „Verbleibende Uploads heute: …" mit der Zahl der Prüfungen, die dem Besucher an diesem Tag noch bleiben. Die Zahl sinkt nach jeder Prüfung, die einen Bericht geliefert hat. Eine abgelehnte Datei zählt nicht mit. Ist die Grenze erreicht, erhält der Besucher die Meldung „Das tägliche Upload-Limit ist erreicht. Bitte morgen erneut versuchen."

Den Validator überwachen

Der Abschnitt „Systemprüfung" der Einstellungsseite wird bei jedem Laden der Seite neu gerechnet und nie zwischengespeichert. Er hat drei Zeilen: „PHP darf fremde Prozesse starten ( proc_open )", „Eine Java-Laufzeitumgebung ist erreichbar" und „Mustang-CLI.jar liegt dort, wo die Einstellungen es sagen". Jede Zeile trägt einen grünen Haken oder ein rotes Kreuz, und bei einem Kreuz steht darunter der nächste Schritt. Der Knopf „Validator prüfen" fasst das Ergebnis in einer Zeile zusammen und nennt gegebenenfalls die offenen Prüfungen.

Die jar-Datei absichern

Die Mustang-CLI.jar ist ausführbarer fremder Code auf Ihrem Server. Der Abschnitt „Unversehrtheit der jar" zeigt deshalb zwei SHA-256-Prüfsummen: unter „Übernommen" die Datei, der Sie zugestimmt haben, und unter „Auf der Festplatte" die Datei, die jetzt am Pfad liegt. Mit „Die Datei auf der Festplatte annehmen" übernehmen Sie die vorhandene Datei. Weichen beide Werte später voneinander ab, bleibt die Prüfung gesperrt, bis Sie die Datei erneut annehmen oder die frühere zurücklegen. „Angenommene Prüfsumme vergessen" löscht die gemerkte Prüfsumme; danach wird jede jar-Datei gestartet, die am Pfad liegt.

Bildschirmfoto fehltscreenshots/vm-jar-integritaet.de.pngDer Abschnitt „Unversehrtheit der jar" mit den beiden Prüfsummen „Übernommen" und „Auf der Festplatte" und den zwei Knöpfen darunter
Der Abschnitt „Unversehrtheit der jar" mit den beiden Prüfsummen „Übernommen" und „Auf der Festplatte" und den zwei Knöpfen darunter

5 · Einstellungen

Die Einstellungsseite finden Sie unter „Einstellungen" und „E-Rechnungs-Validator Mustang". Sie brauchen dafür das Recht, Einstellungen zu verwalten. Die Tabellen nennen die deutschen Beschriftungen, wie sie auf einer deutschen Website erscheinen.

Bildschirmfoto fehltscreenshots/vm-einstellungen.de.pngDie Einstellungsseite mit dem Abschnitt „Mustang-Validator": Pfad zur jar-Datei, Java-Programm, Zeitgrenze, Tagesgrenze, Dateigröße, Proxy-Kopfzeile und Design-Kit
Die Einstellungsseite mit dem Abschnitt „Mustang-Validator": Pfad zur jar-Datei, Java-Programm, Zeitgrenze, Tagesgrenze, Dateigröße, Proxy-Kopfzeile und Design-Kit

Abschnitt „Mustang-Validator"

EinstellungStandardWirkung
Weg zum Validatorlokale Installation„Lokale Installation: Java auf diesem Server“ startet Mustang-CLI.jar auf dem Webserver. „Prüfdienst ( Validator Bridge oder eInvoice API )“ schickt die Rechnung an den Prüfdienst unter der Adresse darunter.
Adresse des PrüfdienstesleerNur mit dem Prüfdienst. Bei einer Bridge die Adresse, die sie beim Start nennt, zum Beispiel http://127.0.0.1:8090. Bei der eInvoice API einer Website deren REST-Adresse, zum Beispiel https://example.com/wp-json/einvoice-api/v1.
API-Schlüssel des PrüfdienstesleerBei einer Bridge auf einem Server einer der Schlüssel aus api.keys ihrer Einstellungsdatei. Bei der eInvoice API Ihr API-Schlüssel dieser Website. Eine Bridge auf demselben Rechner braucht keinen.
Pfad zu Mustang-CLI.jarleerDer vollständige Pfad zur jar-Datei einschließlich des Dateinamens, zum Beispiel C:\mustangproject\Mustang-CLI-2.25.0.jar. Über dem Feld steht, ob am Pfad eine Datei gefunden wurde und wie groß sie ist.
java-ProgrammleerBleibt das Feld leer, wird java aus dem Suchpfad des Webserver-Benutzers verwendet. Dieser Suchpfad ist oft ein anderer als der Ihrer eigenen Kommandozeile. Findet die Systemprüfung Java nicht, tragen Sie hier den vollständigen Pfad ein.
Zeitgrenze ( Sekunden )60Die Zeit, die eine Prüfung höchstens dauern darf. Das Eingabefeld verlangt mindestens 5.
Tägliche Uploads je Rollejede Rolle 10Eine Tabelle mit einer Zeile für Gäste ( nicht angemeldet ) und je einer Zeile für jede Rolle der Website. Je Zeile gilt: leer heisst unbegrenzt, 0 heisst kein Zugang, eine Zahl heisst so viele Prüfungen je Kalendertag. Angemeldete Benutzer werden je Benutzer gezählt, Gäste je IP-Adresse. Wer mehrere Rollen hat, bekommt den grosszügigsten Wert. Administratoren sind nie begrenzt. Bis die Tabelle zum ersten Mal gespeichert ist, gilt für jede Rolle der bisherige einzelne Wert.
Maximale Dateigröße ( MB )8Die größte angenommene Datei. Es gilt der kleinere Wert aus dieser Einstellung und der Upload-Grenze des Servers.
Proxy-Header vertrauenausVerwendet die Kopfzeile X-Forwarded-For als Adresse des Besuchers. Schalten Sie das nur hinter einem vertrauenswürdigen Reverse-Proxy ein.
Design-KitKit HDas Aussehen von Ablagefläche und Bericht. Zur Wahl stehen die beiden mitgelieferten Kits A und H. Die Wahl gilt für alle eInvoice-Werkzeuge auf dieser Website, nicht nur für dieses Plugin.

Abschnitt „Systemprüfung"

ElementStandardWirkung
Tabelle der Prüfungen–Zeigt je Prüfung einen Haken oder ein Kreuz, bei einem Kreuz mit dem nächsten Schritt. Wird bei jedem Laden der Seite neu gerechnet.
Knopf „Validator prüfen"–Meldet „Bereit — der Validator lässt sich starten." oder „Nicht bereit:" mit der Liste der offenen Prüfungen.

Abschnitt „Unversehrtheit der jar"

ElementStandardWirkung
Übernommen„noch nichts übernommen"Die SHA-256-Prüfsumme der Datei, der Sie zugestimmt haben. Sie wird nicht getippt, sondern nur per Knopf übernommen.
Auf der Festplatte–Die Prüfsumme der Datei, die jetzt am eingestellten Pfad liegt.
Knopf „Die Datei auf der Festplatte annehmen"–Berechnet die Prüfsumme der vorhandenen Datei und merkt sie. Währenddessen steht „Die Prüfsumme wird gebildet …"; das dauert bei einer großen Datei spürbar. Laden Sie die Seite danach neu.
Knopf „Angenommene Prüfsumme vergessen"–Löscht die gemerkte Prüfsumme. Danach wird jede Datei am Pfad gestartet.

Kurzbefehl

KurzbefehlAttributeWirkung
[spmv_mustang_validator]keineSetzt die Ablagefläche mit Meldungszeile und Berichtsbereich an diese Stelle.
[spmv_mustang_validator]

Der Kurzbefehl kennt keine Attribute. Alles Einstellbare steht auf der Einstellungsseite und gilt für jede Stelle, an der der Kurzbefehl steht.

6 · Besondere Fälle

Die Rechnung nennt eine neuere Fassung als die, die Mustang kennt. Nennt eine Rechnung in BT-24 XRechnung 4.0 oder die Norm EN 16931-1:2026, prüft Mustang sie mit den Regeln der älteren Fassung, die es kennt, und kann sie dabei gültig nennen. Über dem Bericht steht dann ein gelber Hinweis, dass Mustang diese Fassung noch nicht kennt und sein Ergebnis nur für die ältere Fassung gilt. Am Bericht selbst ändert der Hinweis nichts.

Sie wollen den Mustang-Validator auf eine neue Fassung bringen. Legen Sie die neue jar-Datei auf den Server. Hat sie einen anderen Dateinamen, tragen Sie den neuen Pfad ein und speichern Sie. Die Prüfsummen weichen nun voneinander ab und die Prüfung ist gesperrt. Klicken Sie auf „Die Datei auf der Festplatte annehmen", dann läuft sie wieder.

Sie wollen die Prüfung nur einem geschlossenen Kreis anbieten. Setzen Sie den Kurzbefehl auf eine Seite, die Sie mit den Mitteln von WordPress schützen, etwa mit einem Passwort oder als private Seite. Angemeldete Benutzer werden bei der Tagesgrenze je Benutzer gezählt.

Sie wollen intern ohne Tagesgrenze prüfen. Leeren Sie in „Tägliche Uploads je Rolle" die Zeilen der Rollen, die prüfen sollen. Tun Sie das nur auf einer Website, die nicht öffentlich erreichbar ist, denn jede Prüfung startet einen Java-Prozess auf Ihrem Server.

Ihre Website steht hinter einem Reverse-Proxy. Dann sieht WordPress als Adresse der Besucher die des Proxys. Schalten Sie „Proxy-Header vertrauen" ein, damit die Tagesgrenze je Besucher zählt. Lassen Sie den Schalter aus, wenn kein vertrauenswürdiger Proxy davorsteht, denn die Kopfzeile lässt sich sonst vom Besucher selbst setzen.

Der Kurzbefehl steht nicht im Seiteninhalt, sondern in einer Vorlage oder einem Widget. Das Plugin lädt seine Dateien, sobald der Kurzbefehl ausgegeben wird. Wenn Sie die Dateien schon vorher auf bestimmten Seiten laden wollen, gibt es dafür den Filter spmv_force_enqueue (siehe Kapitel 10).

Java wird nicht gefunden, obwohl es installiert ist. Der Webserver läuft unter einem eigenen Benutzer mit eigenem Suchpfad. Tragen Sie unter „java-Programm" den vollständigen Pfad zum Java-Programm ein.

7 · Zusammenspiel mit anderen Paketen

Das Plugin ist eigenständig. Es braucht kein anderes Paket von invoicePress, und die verständliche Berichtsansicht ist eingebaut.

PaketWas im Zusammenspiel gilt
Mustang-CLI des MustangprojectZwingend nötig. Das Plugin startet diese Datei; sie hat ihre eigene Lizenz und ihren eigenen Veröffentlichungsrhythmus.
eInvoice Validator for KoSITBeide Plugins dürfen auf derselben Website laufen. Jedes führt seine eigene Tagesgrenze; Prüfungen im einen verbrauchen nichts im anderen.
Andere eInvoice-Werkzeuge von invoicePressDie Einstellung „Design-Kit" gilt gemeinsam für alle. Wer sie hier ändert, ändert sie für alle.
eInvoice Viewer ab 2.35.0Eine im Viewer geöffnete Rechnung bekommt den Knopf Mit Mustang prüfen. Der Bericht erscheint dann im Viewer, und die Prüfung zählt gegen dieselbe Tagesgrenze wie auf der Seite mit dem Kurzbefehl. Auf der Einstellungsseite des Viewers legt „Erweiterungen verfügbar ab Rolle“ fest, wer den Knopf sieht.

8 · Wenn etwas nicht geht

Die Meldungen stehen hier im deutschen Wortlaut, so wie sie auf einer deutschen Website erscheinen.

AnzeichenUrsacheAbhilfe
Einstellungsseite: „Noch nicht konfiguriert."Es ist kein Pfad zur jar-Datei eingetragen.Den vollständigen Pfad zur Mustang-CLI.jar eintragen und speichern.
Einstellungsseite: „Unter diesem Pfad liegt keine Datei."Am Pfad liegt keine Datei, oder der Webserver darf sie nicht lesen.Schreibweise prüfen; unter Linux zählt Groß- und Kleinschreibung. Leserecht für den Benutzer des Webservers setzen.
Systemprüfung zeigt ein rotes KreuzEine Voraussetzung fehlt, zum Beispiel wird Java nicht gefunden.Den Hinweis unter der Zeile befolgen. Bei Java den vollständigen Pfad unter „java-Programm" eintragen.
„Die beiden weichen voneinander ab. Es wird nicht geprüft, bis Sie die Datei auf der Festplatte übernehmen — oder die wieder hinlegen, die Sie übernommen hatten."Die jar-Datei am Pfad ist nicht mehr die angenommene.Klären, warum sich die Datei geändert hat. Dann „Die Datei auf der Festplatte annehmen" klicken oder die frühere Datei zurücklegen.
Knopf meldet „Am eingestellten Pfad liegt keine lesbare Datei."Beim Annehmen wurde am Pfad keine lesbare Datei gefunden.Pfad und Leserecht prüfen.
Besucher: „Bitte wählen Sie eine PDF- oder XML-Datei."Die Datei hat eine andere Endung als .pdf oder .xml.Eine PDF- oder XML-Datei wählen.
Besucher: „Die Datei ist zu groß."Die Datei übersteigt die eingestellte Größe oder die Upload-Grenze des Servers.„Maximale Dateigröße ( MB )" erhöhen; wenn das nicht reicht, die Upload-Grenze des Servers.
Besucher: „Diese PDF enthält keine E-Rechnung. …"Das PDF hat keine Rechnung als XML-Anhang, es ist zum Beispiel nur gedruckt oder gescannt.Ein ZUGFeRD- oder Factur-X-PDF oder die XML-Datei verwenden.
Besucher: „Das tägliche Upload-Limit ist erreicht. Bitte morgen erneut versuchen."Die Tagesgrenze ist erreicht.Am nächsten Tag erneut prüfen oder in „Tägliche Uploads je Rolle" die Zahl der Rolle erhöhen.
„Dieses Werkzeug steht für Ihr Konto nicht zur Verfügung."Für die Rolle des Besuchers steht in „Tägliche Uploads je Rolle" eine 0.Als Betreiber für diese Rolle eine Zahl eintragen oder das Feld leeren.
Besucher: „Sicherheitsprüfung fehlgeschlagen. Bitte die Seite neu laden."Das Sicherheitsmerkmal der Anfrage ist abgelaufen oder ungültig.Die Seite neu laden und die Datei erneut ablegen.
Besucher: „Die Datei ist leer." oder „Die Datei konnte nicht gelesen werden."Die Datei hat keinen Inhalt oder ließ sich auf dem Server nicht lesen.Die Datei prüfen und erneut ablegen.
Besucher: „Bitte wählen Sie eine XML-Datei."Beim Server kam etwas an, das kein XML ist.Die Datei prüfen; eine XML-Datei muss wirklich XML enthalten.
Besucher: „Der Upload ist fehlgeschlagen. Bitte erneut versuchen."Die Übertragung ist gescheitert oder der Server hat nicht verwertbar geantwortet.Erneut versuchen. Bleibt es dabei, die Systemprüfung und das Fehlerprotokoll des Servers ansehen.
„Der Validator hat zu lange gebraucht und wurde gestoppt."Die Prüfung hat die Zeitgrenze überschritten.Bei einem langsamen Server „Zeitgrenze ( Sekunden )" erhöhen.
„Der Validator konnte nicht gestartet werden. Prüfen Sie das Java-Programm und den Pfad des Validators in den Einstellungen."Java oder die jar-Datei ließ sich nicht starten.Systemprüfung ansehen; „java-Programm" und „Pfad zu Mustang-CLI.jar" prüfen.
„Der Mustang-Validator ist nicht eingerichtet. …"Es ist kein Pfad eingetragen.Den Pfad auf der Einstellungsseite eintragen.
Auf der Seite steht [spmv_mustang_validator] als TextDas Plugin ist nicht aktiv.Das Plugin unter „Plugins" aktivieren.
Bildschirmfoto fehltscreenshots/vm-meldung-pdf.de.pngDie Ablagefläche mit der roten Meldung, dass das abgelegte PDF keine E-Rechnung enthält
Die Ablagefläche mit der roten Meldung, dass das abgelegte PDF keine E-Rechnung enthält

9 · Datenschutz und Sicherheit

Was im Browser bleibt. Ein abgelegtes PDF verlässt den Browser des Besuchers nicht. Das Plugin zieht dort das eingebettete XML heraus, und nur dieses wird gesendet. Der Bericht zum Herunterladen wird im Browser aus der Antwort des Servers erzeugt.

Was an den Server geht. Das XML der Rechnung geht an Ihre eigene WordPress-Website, also an Ihren Server. Bei der lokalen Installation startet das Plugin dort den Mustang-Validator als Java-Programm; was die jar-Datei des Mustangproject ihrerseits tut, liegt außerhalb des Plugins. Beim Prüfdienst schickt das Plugin die Rechnung an die Adresse, die Sie eingetragen haben, und sonst nirgendwohin. Mit Ihrer eigenen Validator Bridge bleibt sie in Ihrem Netz. Mit der eInvoice API einer fremden Website geht sie an deren Betreiber, und es gelten seine Datenschutzerklärung und seine Nutzungsbedingungen.

Was gespeichert wird. Die Rechnung wird für die Prüfung in ein eigenes Arbeitsverzeichnis kopiert, das nach dem Lauf wieder gelöscht wird; der Upload-Ordner von WordPress wird nicht berührt. Rechnung und Bericht werden nicht aufbewahrt. Gespeichert werden die Einstellungen, die gemerkte Prüfsumme der jar-Datei und die Zähler der Tagesgrenze. Für anonyme Besucher wird dabei die IP-Adresse nur als Hashwert verwendet, für angemeldete Benutzer zählt das Benutzerkonto.

Wie das Plugin den Server schützt.

  • Der Server nimmt nur XML an und liest kein PDF.
  • Jede Prüfung verlangt ein frisches Sicherheitsmerkmal, das die Seite eigens abruft; das funktioniert auch bei zwischengespeicherten Seiten.
  • Dateigröße und Tagesgrenze begrenzen, wie oft und womit der Java-Prozess gestartet wird.
  • Die Prüfsumme sperrt die Prüfung, sobald die jar-Datei nicht mehr der angenommenen entspricht.
  • Die Knöpfe der Einstellungsseite stehen nur angemeldeten Verwaltern offen.
  • Der Bericht wird in einem abgeschirmten Bereich der Seite dargestellt.

10 · Für Entwickler

ArtNameBedeutung
KonstanteSPMV_VERSIONFassung des Plugins; zugleich Versionsmerkmal an allen Skripten und Stylesheets.
KonstanteSPMV_FILE, SPMV_DIR, SPMV_URLHauptdatei, Verzeichnis und Adresse des Plugins.
KonstanteSPMV_SHORTCODEName des Kurzbefehls: spmv_mustang_validator.
Filterspmv_force_enqueueErhält true oder false und entscheidet, ob Skripte und Stylesheets schon beim Seitenaufbau geladen werden. Vorgabe: true, wenn der Inhalt einer Einzelseite den Kurzbefehl enthält.
REST-RoutePOST /wp-json/einvoice/v1/validate-mustangNimmt eine XML-Datei im Feld file entgegen; verlangt ein gültiges Sicherheitsmerkmal im Kopffeld X-WP-Nonce, das ein Programm vorher mit einem POST an admin-ajax.php und action=einvoice_nonce abholt. Antwort mit html, view, cssUrl, xml, filename, remaining. Fehler mit message und Status 400, 413, 415, 422 oder 429.
AJAX-Aktionspmv_nonceLiefert ein frisches Sicherheitsmerkmal für spmv_validate; auch für anonyme Besucher.
AJAX-Aktionspmv_validatePrüft die Datei im Feld file; auch für anonyme Besucher; Status 403 bei ungültigem Merkmal.
AJAX-Aktionspmv_jar_reload, spmv_jar_forget_pin, spmv_test_connectionKnöpfe der Einstellungsseite; nur mit dem Recht manage_options.
JavaScriptwindow.SPMV_renderReport( container, data )Stellt ein Prüfergebnis in einem Element dar; für die Wiederverwendung durch andere Skripte.
JavaScriptwindow.EInvoice.register( 'validator', … )Meldet dieselbe Funktion als renderReport in der gemeinsamen Registratur an.
Optionspmv_jar_path, spmv_java_bin, spmv_timeout_seconds, spmv_role_limits ( die Tabelle je Rolle; bis zu ihrem ersten Speichern gilt der frühere Einzelwert spmv_daily_limit ), spmv_max_filesize_mb, spmv_trust_proxy, spmv_jar_sha256Die Einstellungen in der Datenbank.
KlassenSPMV_Plugin, SPMV_SettingsAblauf und Einstellungsseite. SPMV_Plugin::adapter() liefert den eingerichteten Anschluss, SPMV_Plugin::ratelimit() die Tagesgrenze.

Die Ausgabe des Kurzbefehls steht in einem <template> innerhalb von <div class="spmv-host"> und wird vom Skript in einen Shadow Root verschoben. Stylesheets des Themes erreichen sie deshalb nicht. Die Textdomäne heißt einvoice-validator-for-mustang, die Übersetzungen liegen im Ordner languages.

11 · Fassungen

Ein Änderungsverlauf liegt dem Plugin in dieser Fassung nicht bei. Aus dem Quelltext geht Folgendes hervor:

FassungWas dazukam
1.6.1Ein Hinweis über dem Bericht sagt, wenn die Rechnung eine Fassung nennt, die Mustang noch nicht kennt, etwa XRechnung 4.0. Bericht und Hinweise sprechen vom „Ergebnis“ einer Prüfung.
1.6.0Die Tagesgrenze lässt sich je Rolle einstellen, mit einer eigenen Zeile für Gäste; 0 heißt kein Zugang. Eine im eInvoice Viewer ab 2.35.0 geöffnete Rechnung bekommt den Knopf „Mit Mustang prüfen“. Die Antworten erscheinen in der Sprache der Seite, auch für angemeldete Benutzer mit einer anderen Profilsprache.
1.5.2Alle Meldungen des Plugins sind übersetzt.
1.3.0Die Einstellung „Design-Kit", gemeinsam für alle eInvoice-Werkzeuge.
1.1.5Die Formatnamen PDF und XML sind in der Zeile unter der Ablagefläche hervorgehoben.
1.0.0Erste Fassung: Kurzbefehl, Ablagefläche, Prüfung, Bericht, Einstellungsseite mit Systemprüfung und Prüfsumme.

12 · Bilderliste

Diese Liste zeigt, welche Bildschirmfotos dieses Handbuch erwartet und welche im Ordner screenshots/ des Pakets gefunden wurden. Ein Bild heißt immer Kennung.Sprache.png, zum Beispiel vm-ablage.de.png. Fehlt die deutsche Fassung, zeigt das Handbuch die englische. Auf den Bildern sind nur Beispieldaten zu sehen.

StandDateiWas zu sehen ist
–vm-ablage.de.pngDie Ablagefläche auf einer WordPress-Seite mit der Aufforderung, eine E-Rechnung hineinzuziehen oder eine Datei zu wählen, darunter die Zeile mit den angenommenen Formaten
–vm-systempruefung.de.pngDer Abschnitt „Systemprüfung" der Einstellungsseite mit grünen Haken in allen Zeilen und der Meldung, dass der Validator gestartet werden kann
–vm-shortcode.de.pngDer WordPress-Editor mit einer Seite, die nur den Kurzbefehl in eckigen Klammern enthält
–vm-bericht.de.pngDie Seite nach einer Prüfung: oben die Ablagefläche, darunter der Prüfbericht mit Befunden in verständlicher Sprache und dem Knopf zum Herunterladen
–vm-download.de.pngDer Kopf des Berichts mit der Beschriftung „Validation report" und dem Knopf „Download report.xml"
–vm-jar-integritaet.de.pngDer Abschnitt „Unversehrtheit der jar" mit den beiden Prüfsummen „Übernommen" und „Auf der Festplatte" und den zwei Knöpfen darunter
–vm-einstellungen.de.pngDie Einstellungsseite mit dem Abschnitt „Mustang-Validator": Pfad zur jar-Datei, Java-Programm, Zeitgrenze, Tagesgrenze, Dateigröße, Proxy-Kopfzeile und Design-Kit
–vm-meldung-pdf.de.pngDie Ablagefläche mit der roten Meldung, dass das abgelegte PDF keine E-Rechnung enthält