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 6 novembre 2026 sur linux x64, Intel(R) Xeon(R) Processor @ 2.10GHz × 4, 16 GiB, Node v22.23.4

Les 19 moteurs en un coup d’œil

MoteurEnvironnementLicenceProfilsCorrectsFausses alertesManquésRègle nomméeMédianeMémoire
Beleggoartefacts 2026-08-31JavaScriptproprietarytous100 %1 665 documents001 0965,7 ms854 MB
dealerweb/einvoice1.2.2PHP 8MIT7 / 1199,2 %1 186 documents01063649 ms215 MB
KoSIT Validator1.6.3 · Validator Configuration XRechnung 3.0.2 2026-09-02 · référenceJava 11+Apache-2.01 / 1198,6 %295 documents004318 ms1 623 MB
core-invoice (Rust CLI)2.0.3RustMIT OR Apache-2.02 / 1190,3 %874 documents33523452,3 ms33 MB
phive4.6.0Java 17+Apache-2.0tous89,8 %1 665 documents01609258,4 ms942 MB
Mustangproject2.26.0Java 11+Apache-2.06 / 1185 %1 077 documents1015244943 ms1 201 MB
en16931 (npm)0.1.0Node.jsMIT AND EUPL-1.21 / 1184,6 %765 documents211340376 ms336 MB
@kontor-mcp/core1.0.4Node.jsApache-2.02 / 1184,3 %1 060 documents0153420147 ms610 MB
verifyhash-einvoice0.2.9Python 3Apache-2.02 / 1183,1 %1 060 documents51744191,9 ms61 MB
verifaktura0.1.8Node.jsApache-2.02 / 1181,9 %810 documents014743260 ms501 MB
EU ITB eInvoicing validator1.14.0-SNAPSHOT (2026-11-05) · CEN 1.3.16Java 17+EUPL-1.21 / 1181,3 %765 documents0143423193 ms938 MB
einvoice-kit0.1.3Node.jsMIT1 / 1180 %765 documents11523671,1 ms150 MB
@attestwire/en169310.14.0Node.jsMIT3 / 1180 %1 169 documents122223811,5 ms151 MB
speedata/einvoicev0.0.22GoBSD-3-Clause3 / 1176,8 %1 169 documents272443427,7 ms49 MB
stampbench (@stampbench/core)0.1.1Node.jsMIT2 / 1171,9 %1 060 documents132852191,6 ms326 MB
en16931 (Rust CLI)0.6.0RustMIT OR Apache-2.03 / 1168,9 %1 169 documents1442203292,5 ms23 MB
@fin.cx/einvoice11.1.1Node.jsMIT2 / 1159,7 %1 060 documents2540211011 ms372 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 ms939 MB
factur-x (akretion)6.8Python 3BSD-2-Clause4 / 1152,9 %17 documents08150,3 ms66 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é 6 novembre 2026.

« Règle nommée » : sur les 1 096 é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 665 / 1 665 (100 %)1 112 / 1 665 (66,8 %)1 496 / 1 665 (89,8 %)Beleggo
Verdicts corrects dans les profils de Mustanguniquement les profils que Mustang contrôle1 077 / 1 077 (100 %)915 / 1 077 (85 %)912 / 1 077 (84,7 %)Beleggo
Accord avec le validateur KoSITsur tous les documents XRechnung — le périmètre dont le validateur officiel a la charge291 / 291 (100 %)274 / 291 (94,2 %)278 / 291 (95,5 %)Beleggo
Défauts nommés par la bonne règlepas seulement rejetés : la règle enfreinte est indiquée1 096 / 1 096 (100 %)449 / 1 096 (41 %)925 / 1 096 (84,4 %)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 ms43 ms8,4 msBeleggo
Temps par document (95e centile)les documents lents19 ms78 ms27 msBeleggo
Documents par secondeun document après l’autre77,516,868,9Beleggo
Temps processeur par documenttous les threads confondus18 ms93 ms33 msBeleggo
Appel unique (démarrage + premier document)le coût d’un appel en ligne de commande385 ms5 832 ms3 943 msBeleggo
Mémoire (pic)du processus entier854 MB1 201 MB942 MBBeleggo
Taille d’installationrègles et moteur, sans Node.js ni Java16 MB56 MB58 MBBeleggo

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 553 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 · cii172172160164
xrechnung · ubl1001009595
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 (a43e5b5fd46d8e73), 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.