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 22. Oktober 2026 auf linux x64, Intel(R) Core(TM) Ultra 9 185H × 22, 62 GiB, Node v24.22.1
| Engine | Laufzeit | Lizenz | Profile | Richtig | Fehlalarme | Übersehen | Regel benannt | Median | Speicher |
|---|---|---|---|---|---|---|---|---|---|
| Beleggoartefacts 2026-08-31 | JavaScript | proprietary | alle | 100 %1.655 Dokumente | 0 | 0 | 1.086 | 5,7 ms | 962 MB |
| KoSIT Validator1.6.3 · Validator Configuration XRechnung 3.0.2 2026-09-02 · Referenz | Java 11+ | Apache-2.0 | 1 / 11 | 98,6 %285 Dokumente | 0 | 0 | 421 | 9,2 ms | 1.397 MB |
| core-invoice (Rust CLI)2.0.3 | Rust | MIT OR Apache-2.0 | 2 / 11 | 90,3 %874 Dokumente | 33 | 52 | 341 | 2,6 ms | 33 MB |
| phive4.6.0 | Java 17+ | Apache-2.0 | alle | 89,8 %1.655 Dokumente | 0 | 160 | 915 | 8,2 ms | 1.099 MB |
| dealerweb/einvoice1.1.0 | PHP 8 | MIT | 7 / 11 | 88,3 %1.176 Dokumente | 3 | 135 | 479 | 28 ms | 152 MB |
| Mustangproject2.26.0 | Java 11+ | Apache-2.0 | 6 / 11 | 84,8 %1.067 Dokumente | 10 | 152 | 439 | 50 ms | 1.343 MB |
| en16931 (npm)0.1.0 | Node.js | MIT AND EUPL-1.2 | 1 / 11 | 84,6 %765 Dokumente | 2 | 113 | 399 | 77 ms | 361 MB |
| @kontor-mcp/core1.0.4 | Node.js | Apache-2.0 | 2 / 11 | 84,2 %1.050 Dokumente | 0 | 153 | 410 | 80 ms | 660 MB |
| verifyhash-einvoice0.2.9 | Python 3 | Apache-2.0 | 2 / 11 | 83,1 %1.050 Dokumente | 5 | 172 | 411 | 1,1 ms | 63 MB |
| verifaktura0.1.8 | Node.js | Apache-2.0 | 2 / 11 | 81,9 %810 Dokumente | 0 | 147 | 428 | 31 ms | 435 MB |
| EU ITB eInvoicing validator1.14.0-SNAPSHOT (2026-10-21) · CEN 1.3.16 | Java 17+ | EUPL-1.2 | 1 / 11 | 81,3 %765 Dokumente | 0 | 143 | 417 | 118 ms | 1.234 MB |
| @attestwire/en169310.14.0 | Node.js | MIT | 3 / 11 | 80,2 %1.159 Dokumente | 12 | 218 | 375 | 2 ms | 223 MB |
| einvoice-kit0.1.3 | Node.js | MIT | 1 / 11 | 80 %765 Dokumente | 1 | 152 | 363 | 0,3 ms | 189 MB |
| speedata/einvoicev0.0.22 | Go | BSD-3-Clause | 3 / 11 | 76,8 %1.159 Dokumente | 27 | 242 | 334 | 5 ms | 51 MB |
| stampbench (@stampbench/core)0.1.1 | Node.js | MIT | 2 / 11 | 71,8 %1.050 Dokumente | 13 | 283 | 211 | 0,7 ms | 407 MB |
| en16931 (Rust CLI)0.6.0 | Rust | MIT OR Apache-2.0 | 3 / 11 | 68,8 %1.159 Dokumente | 144 | 218 | 321 | 2,8 ms | 23 MB |
| @fin.cx/einvoice11.1.1 | Node.js | MIT | 2 / 11 | 59,9 %1.050 Dokumente | 25 | 396 | 106 | 5,1 ms | 383 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 | 975 MB |
| factur-x (akretion)6.8 | Python 3 | BSD-2-Clause | 4 / 11 | 52,9 %17 Dokumente | 0 | 8 | 14 | 0,5 ms | 69 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 22.–23. Oktober 2026.
„Regel benannt“: von 1.086 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.655 / 1.665 (99,4 %) | 1.102 / 1.665 (66,2 %) | 1.486 / 1.665 (89,2 %) | Beleggo |
| Richtige Urteile in Mustangs Profilennur die Profile, die Mustang selbst prüft | 1.067 / 1.077 (99,1 %) | 905 / 1.077 (84 %) | 902 / 1.077 (83,8 %) | Beleggo |
| Übereinstimmung mit dem KoSIT-Validatorauf allen XRechnung-Dokumenten — dem Bereich, für den der amtliche Validator zuständig ist | 281 / 281 (100 %) | 264 / 281 (94 %) | 268 / 281 (95,4 %) | Beleggo |
| Fehler mit der richtigen Regel benanntnicht nur abgelehnt, sondern die verletzte Regel genannt | 1.086 / 1.086 (100 %) | 439 / 1.086 (40,4 %) | 915 / 1.086 (84,3 %) | 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 | 50 ms | 8,2 ms | Beleggo |
| Laufzeit pro Dokument (95 %)die langsamen Dokumente | 12 ms | 82 ms | 17 ms | Beleggo |
| Dokumente pro Sekundeein Dokument nach dem anderen | 113,6 | 16 | 74,1 | Beleggo |
| Rechenzeit pro Dokumentaller Threads zusammen | 12 ms | 124 ms | 37 ms | Beleggo |
| Einzelaufruf (Start + erstes Dokument)was ein Kommandozeilenaufruf kostet | 187 ms | 3.541 ms | 4.322 ms | Beleggo |
| Arbeitsspeicher (Spitze)des ganzen Prozesses | 962 MB | 1.343 MB | 1.099 MB | Beleggo |
| InstallationsgrößeRegelwerke und Laufzeit, ohne Node.js bzw. Java | 56 MB | 56 MB | 58 MB | Beleggo · Mustangproject |
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 563 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 | 167 | 155 | 159 |
xrechnung · ubl | 100 | 95 | 90 | 90 |
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 (8c8d13d3eed69eec), 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.