Mesuré, pas affirmé
Moteurs de validation 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
| Moteur | Environnement | Licence | Profils | Corrects | Fausses alertes | Manqués | Règle nommée | Médiane | Mémoire |
|---|---|---|---|---|---|---|---|---|---|
| Beleggoartefacts 2026-08-31 | JavaScript | proprietary | tous | 100 %1 665 documents | 0 | 0 | 1 096 | 5,7 ms | 854 MB |
| dealerweb/einvoice1.2.2 | PHP 8 | MIT | 7 / 11 | 99,2 %1 186 documents | 0 | 10 | 636 | 49 ms | 215 MB |
| KoSIT Validator1.6.3 · Validator Configuration XRechnung 3.0.2 2026-09-02 · référence | Java 11+ | Apache-2.0 | 1 / 11 | 98,6 %295 documents | 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 documents | 33 | 52 | 345 | 2,3 ms | 33 MB |
| phive4.6.0 | Java 17+ | Apache-2.0 | tous | 89,8 %1 665 documents | 0 | 160 | 925 | 8,4 ms | 942 MB |
| Mustangproject2.26.0 | Java 11+ | Apache-2.0 | 6 / 11 | 85 %1 077 documents | 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 documents | 2 | 113 | 403 | 76 ms | 336 MB |
| @kontor-mcp/core1.0.4 | Node.js | Apache-2.0 | 2 / 11 | 84,3 %1 060 documents | 0 | 153 | 420 | 147 ms | 610 MB |
| verifyhash-einvoice0.2.9 | Python 3 | Apache-2.0 | 2 / 11 | 83,1 %1 060 documents | 5 | 174 | 419 | 1,9 ms | 61 MB |
| verifaktura0.1.8 | Node.js | Apache-2.0 | 2 / 11 | 81,9 %810 documents | 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 documents | 0 | 143 | 423 | 193 ms | 938 MB |
| einvoice-kit0.1.3 | Node.js | MIT | 1 / 11 | 80 %765 documents | 1 | 152 | 367 | 1,1 ms | 150 MB |
| @attestwire/en169310.14.0 | Node.js | MIT | 3 / 11 | 80 %1 169 documents | 12 | 222 | 381 | 1,5 ms | 151 MB |
| speedata/einvoicev0.0.22 | Go | BSD-3-Clause | 3 / 11 | 76,8 %1 169 documents | 27 | 244 | 342 | 7,7 ms | 49 MB |
| stampbench (@stampbench/core)0.1.1 | Node.js | MIT | 2 / 11 | 71,9 %1 060 documents | 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 documents | 144 | 220 | 329 | 2,5 ms | 23 MB |
| @fin.cx/einvoice11.1.1 | Node.js | MIT | 2 / 11 | 59,7 %1 060 documents | 25 | 402 | 110 | 11 ms | 372 MB |
| KoSIT Validator + ZUGFeRD configuration1.6.3 · Validator Configuration ZUGFeRD 2.5.2 2026-06-11 · référence | Java 11+ | Apache-2.0 | 4 / 11 | 52,9 %17 documents | 0 | 8 | 63 | 4,7 ms | 939 MB |
| factur-x (akretion)6.8 | Python 3 | BSD-2-Clause | 4 / 11 | 52,9 %17 documents | 0 | 8 | 15 | 0,3 ms | 66 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).
| Mesure | Beleggo | Mustangproject | phive | En tête |
|---|---|---|---|---|
| Verdicts corrects, tous les documentspar rapport au verdict attendu de chaque échantillon | 1 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ôle | 1 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 charge | 291 / 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ée | 1 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 propres | 11 / 11 | 6 / 11 | 11 / 11 | Beleggo · phive |
| Mesure | Beleggo | Mustangproject | phive | En tête |
|---|---|---|---|---|
| Temps par document (médiane)après la mise en route | 5,7 ms | 43 ms | 8,4 ms | Beleggo |
| Temps par document (95e centile)les documents lents | 19 ms | 78 ms | 27 ms | Beleggo |
| Documents par secondeun document après l’autre | 77,5 | 16,8 | 68,9 | Beleggo |
| Temps processeur par documenttous les threads confondus | 18 ms | 93 ms | 33 ms | Beleggo |
| Appel unique (démarrage + premier document)le coût d’un appel en ligne de commande | 385 ms | 5 832 ms | 3 943 ms | Beleggo |
| Mémoire (pic)du processus entier | 854 MB | 1 201 MB | 942 MB | Beleggo |
| Taille d’installationrègles et moteur, sans Node.js ni Java | 16 MB | 56 MB | 58 MB | Beleggo |
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.
| Beleggo | Mustangproject | phive | |
|---|---|---|---|
| EN 16931 (UBL et CII) | oui | oui | oui |
| XRechnung 3 avec les niveaux de gravité officiels KoSIT | oui | en partie | en partie |
| Peppol BIS 3 et règles nationales Peppol | oui | non | oui |
| NLCIUS, CIUS-RO, HR-CIUS, CIUS-PT | oui | non | oui |
| Profils Factur-X / ZUGFeRD (XSD et Schematron) | oui | oui | oui |
| Page PDF visible comparée au XML | oui | non | non |
| Chiffres de contrôle (IBAN, n° de TVA, Leitweg-ID, n° fiscal …) | oui | non | non |
| Fonctionne dans le navigateur, sans envoi, sans serveur | oui | non | non |
| Validation PDF/A-3 complète (toutes les règles des profils veraPDF) | oui | oui | non |
| ZUGFeRD 1.0 et Order-X | oui | oui | non |
| Règles françaises CTC (BR-FR Flux 2) en erreur, en UBL et CII | oui | en partie | oui |
| Schematron XRechnung, édition actuelle (2.6.0) | oui | en partie | oui |
| Peppol BIS 3 en CII | oui | non | non |
| EXTENDED-CTC-FR et e-reporting Flux 10 (France) | oui | en partie | oui |
| Recalcul de chaque ligne (quantité × prix) | oui | oui | non |
| Avertissements déjà annoncés comme futures erreurs | oui | non | non |
| 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 OpenPeppol | oui | non | oui |
| Peppol Invoice Response et Message Level Status | oui | non | oui |
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 :
| Profil | Documents | 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 |
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.