BLOG TECHNIQUE
Factur-X & EN16931
Guides techniques et intégrations pour maîtriser Factur-X, valider EN16931 et préparer la réforme de facturation électronique 2026-2027.
51 articlesBR-05 — Le code devise de la facture (BT-5) est obligatoire
BR-05 impose la présence d'InvoiceCurrencyCode (BT-5) à l'ApplicableHeaderTradeSettlement. Code ISO 4217 alpha-3 sur 3 lettres.
BR-15 — Le montant à payer (BT-115) est obligatoire
BR-15 impose la présence de BT-115 (Amount due for payment). Attention : BR-12 concerne autre chose ; la formule arithmétique relève de BR-CO-16.
BR-33 — Une raison ou un code de raison est requis pour chaque remise documentaire
BR-33 (et non BR-31) exige qu'une remise documentaire BG-20 ait une raison BT-97 ou un code BT-98. BR-31 concerne la présence du montant (BT-92).
BR-AE-05 — Autoliquidation : taux de ligne obligatoire à 0
BR-AE-05 impose qu'une ligne en autoliquidation (catégorie AE) ait un taux de TVA à 0. BR-AE-01 concerne la présence d'un breakdown AE. BR-AE-10 concerne la raison d'exonération VATEX-EU-AE.
BR-CO-14 — Le total TVA ne correspond pas à la somme des catégories TVA
BR-CO-14 impose que BT-110 (TVA totale) = Σ BT-117 (montant TVA par catégorie). Différent de BR-CO-17 qui vérifie la formule base × taux par catégorie.
BR-CO-10 — La somme des montants de ligne ne correspond pas au total déclaré
BR-CO-10 impose que BT-106 (sum of invoice line net amount) = Σ BT-131. Erreur fréquente après ajout/suppression de ligne ou arrondis ligne-par-ligne.
BR-CO-15 — Le total avec TVA ne correspond pas au calcul HT + TVA
BR-CO-15 impose que GrandTotalAmount (BT-112) = TaxBasisTotalAmount (BT-109) + TaxTotalAmount (BT-110). Ne pas confondre BT-112 (total avec TVA) et BT-115 (montant à payer).
BR-CO-16 — Le montant à payer ne correspond pas au calcul attendu
BR-CO-16 vérifie que BT-115 (montant à payer) = BT-112 − BT-113 + BT-114. PrepaidAmount et PayableRoundingAmount sont optionnels (cardinalité 0..1).
BR-S-05 — TVA Standard : taux de ligne strictement positif obligatoire
BR-S-05 impose qu'une ligne en TVA Standard (catégorie S) ait un taux > 0. BR-S-01 concerne la présence du VAT breakdown S au niveau facture.
BR-Z-05 — TVA Zero rated : taux de ligne à 0 obligatoire
BR-Z-05 impose qu'une ligne en catégorie Z (Zero rated) ait RateApplicablePercent=0. BR-Z-01 exige la présence d'un breakdown Z. Différent de E, AE, G, K.
Montant net de ligne (BT-131) incohérent : quantité × prix net/base ± remises/frais
Le montant net de ligne BT-131 doit correspondre à ((BT-146/BT-149) × BT-129) + charges − remises. Règle Peppol PEPPOL-EN16931-R120, avec base quantity BT-149 souvent oubliée.
BT-84 — Compte bancaire de paiement : IBAN ou ProprietaryID, pas schemeID
BT-84 (Payment account identifier) utilise ram:IBANID pour un IBAN ou ram:ProprietaryID pour un compte non-IBAN. Règles BR-50 et BR-61 contrôlent sa présence conditionnelle.
Erreur format date : Factur-X attend yyyymmdd avec format 102
Les dates métier Factur-X CII utilisent l'attribut format=102 et la valeur yyyymmdd (sans tirets). Format 102 = CCYYMMDD selon UN/EDIFACT 2379.
Erreur IBAN format incorrect : règles ISO 13616 et longueur par pays
L'IBAN dans Factur-X (BT-84 via IBANID) doit respecter le format ISO 13616, utilisé notamment dans les paiements SEPA. Longueurs fixes par pays et clé MOD-97.
Erreur namespace CII : URI incorrecte ou mélange UBL/CII
En XML, c'est l'URI du namespace qui compte, pas le préfixe. Les préfixes rsm/ram/udt/qdt sont recommandés pour lisibilité, mais cii: ou factx: fonctionnent aussi si correctement liés aux bonnes URI CII.
« No Factur-X XML found » : votre PDF n'embarque pas de XML CII détectable
Le PDF Factur-X doit être un PDF/A-3 avec un XML CII embarqué. Les noms factur-x.xml, zugferd-invoice.xml, xrechnung.xml sont tous reconnus.
Erreur PDF/A-3 : niveau de conformance incorrect (A, B ou U requis)
Factur-X exige PDF/A-3 (pdfaid:part=3) avec conformance A, B ou U. PDF/A-2 autorise les pièces jointes PDF/A mais pas l'embarquement arbitraire d'un XML.
Erreur profil Factur-X : GuidelineSpecifiedDocumentContextParameter incorrect
Les 5 profils standards Factur-X (MINIMUM, BASIC WL, BASIC, EN16931, EXTENDED) ont chacun un URN officiel précis. XRECHNUNG est un profil de référence, pas un profil standard Factur-X.
Erreur schemeID (organisations) : SIREN, SIRET, GLN, DUNS avec code ISO 6523 incorrect
L'attribut schemeID des identifiants d'organisation (BT-29, BT-30, BT-31) doit suivre la liste ISO 6523 ICD : 0002 SIREN, 0009 SIRET, 0088 GLN, 0060 DUNS, VA pour le n° TVA.
Erreur séparateur décimal : Factur-X exige le point XML, pas la virgule
Les valeurs décimales XML de Factur-X utilisent le point comme séparateur ("1234.56"), jamais la virgule. Contraintes de décimales variables selon les champs.
Erreur numéro de TVA intracommunautaire : format propre à chaque pays
Le numéro de TVA intracommunautaire (BT-31, BT-48) suit un format propre à chaque pays UE. Vérification VIES pour la référence opérationnelle.
Confusion catégorie TVA : S, Z, E, AE, G, K — quel code utiliser ?
Les catégories de TVA EN16931 (S, Z, E, AE, K, G, L, M, O) ont des sémantiques juridiques différentes. Règles BR-S-*/BR-Z-*/BR-AE-* varient selon la catégorie. Exemple autoliquidation complet avec VATEX-EU-AE.
Build vs Buy : construire sa conformité Factur-X ou utiliser une API
Analyse chiffrée Build vs Buy pour la conformité Factur-X EN16931. Trois périmètres de coûts (validation seule à full compliance engine) vs API SaaS. Critères de décision pour CTO et architectes.
Comprendre les messages Schematron EN16931 : lire un rapport de validation Factur-X
Guide pratique pour interpréter les messages d'erreur Schematron EN16931. Comment lire un rapport de validation, comprendre les codes BR-*, localiser l'erreur dans le XML, et décider quoi corriger.
Les erreurs Factur-X qui bloquent vos factures BTP : autoliquidation, situations, retenues
Les erreurs de conformité Factur-X spécifiques au secteur BTP : autoliquidation (art. 283, 2 nonies CGI), factures de situation, retenue de garantie, multi-taux TVA. Diagnostic et corrections avec exemples XML.
Intégrer la conformité Factur-X dans votre ERP en 3 jours : retour d'expérience
Comment un éditeur ERP BTP a intégré la conformité Factur-X EN16931 en 3 jours via API. Étapes concrètes : mapping JSON, appel API, validation, gestion des erreurs, mise en production.
Réception de factures électroniques 2026 : valider ce que vous recevez (cabinets comptables, éditeurs SaaS)
Comment valider les factures Factur-X, UBL et CII reçues avant intégration comptable. Guide pour cabinets comptables et éditeurs de logiciels de gestion : extraction XML, validation EN16931, détection d'anomalies.
Automatiser la validation et la correction Factur-X dans votre pipeline CI/CD
Intégrer la validation EN16931 et la correction XML CII dans un pipeline CI/CD. Exemples GitHub Actions, GitLab CI, scripts bash, gestion des erreurs et alerting.
Convertir une facture PDF en Factur-X 1.08 conforme (PDF/A-3 + XML CII D22B)
Comment transformer un PDF de facture classique en document Factur-X PDF/A-3 avec XML CII embarqué. Deux approches : extraction automatique du PDF ou données structurées depuis l'ERP.
Corriger automatiquement un XML CII Factur-X invalide : erreurs réparables et API de correction
Comment corriger automatiquement les erreurs de format dans un XML CII (Factur-X / EN16931) : dates, décimaux, namespaces, schemeID, devises. API de réparation avec diff détaillé et validation avant/après.
Données ERP → Factur-X CII : mapper JSON vers XML EN16931 (guide développeur)
Comment transformer les données structurées de votre ERP (JSON, CSV) en XML CII conforme EN16931 pour générer un Factur-X. Mapping des champs, cas spéciaux (autoliquidation, avoir), exemples pratiques.
Factur-X 1.08 / ZUGFeRD 2.4 : ce qui change pour les développeurs
Nouveautés de Factur-X 1.08 et ZUGFeRD 2.4 pour les développeurs : passage à CII D22B, nouveaux champs, compatibilité avec les versions précédentes, et impact sur les pipelines de validation.
PDF/A-3 vs PDF/A-1 : pourquoi Factur-X 1.08 exige PDF/A-3 et pas PDF/A-1
Différences techniques entre PDF/A-1, PDF/A-2 et PDF/A-3 pour la facturation électronique. Pourquoi Factur-X nécessite PDF/A-3 (ISO 19005-3) pour embarquer le XML CII, et ce que ça change pour les développeurs.
Rejets Chorus Pro décryptés : erreurs Factur-X, codes retour et corrections
Comprendre et corriger les rejets Chorus Pro lors de la soumission de factures Factur-X. Codes de rejet courants, erreurs EN16931 spécifiques au B2G, et diagnostic systématique.
API annuaire et routage SIRET : identifier et router les factures électroniques
Comment fonctionne le routage des factures dans l'écosystème de facturation électronique français : annuaire central, identification SIRET/SIREN, API SIRENE, et mapping vers les champs Factur-X.
Extraire l'XML d'un PDF Factur-X reçu : méthodes et automatisation
Comment extraire le fichier XML CII embarqué dans un PDF Factur-X ou ZUGFeRD, le parser pour en tirer les données métier, et valider son contenu. Exemples complets en Python, Java, PHP et CLI.
PHP et mPDF : résoudre le bug XML 0 bytes en PDF/A-3 Factur-X
Diagnostic et correction du bug mPDF où le fichier XML Factur-X embarqué dans un PDF/A-3 apparaît avec un flux de 0 bytes. Quatre approches de correction testées avec du code PHP fonctionnel.
Python et Factur-X : générer, attacher et valider un XML EN16931
Guide complet pour manipuler des factures Factur-X en Python : générer un XML CII conforme, l'embarquer dans un PDF/A-3 avec la bibliothèque factur-x, extraire et valider via XSD, Schematron et l'API FacturX.
Invoice Ninja et la réforme française : architecture e-invoicing et validation
Architecture technique d'Invoice Ninja pour la facturation électronique Factur-X : pipeline Laravel → horstoeko/zugferd → CII D22B, configuration SIRET/TVA, validation pré-PDP et préparation à la réforme 2026.
Dolibarr et Factur-X 2026 : module, validation et intégration API
Comment configurer le module Factur-X de Dolibarr, corriger les erreurs de validation EN16931 les plus courantes, et intégrer un pipeline de conformité automatisé avant l'envoi aux PDP.
Déployer un validateur Factur-X : KoSIT, Mustangproject ou API SaaS ?
Comparatif technique des options de validation Factur-X : KoSIT Validator, Mustangproject/ZUV, pipeline custom verapdf+Schematron, et API SaaS. Checklist d'installation, exemples de code, matrice de décision et patterns CI/CD.
Odoo et Factur-X : diagnostiquer et corriger les erreurs de validation
Guide technique pour identifier et corriger les erreurs Factur-X, XRechnung et Peppol dans Odoo v16+. Modules EDI, configuration des identifiants, EAS codes, et workflow de validation.
Catalogue des erreurs BR-* EN16931 : causes, correctifs, exemples XML
Référence complète des erreurs BR-* Schematron EN16931 rencontrées lors de la validation Factur-X et CII. Pour chaque règle : cause racine, XML invalide, XML corrigé, pièges à éviter.
InvoiceNinja et Factur-X : valider ses factures avant la réforme 2026
Comment vérifier que vos factures générées par InvoiceNinja sont conformes EN16931 avant la réforme de facturation électronique 2026-2027. Erreurs courantes et corrections.
Profils Factur-X : MINIMUM → EXTENDED (matrice de choix technique)
Comment choisir entre les profils Factur-X MINIMUM, BASIC WL, BASIC, EN 16931 et EXTENDED selon votre flux, votre PDP et vos obligations réglementaires.
Champs obligatoires EN16931/Factur-X : cartographie et mapping ERP → XML
Quels champs sont obligatoires pour une facture EN16931 conforme ? Cartographie des Business Terms, mapping vers les champs ERP courants, et erreurs fréquentes de configuration.
Factur-X vs UBL vs CII : quel format choisir selon votre intégration
Comparatif technique des trois syntaxes EN16931 acceptées pour la facturation électronique française : structure XML, namespaces, cas d'usage, validation et conversion.
PDF/A-3 pour Factur-X : checklist de conformité et pièges courants
Pourquoi la plupart des bibliothèques PDF génèrent des fichiers non conformes PDF/A-3, comment diagnostiquer les erreurs ISO 19005-3, et comment produire un conteneur Factur-X valide avec VeraPDF.
Valider EN16931 / Factur-X en pratique : XSD vs Schematron, erreurs BR-*, workflow de debug
Comment fonctionne réellement la validation d'une facture électronique EN16931, pourquoi un XML valide en XSD peut échouer en Schematron, et comment déboguer les erreurs BR-* étape par étape.
Facturation électronique 2026 : le guide technique complet pour développeurs
Tout ce qu'un architecte logiciel ou lead dev doit maîtriser avant septembre 2026 : formats EN16931, modèle PDP, pipeline de validation, profils Factur-X, et les cinq zones de friction identifiées dans les communautés open source.