Gemessen, nicht behauptet
Validierungs-Engines im Vergleich
19 Validierungs-Engines prüfen dieselben 1.665 E-Rechnungen aus dem Beleggo-Datenkit — XRechnung, ZUGFeRD / Factur-X, Peppol BIS 3 und nationale CIUS, gültige wie fehlerhafte — auf derselben Maschine, ein Dokument nach dem anderen. Der offizielle KoSIT-Validator läuft als Referenz mit. Mustangproject und phive, die verbreitetsten Open-Source-Validatoren, stehen danach im Detail neben Beleggo.
Gemessen am 6. November 2026 auf linux x64, Intel(R) Xeon(R) Processor @ 2.10GHz × 4, 16 GiB, Node v22.23.4
| Engine | Laufzeit | Lizenz | Profile | Richtig | Fehlalarme | Übersehen | Regel benannt | Median | Speicher |
|---|---|---|---|---|---|---|---|---|---|
| Beleggoartefacts 2026-08-31 | JavaScript | proprietary | alle | 100 %1.665 Dokumente | 0 | 0 | 1.096 | 5,7 ms | 854 MB |
| dealerweb/einvoice1.2.2 | PHP 8 | MIT | 7 / 11 | 99,2 %1.186 Dokumente | 0 | 10 | 636 | 49 ms | 215 MB |
| KoSIT Validator1.6.3 · Validator Configuration XRechnung 3.0.2 2026-09-02 · Referenz | Java 11+ | Apache-2.0 | 1 / 11 | 98,6 %295 Dokumente | 0 | 0 | 431 | 8 ms | 1.623 MB |
| core-invoice (Rust CLI)2.0.3 | Rust | MIT OR Apache-2.0 | 2 / 11 | 90,3 %874 Dokumente | 33 | 52 | 345 | 2,3 ms | 33 MB |
| phive4.6.0 | Java 17+ | Apache-2.0 | alle | 89,8 %1.665 Dokumente | 0 | 160 | 925 | 8,4 ms | 942 MB |
| Mustangproject2.26.0 | Java 11+ | Apache-2.0 | 6 / 11 | 85 %1.077 Dokumente | 10 | 152 | 449 | 43 ms | 1.201 MB |
| en16931 (npm)0.1.0 | Node.js | MIT AND EUPL-1.2 | 1 / 11 | 84,6 %765 Dokumente | 2 | 113 | 403 | 76 ms | 336 MB |
| @kontor-mcp/core1.0.4 | Node.js | Apache-2.0 | 2 / 11 | 84,3 %1.060 Dokumente | 0 | 153 | 420 | 147 ms | 610 MB |
| verifyhash-einvoice0.2.9 | Python 3 | Apache-2.0 | 2 / 11 | 83,1 %1.060 Dokumente | 5 | 174 | 419 | 1,9 ms | 61 MB |
| verifaktura0.1.8 | Node.js | Apache-2.0 | 2 / 11 | 81,9 %810 Dokumente | 0 | 147 | 432 | 60 ms | 501 MB |
| EU ITB eInvoicing validator1.14.0-SNAPSHOT (2026-11-05) · CEN 1.3.16 | Java 17+ | EUPL-1.2 | 1 / 11 | 81,3 %765 Dokumente | 0 | 143 | 423 | 193 ms | 938 MB |
| einvoice-kit0.1.3 | Node.js | MIT | 1 / 11 | 80 %765 Dokumente | 1 | 152 | 367 | 1,1 ms | 150 MB |
| @attestwire/en169310.14.0 | Node.js | MIT | 3 / 11 | 80 %1.169 Dokumente | 12 | 222 | 381 | 1,5 ms | 151 MB |
| speedata/einvoicev0.0.22 | Go | BSD-3-Clause | 3 / 11 | 76,8 %1.169 Dokumente | 27 | 244 | 342 | 7,7 ms | 49 MB |
| stampbench (@stampbench/core)0.1.1 | Node.js | MIT | 2 / 11 | 71,9 %1.060 Dokumente | 13 | 285 | 219 | 1,6 ms | 326 MB |
| en16931 (Rust CLI)0.6.0 | Rust | MIT OR Apache-2.0 | 3 / 11 | 68,9 %1.169 Dokumente | 144 | 220 | 329 | 2,5 ms | 23 MB |
| @fin.cx/einvoice11.1.1 | Node.js | MIT | 2 / 11 | 59,7 %1.060 Dokumente | 25 | 402 | 110 | 11 ms | 372 MB |
| KoSIT Validator + ZUGFeRD configuration1.6.3 · Validator Configuration ZUGFeRD 2.5.2 2026-06-11 · Referenz | Java 11+ | Apache-2.0 | 4 / 11 | 52,9 %17 Dokumente | 0 | 8 | 63 | 4,7 ms | 939 MB |
| factur-x (akretion)6.8 | Python 3 | BSD-2-Clause | 4 / 11 | 52,9 %17 Dokumente | 0 | 8 | 15 | 0,3 ms | 66 MB |
„Profile“: wie viele der 11 Profile im Datenkit die Engine selbst zu prüfen angibt. „Richtig“: Anteil der Dokumente in diesen Profilen, bei denen das Urteil (gültig oder fehlerhaft) dem erwarteten entspricht; ein Dokument, das die Engine nicht beurteilen kann, zählt als falsch. Weil jede Engine andere Profile abdeckt, beziehen sich die Prozentwerte auf unterschiedlich viele Dokumente. Der KoSIT-Validator ist die amtliche Referenz für XRechnung. Gemessen 6. November 2026.
„Regel benannt“: von 1.096 fehlerhaften Mustern im ganzen Kit, wie viele die Engine ablehnt und dabei die verletzte Regel nennt. „Median“: Laufzeit pro Dokument nach dem Aufwärmen; „Speicher“: Spitze des ganzen Prozesses.
Nicht auf dem aktuellen Kit gemessen und deshalb nicht in der Tabelle: International.EInvoicing (.NET CLI): kein .NET-SDK auf dem Messrechner (zuletzt am 27.09.2026 über 722 Dokumente); @aifind/mustangjs: keine Antwort auf eine Rechnung mit 1.000 Positionen (DK-790) binnen 15 Minuten (zuletzt am 27.09.2026 über 722 Dokumente); Klarfakt: kein .NET-SDK auf dem Messrechner (zuletzt am 29.09.2026 über 722 Dokumente); john-wink/en16931-php: sein composer.lock lässt sich auf der PHP-Version des Messrechners nicht installieren (zuletzt am 29.09.2026 über 722 Dokumente); en16931 (Dart): kein Dart-SDK auf dem Messrechner (zuletzt am 29.09.2026 über 722 Dokumente).
| Kennzahl | Beleggo | Mustangproject | phive | Vorne |
|---|---|---|---|---|
| Richtige Urteile, alle Dokumentegegen das erwartete Urteil jedes Musters | 1.665 / 1.665 (100 %) | 1.112 / 1.665 (66,8 %) | 1.496 / 1.665 (89,8 %) | Beleggo |
| Richtige Urteile in Mustangs Profilennur die Profile, die Mustang selbst prüft | 1.077 / 1.077 (100 %) | 915 / 1.077 (85 %) | 912 / 1.077 (84,7 %) | Beleggo |
| Übereinstimmung mit dem KoSIT-Validatorauf allen XRechnung-Dokumenten — dem Bereich, für den der amtliche Validator zuständig ist | 291 / 291 (100 %) | 274 / 291 (94,2 %) | 278 / 291 (95,5 %) | Beleggo |
| Fehler mit der richtigen Regel benanntnicht nur abgelehnt, sondern die verletzte Regel genannt | 1.096 / 1.096 (100 %) | 449 / 1.096 (41 %) | 925 / 1.096 (84,4 %) | Beleggo |
| Geprüfte Profile im KitFormate, deren eigene Regeln die Engine kennt | 11 / 11 | 6 / 11 | 11 / 11 | Beleggo · phive |
| Kennzahl | Beleggo | Mustangproject | phive | Vorne |
|---|---|---|---|---|
| Laufzeit pro Dokument (Median)nach dem Aufwärmen | 5,7 ms | 43 ms | 8,4 ms | Beleggo |
| Laufzeit pro Dokument (95 %)die langsamen Dokumente | 19 ms | 78 ms | 27 ms | Beleggo |
| Dokumente pro Sekundeein Dokument nach dem anderen | 77,5 | 16,8 | 68,9 | Beleggo |
| Rechenzeit pro Dokumentaller Threads zusammen | 18 ms | 93 ms | 33 ms | Beleggo |
| Einzelaufruf (Start + erstes Dokument)was ein Kommandozeilenaufruf kostet | 385 ms | 5.832 ms | 3.943 ms | Beleggo |
| Arbeitsspeicher (Spitze)des ganzen Prozesses | 854 MB | 1.201 MB | 942 MB | Beleggo |
| InstallationsgrößeRegelwerke und Laufzeit, ohne Node.js bzw. Java | 16 MB | 56 MB | 58 MB | Beleggo |
Beleggo führt die amtlichen Schematron-Regeln als nach JavaScript übersetzten Code aus, gelesen aus denselben Stylesheets, die Saxon-JS ausführt, und auf allen Testkorpora mit Saxon-JS als Referenz gegengeprüft: gleiche Befunde, gleicher Text, gleiche Reihenfolge. Ein Dokument, das die übersetzten Regeln nicht genau beurteilen können, geht an Saxon-JS. Die Rechenzeit liegt über der Laufzeit, weil die Speicherbereinigung von Node.js auf eigenen Threads läuft. Im Browser läuft dieselbe Engine.
| Beleggo | Mustangproject | phive | |
|---|---|---|---|
| EN 16931 (UBL und CII) | ja | ja | ja |
| XRechnung 3 mit den amtlichen KoSIT-Schweregraden | ja | teilweise | teilweise |
| Peppol BIS 3 und Peppol-Länderregeln | ja | nein | ja |
| NLCIUS, CIUS-RO, HR-CIUS, CIUS-PT | ja | nein | ja |
| Factur-X-/ZUGFeRD-Profile (XSD und Schematron) | ja | ja | ja |
| Sichtbare PDF-Seite gegen das XML abgleichen | ja | nein | nein |
| Prüfziffern (IBAN, USt-IdNr., Leitweg-ID, Steuernummer …) | ja | nein | nein |
| Läuft im Browser, ohne Upload, ohne Server | ja | nein | nein |
| Vollständige PDF/A-3-Prüfung (alle Regeln der veraPDF-Profile) | ja | ja | nein |
| ZUGFeRD 1.0 und Order-X | ja | ja | nein |
| Französische CTC-Regeln (BR-FR Flux 2) als Fehler, in UBL und CII | ja | teilweise | ja |
| XRechnung-Schematron in der aktuellen Fassung (2.6.0) | ja | teilweise | ja |
| Peppol BIS 3 in CII | ja | nein | nein |
| EXTENDED-CTC-FR und Flux-10-E-Reporting (Frankreich) | ja | teilweise | ja |
| Nachrechnen jeder Position (Menge × Preis) | ja | ja | nein |
| Warnung, die schon als künftiger Fehler angekündigt ist | ja | nein | nein |
| Peppol PINT (EU, A-NZ, SG, JP, MY, AE, OM) — bei Beleggo in CLI und MCP, Regeln direkt von OpenPeppol geladen | ja | nein | ja |
| Peppol Invoice Response und Message Level Status | ja | nein | ja |
Mustang weicht bei 553 von 1.665 Dokumenten vom erwarteten Urteil ab, 391 davon in Profilen, die es gar nicht prüft. Die übrigen haben fünf Ursachen:
| Profil | Dokumente | Beleggo | Mustangproject | phive |
|---|---|---|---|---|
en16931 · cii | 184 | 184 | 126 | 121 |
en16931 · ubl | 419 | 419 | 340 | 339 |
en16931 · zugferd | 162 | 162 | 162 | 161 |
hr-cius · ubl | 45 | 45 | 5 | 45 |
nlcius · ubl | 20 | 20 | 9 | 19 |
peppol-bis3 · cii | 2 | 2 | 1 | 1 |
peppol-bis3 · ubl | 106 | 106 | 56 | 104 |
peppol-bis3 · zugferd | 1 | 1 | 1 | 1 |
pt-cius · ubl | 302 | 302 | 101 | 302 |
ro-cius · ubl | 112 | 112 | 24 | 112 |
xrechnung · cii | 172 | 172 | 160 | 164 |
xrechnung · ubl | 100 | 100 | 95 | 95 |
xrechnung · zugferd | 23 | 23 | 23 | 23 |
zugferd-basic · cii | 1 | 1 | 1 | 1 |
zugferd-basic · zugferd | 3 | 3 | 3 | 3 |
zugferd-basicwl · cii | 1 | 1 | 0 | 0 |
zugferd-basicwl · zugferd | 3 | 3 | 0 | 0 |
zugferd-extended · cii | 2 | 2 | 2 | 2 |
zugferd-extended · zugferd | 3 | 3 | 3 | 3 |
zugferd-minimum · cii | 1 | 1 | 0 | 0 |
zugferd-minimum · zugferd | 3 | 3 | 0 | 0 |
Datenkit 0.1.0 (a43e5b5fd46d8e73), 1.665 Dokumente, mit dem erwarteten Urteil jedes Musters als Maßstab. Dieses Urteil stammt aus dem Beleggo-Projekt; damit es nicht nur Beleggo bestätigt, ist jede Abweichung von Mustang von Hand gegen die Spezifikationen geprüft, und der amtliche KoSIT-Validator läuft als unabhängige Referenz mit. Wo er anders urteilt als Beleggo, fehlt ihm die Regel: die französischen CTC-Regeln und eine Factur-X-Codeliste.
Beleggo artefacts 2026-08-31, Mustangproject 2.26.0, phive 4.6.0 (mit allen phive-rules-Modulen; das Regelwerk wählt phives eigene Dokumenterkennung), KoSIT-Validator 1.6.3 · Validator Configuration XRechnung 3.0.2 2026-09-02. Jede Engine läuft in einem eigenen Prozess, der die ganze Messung über lebt — so misst die Laufzeit die Engine und nicht den Start der Java-VM.