Sur cette page
La réponse courte
BR-13 échoue lorsque cac:LegalMonetaryTotal n'a pas d'enfant cbc:TaxExclusiveAmount. Ajoutez-le juste après cbc:LineExtensionAmount, avec le total des lignes, moins cbc:AllowanceTotalAmount, plus cbc:ChargeTotalAmount, arrondi à deux décimales.
C'est le montant net sur lequel la TVA est calculée, et deux contrôles ultérieurs partent de lui. Attendez-vous à voir BR-CO-13 et BR-CO-15 à côté de cette règle tant que l'élément est absent.
Ce que la règle vérifie
La règle s'exécute sur cac:LegalMonetaryTotal et passe dès qu'un enfant cbc:TaxExclusiveAmount existe. Elle ne regarde pas le montant ; BR-CO-13 en contrôle la valeur.
Un document valide au regard du schéma ne peut pas contenir de montant vide. Lors d'un essai, un cbc:TaxExclusiveAmount auto-fermant qui ne portait que son currencyID a échoué à l'étape XSD, et cette règle n'a jamais été atteinte.
Le total est requis même lorsqu'il répète une autre valeur, par exemple lorsqu'il n'y a ni remise ni frais au niveau du document et qu'il est égal au total des lignes.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-109 | Montant total de la facture hors TVA | cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount |
| BT-106 | Somme des montants nets des lignes de facture | cac:LegalMonetaryTotal/cbc:LineExtensionAmount |
| BT-107 | Somme des remises au niveau du document | cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount |
| BT-108 | Somme des charges ou frais au niveau du document | cac:LegalMonetaryTotal/cbc:ChargeTotalAmount |
Comment une intégration en arrive là
Causes possibles, déduites de la forme de la règle et non d'une utilisation mesurée :
- Le système source ne stocke que le total brut et la TVA, et le total net n'est jamais calculé pour l'export.
- Le mapping omet les totaux qu'il juge redondants, comme un total net égal au total des lignes.
- Les totaux net et brut proviennent d'un seul champ de la source, et seul l'élément brut est écrit.
- Un calcul en amont a renvoyé une valeur nulle pour le total net, et le sérialiseur a omis l'élément.
Comment corriger le document
- Fixez d'abord les données d'entrée : le total des lignes, le total des remises au niveau du document et le total des frais au niveau du document.
BR-CO-10,BR-CO-11etBR-CO-12les contrôlent. - Calculez le total des lignes, moins le total des remises, plus le total des frais, en arithmétique décimale, et arrondissez à deux décimales. Laissez de côté un total des remises ou des frais qui n'est pas envoyé.
- Écrivez le résultat sous la forme de
cbc:TaxExclusiveAmount, avec la devise du document danscurrencyID, entrecbc:LineExtensionAmountetcbc:TaxInclusiveAmount. - Vérifiez que le total TVA comprise est égal à ce montant plus le total de TVA, ce que
BR-CO-15contrôle ensuite.
Valider votre facture corrigée
Avant et après
Ce sont des extraits, pas des documents complets. Les documents synthétiques complets dont ils proviennent sont liés ci-dessous.
Fragment de la facture en échec : les totaux monétaires passent directement du total des lignes au total TVA comprise
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<!-- VAT breakdown omitted from this fragment -->
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="GBP">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="GBP">0.00</cbc:ChargeTotalAmount>
<!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>Fragment de la facture corrigée : le total hors TVA de 25.00 se place entre les deux
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="GBP">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="GBP">0.00</cbc:ChargeTotalAmount>
<!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>La facture corrigée a un cbc:TaxExclusiveAmount de 25.00 entre le total des lignes et le total TVA comprise ; il est absent de la facture en échec, identique par ailleurs. Deux règles EN 16931 échouent à côté de BR-13. BR-CO-13, aux totaux monétaires, attend un total hors TVA égal à 25.00 - 0.00 + 0.00 et ne trouve rien à comparer. BR-CO-15, à la racine du document, a besoin du total hors TVA pour confirmer qu'en y ajoutant le total de TVA de 5.00 on obtient le total TVA comprise de 30.00. Ajouter l'élément lève les trois constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-13, BR-CO-13 et BR-CO-15. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML en erreurTélécharger le XML corrigé
Enregistré avec phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, le moteur du validateur gratuit, sur des données synthétiques. Un résultat enregistré est une preuve de non-régression pour ces documents ; ce n'est pas une certification.
Où la règle s'applique
- S'applique de la même façon aux documents UBL
InvoiceetCreditNote. Lors d'un essai, un avoir sans ce total a signalé les trois mêmes règles, tout comme l'exemple plus riche avec remises et frais au niveau du document. - Le schéma UBL n'exige pas cet élément : c'est pourquoi le document en échec passe l'étape XSD et le manque n'est détecté que par les règles EN 16931.
- Tant que le total manque,
BR-CO-15ne peut pas vous dire si le total TVA comprise est correct. Contrôlez-le à nouveau une fois l'élément rétabli.
Règles liées
- BR-CO-13 vérifie que le total hors TVA découle des totaux des lignes, des remises et des frais
- BR-CO-15 ajoute le total de TVA à ce montant pour contrôler le total TVA comprise
- BR-12 exige le total des lignes à partir duquel ce montant est calculé
- BR-DEC-12 limite le total hors TVA à deux décimales
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : Understanding EN 16931 validation errors
Portée et source
Rédigé pour Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, tel qu'appliqué aux documents Invoice et CreditNote en UBL 2.1. D'autres profils, syntaxes et versions peuvent définir cet identifiant autrement. Version du catalogue d'aide 2026-09-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-24.
La définition officielle de BR-13 (en anglais) contient le texte normatif et le test. Cette page en est notre explication, pas une copie.
Cette aide ne modifie pas le verdict du moteur. Corriger ce constat ne signifie pas que le document passe toutes les étapes de validation, et la validation ne certifie pas la conformité juridique ou fiscale et ne transmet aucun document via Peppol.

