Mesuré, pas affirmé

Moteurs de validation comparés

Beleggo, Mustangproject, phive et 16 autres moteurs comparés

19 moteurs de validation contrôlent les mêmes 1 665 factures électroniques du kit de données Beleggo — XRechnung, ZUGFeRD / Factur-X, Peppol BIS 3 et CIUS nationaux, valides comme défectueuses — sur la même machine, un document après l’autre. Le validateur officiel KoSIT tourne en parallèle comme référence. Mustangproject et phive, les validateurs open source les plus répandus, sont ensuite comparés en détail à Beleggo.

Mesuré le 22 octobre 2026 sur linux x64, Intel(R) Core(TM) Ultra 9 185H × 22, 62 GiB, Node v24.22.1

Les 19 moteurs en un coup d’œil

MoteurEnvironnementLicenceProfilsCorrectsFausses alertesManquésRègle nomméeMédianeMémoire
Beleggoartefacts 2026-08-31JavaScriptproprietarytous100 %1 655 documents001 0865,7 ms962 MB
KoSIT Validator1.6.3 · Validator Configuration XRechnung 3.0.2 2026-09-02 · référenceJava 11+Apache-2.01 / 1198,6 %285 documents004219,2 ms1 397 MB
core-invoice (Rust CLI)2.0.3RustMIT OR Apache-2.02 / 1190,3 %874 documents33523412,6 ms33 MB
phive4.6.0Java 17+Apache-2.0tous89,8 %1 655 documents01609158,2 ms1 099 MB
dealerweb/einvoice1.1.0PHP 8MIT7 / 1188,3 %1 176 documents313547928 ms152 MB
Mustangproject2.26.0Java 11+Apache-2.06 / 1184,8 %1 067 documents1015243950 ms1 343 MB
en16931 (npm)0.1.0Node.jsMIT AND EUPL-1.21 / 1184,6 %765 documents211339977 ms361 MB
@kontor-mcp/core1.0.4Node.jsApache-2.02 / 1184,2 %1 050 documents015341080 ms660 MB
verifyhash-einvoice0.2.9Python 3Apache-2.02 / 1183,1 %1 050 documents51724111,1 ms63 MB
verifaktura0.1.8Node.jsApache-2.02 / 1181,9 %810 documents014742831 ms435 MB
EU ITB eInvoicing validator1.14.0-SNAPSHOT (2026-10-21) · CEN 1.3.16Java 17+EUPL-1.21 / 1181,3 %765 documents0143417118 ms1 234 MB
@attestwire/en169310.14.0Node.jsMIT3 / 1180,2 %1 159 documents122183752 ms223 MB
einvoice-kit0.1.3Node.jsMIT1 / 1180 %765 documents11523630,3 ms189 MB
speedata/einvoicev0.0.22GoBSD-3-Clause3 / 1176,8 %1 159 documents272423345 ms51 MB
stampbench (@stampbench/core)0.1.1Node.jsMIT2 / 1171,8 %1 050 documents132832110,7 ms407 MB
en16931 (Rust CLI)0.6.0RustMIT OR Apache-2.03 / 1168,8 %1 159 documents1442183212,8 ms23 MB
@fin.cx/einvoice11.1.1Node.jsMIT2 / 1159,9 %1 050 documents253961065,1 ms383 MB
KoSIT Validator + ZUGFeRD configuration1.6.3 · Validator Configuration ZUGFeRD 2.5.2 2026-06-11 · référenceJava 11+Apache-2.04 / 1152,9 %17 documents08634,7 ms975 MB
factur-x (akretion)6.8Python 3BSD-2-Clause4 / 1152,9 %17 documents08140,5 ms69 MB

« Profils » : combien des 11 profils du kit le moteur déclare contrôler lui-même. « Corrects » : part des documents de ces profils dont le verdict (valide ou défectueux) correspond au verdict attendu ; un document que le moteur ne peut pas juger compte comme faux. Chaque moteur couvrant d’autres profils, les pourcentages portent sur des nombres de documents différents. Le validateur KoSIT est la référence officielle pour XRechnung. Mesuré 22–23 octobre 2026.

« Règle nommée » : sur les 1 086 échantillons défectueux du kit, combien le moteur rejette en nommant la règle enfreinte. « Médiane » : temps par document après la mise en route ; « Mémoire » : pic du processus entier.

Non mesurés sur le kit actuel, donc absents du tableau : International.EInvoicing (.NET CLI): pas de SDK .NET sur la machine de mesure (dernière mesure le 27 sept. 2026 sur 722 documents); @aifind/mustangjs: pas de réponse sur une facture de 1 000 lignes (DK-790) en 15 minutes (dernière mesure le 27 sept. 2026 sur 722 documents); Klarfakt: pas de SDK .NET sur la machine de mesure (dernière mesure le 29 sept. 2026 sur 722 documents); john-wink/en16931-php: son composer.lock ne s’installe pas sur la version de PHP de la machine de mesure (dernière mesure le 29 sept. 2026 sur 722 documents); en16931 (Dart): pas de SDK Dart sur la machine de mesure (dernière mesure le 29 sept. 2026 sur 722 documents).

En détail : Beleggo, Mustangproject et phive

Verdicts corrects

MesureBeleggoMustangprojectphiveEn tête
Verdicts corrects, tous les documentspar rapport au verdict attendu de chaque échantillon1 655 / 1 665 (99,4 %)1 102 / 1 665 (66,2 %)1 486 / 1 665 (89,2 %)Beleggo
Verdicts corrects dans les profils de Mustanguniquement les profils que Mustang contrôle1 067 / 1 077 (99,1 %)905 / 1 077 (84 %)902 / 1 077 (83,8 %)Beleggo
Accord avec le validateur KoSITsur tous les documents XRechnung — le périmètre dont le validateur officiel a la charge281 / 281 (100 %)264 / 281 (94 %)268 / 281 (95,4 %)Beleggo
Défauts nommés par la bonne règlepas seulement rejetés : la règle enfreinte est indiquée1 086 / 1 086 (100 %)439 / 1 086 (40,4 %)915 / 1 086 (84,3 %)Beleggo
Profils du kit contrôlésformats dont le moteur connaît les règles propres11 / 116 / 1111 / 11Beleggo · phive

Vitesse et coût

MesureBeleggoMustangprojectphiveEn tête
Temps par document (médiane)après la mise en route5,7 ms50 ms8,2 msBeleggo
Temps par document (95e centile)les documents lents12 ms82 ms17 msBeleggo
Documents par secondeun document après l’autre113,61674,1Beleggo
Temps processeur par documenttous les threads confondus12 ms124 ms37 msBeleggo
Appel unique (démarrage + premier document)le coût d’un appel en ligne de commande187 ms3 541 ms4 322 msBeleggo
Mémoire (pic)du processus entier962 MB1 343 MB1 099 MBBeleggo
Taille d’installationrègles et moteur, sans Node.js ni Java56 MB56 MB58 MBBeleggo · Mustangproject

Beleggo exécute les règles Schematron officielles sous forme de code traduit en JavaScript, lues dans les mêmes feuilles de style que celles qu’exécute Saxon-JS et contrôlées sur tous les corpus de test avec Saxon-JS comme référence : mêmes constats, même texte, même ordre. Un document que les règles traduites ne peuvent pas juger exactement est confié à Saxon-JS. Le temps processeur dépasse le temps par document parce que Node.js récupère la mémoire sur ses propres threads. Le même moteur tourne dans le navigateur.

Ce que fait chaque moteur

BeleggoMustangprojectphive
EN 16931 (UBL et CII)ouiouioui
XRechnung 3 avec les niveaux de gravité officiels KoSITouien partieen partie
Peppol BIS 3 et règles nationales Peppolouinonoui
NLCIUS, CIUS-RO, HR-CIUS, CIUS-PTouinonoui
Profils Factur-X / ZUGFeRD (XSD et Schematron)ouiouioui
Page PDF visible comparée au XMLouinonnon
Chiffres de contrôle (IBAN, n° de TVA, Leitweg-ID, n° fiscal …)ouinonnon
Fonctionne dans le navigateur, sans envoi, sans serveurouinonnon
Validation PDF/A-3 complète (toutes les règles des profils veraPDF)ouiouinon
ZUGFeRD 1.0 et Order-Xouiouinon
Règles françaises CTC (BR-FR Flux 2) en erreur, en UBL et CIIouien partieoui
Schematron XRechnung, édition actuelle (2.6.0)ouien partieoui
Peppol BIS 3 en CIIouinonnon
EXTENDED-CTC-FR et e-reporting Flux 10 (France)ouien partieoui
Recalcul de chaque ligne (quantité × prix)ouiouinon
Avertissements déjà annoncés comme futures erreursouinonnon
Peppol PINT (UE, A-NZ, SG, JP, MY, AE, OM) — Beleggo dans sa CLI et son serveur MCP, règles téléchargées chez OpenPeppolouinonoui
Peppol Invoice Response et Message Level Statusouinonoui

Où et pourquoi ils diffèrent

Mustang s’écarte du verdict attendu sur 563 documents sur 1 665, dont 391 dans des profils qu’il ne contrôle pas du tout. Les autres ont cinq causes :

Par profil

ProfilDocumentsBeleggoMustangprojectphive
en16931 · cii184184126121
en16931 · ubl419419340339
en16931 · zugferd162162162161
hr-cius · ubl4545545
nlcius · ubl2020919
peppol-bis3 · cii2211
peppol-bis3 · ubl10610656104
peppol-bis3 · zugferd1111
pt-cius · ubl302302101302
ro-cius · ubl11211224112
xrechnung · cii172167155159
xrechnung · ubl100959090
xrechnung · zugferd23232323
zugferd-basic · cii1111
zugferd-basic · zugferd3333
zugferd-basicwl · cii1100
zugferd-basicwl · zugferd3300
zugferd-extended · cii2222
zugferd-extended · zugferd3333
zugferd-minimum · cii1100
zugferd-minimum · zugferd3300

Méthode de mesure

Kit de données 0.1.0 (8c8d13d3eed69eec), 1 665 documents, jugés par rapport au verdict attendu de chaque échantillon. Ce verdict vient du projet Beleggo ; pour qu’il confirme plus que Beleggo, chaque désaccord de Mustang a été vérifié à la main par rapport aux spécifications, et le validateur officiel KoSIT tourne en parallèle comme référence indépendante. Là où il juge autrement que Beleggo, la règle lui manque : les règles françaises CTC et une liste de codes Factur-X.

Beleggo artefacts 2026-08-31, Mustangproject 2.26.0, phive 4.6.0 (avec tous les modules phive-rules ; la détection de documents de phive choisit le jeu de règles), validateur KoSIT 1.6.3 · Validator Configuration XRechnung 3.0.2 2026-09-02. Chaque moteur tourne dans son propre processus, qui vit toute la mesure — les temps mesurent donc le moteur, pas le démarrage d’une machine virtuelle Java.