Le même fichier, le même ruleset, le même verdict — dans dix ans.
Factlint valide une facture électronique et vous rend soit un document exploitable, soit la liste exacte de ce qui manque : pour chaque manque, sa règle, sa localisation, et s'il est corrigeable automatiquement ou non.
Un verdict daté, rejouable des années plus tard
Un jeu de règles de facturation électronique bouge plusieurs fois par an. Factur-X est passé de 1.08 à 1.09 en huit mois, le Schematron CEN sort environ deux versions par an, et les spécifications externes de la DGFiP sont passées de V3.0 à V3.2 en seize mois. Conséquence concrète : une facture régulière au moment de son émission peut être refusée par les règles appliquées deux ans plus tard, sans que rien n'ait changé dans le document.
La plupart des validateurs basculent automatiquement sur les dernières règles. C'est commode au quotidien, et cela rend leurs verdicts irrejouables : le même fichier soumis à deux dates donne deux réponses, sans moyen de reconstituer la première.
Chez Factlint, chaque verdict porte l'identifiant, l'empreinte et la date d'effet du jeu de règles qui l'a produit, ainsi que la version de chaque artefact utilisé. Le bundle complet est conservé exécutable pendant la durée d'archivage fiscal.
Épingler une version
Un pipeline d'intégration continue qui épingle fr-2026-08 ne cassera pas parce qu'un artefact amont a bougé un mardi matin.
Rejouer un verdict contesté
Le mode as_of_issue_date résout le jeu de règles depuis la date d'émission de la facture, et vous dit lequel il a retenu et pourquoi.
Tester avant la date d'effet
Un ruleset anticipé est publié dès la sortie de l'artefact amont : vous testez en octobre ce qui sera exigé en janvier.
Trois issues, jamais une de plus
Chaque anomalie tombe dans l'une de trois catégories, et la frontière entre elles n'est pas technique mais juridique.
| Issue | Ce que fait Factlint |
|---|---|
| auto | L'anomalie est structurelle et la valeur attendue se déduit du document. Elle est corrigée, et la correction est tracée avec son avant, son après et son XPath. |
| input | La donnée n'existe nulle part dans le document : vous seul l'avez. Elle est signalée, jamais remplie avec une valeur par défaut. |
| blocked | Champ financier — montant, taux ou base de TVA, IBAN. La valeur attendue est calculée et vous est proposée, mais elle n'est jamais écrite, même sur demande explicite. |
Pourquoi ne pas corriger un montant ? Une facture déjà émise ne se corrige pas par une API mais par un avoir et une facture rectificative. Modifier un montant déplacerait vers nous une responsabilité qui est celle de l'émetteur — et le consentement contractuel d'un client ne protège pas contre un tiers qui contesterait l'intégrité du document. Nous calculons et proposons ; nous n'écrivons pas.
Une page par code d'erreur
Chaque code rendu par l'API porte un docs_url qui pointe vers une page expliquant ce que la règle vérifie, pourquoi elle tombe, et ce qu'il faut faire.
- BR-CO-15Le montant TTC ne correspond pas au total HT augmenté de la TVAblocked
- XMP-PROFILE-MISMATCHLe profil déclaré dans le XMP diffère de celui du XMLauto
- PDFA-OUTPUTINTENT-MISSINGLe profil colorimétrique de sortie est absentauto
- BR-01L'identifiant de spécification est absentauto
Voir les 14 codes documentés →
À qui ça s'adresse
Factlint s'adresse à ceux qui construisent les logiciels qui produisent des factures : éditeurs de logiciels métier, intégrateurs d'ERP, et plateformes en amont de leur transmission. Le signal qui compte n'est pas de vouloir générer un PDF, c'est d'avoir déjà subi un rejet en masse, un contrôle ou un litige.
Ce que Factlint n'est pas. Factlint est une couche technique. Générer un fichier irréprochable ne remplit aucune obligation légale : l'émission et la réception passent obligatoirement par une plateforme agréée immatriculée par la DGFiP (art. 289 bis du CGI). Factlint valide et prépare vos factures en amont de la vôtre. Il ne les transmet pas et ne remplace pas votre obligation d'en désigner une.