Sur cette page
La réponse courte
BR-CO-14 échoue lorsque cac:TaxTotal/cbc:TaxAmount n'est pas la somme des valeurs cbc:TaxAmount des éléments cac:TaxSubtotal du même cac:TaxTotal. Additionnez les montants de la ventilation, arrondissez à deux décimales et envoyez ce résultat comme total de la TVA.
La règle n'indique pas quel côté est faux, seulement que les deux doivent concorder tels qu'ils sont envoyés. Si le système source obtient son total de TVA autrement, par exemple en additionnant la TVA ligne par ligne, les montants de la ventilation doivent quand même donner ce total, et chacun d'eux reste soumis à BR-CO-17.
Ce que la règle vérifie
La règle s'exécute sur chaque cac:TaxTotal placé directement sous la racine du document et compare son propre cbc:TaxAmount au cbc:TaxAmount de ses enfants cac:TaxSubtotal. Une ventilation avec 0.00 de TVA, comme une catégorie au taux zéro, n'ajoute simplement rien.
La somme est arrondie à deux décimales et comparée exactement. Un total de TVA de 11.71 face à une ventilation qui donne 11.70 échoue.
Un cac:TaxTotal sans cac:TaxSubtotal est ignoré. C'est ainsi que le second bloc de taxes, qui ne porte que le montant de TVA dans la devise de comptabilisation de la TVA, passe cette règle.
La règle ne recalcule pas la TVA. Savoir si chaque montant de la ventilation correspond à sa base imposable et à son taux relève de BR-CO-17, et ce contrôle tolère un écart inférieur à une unité monétaire. BR-CO-14 n'a pas cette marge.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-110 | Montant total de la TVA de la facture | cac:TaxTotal/cbc:TaxAmount |
| BT-117 | Montant de la TVA de la catégorie | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount |
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 :
- La TVA est calculée et arrondie ligne par ligne et ces valeurs sont additionnées pour le total, tandis que la ventilation est calculée par catégorie à partir de la base imposable de la catégorie. Les deux peuvent différer d'un centime ou plus.
- Le total de la TVA est copié depuis le système source et la ventilation est recalculée lors du mapping.
- Une catégorie de TVA présente dans le total source n'a pas de
cac:TaxSubtotaldans le XML, ou une ventilation est émise deux fois. - Un ajustement ultérieur, comme des frais au niveau du document, a mis à jour la ventilation mais pas le total de TVA stocké.
Comment corriger le document
- Construisez d'abord la ventilation de la TVA : un
cac:TaxSubtotalpar catégorie et taux de TVA, chacun avec son montant de taxe arrondi à deux décimales. - Additionnez ces valeurs
cbc:TaxAmounten arithmétique décimale et arrondissez à deux décimales. - Écrivez le résultat dans le
cbc:TaxAmountplacé directement sous le mêmecac:TaxTotal. - Recalculez le total TVA comprise à partir du total de TVA corrigé, puis le montant à payer.
BR-CO-15etBR-CO-16les vérifient.
L'exemple enregistré comporte une ventilation au taux normal et une au taux zéro.
Montants de taxe de la ventilation : 11.70 + 0.00 = 11.70 Total de TVA envoyé (BT-110) : 11.80, donc BR-CO-14 échoue Total TVA comprise envoyé : 80.20, soit 68.50 + 11.70 Face aux 11.80 envoyés, BR-CO-15 attend 68.50 + 11.80 = 80.30, et échoue donc aussi
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 : le total de TVA indique 11.80, les ventilations donnent 11.70
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">11.80</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">58.50</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<!-- tax scheme omitted from this fragment -->
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">10.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<!-- tax scheme omitted from this fragment -->
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>Fragment de la facture corrigée : le total de TVA est la somme des deux ventilations
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
<!-- both VAT breakdowns unchanged and omitted from this fragment -->
</cac:TaxTotal>Seul le cbc:TaxAmount placé directement sous cac:TaxTotal diffère : 11.80 dans le document en échec, 11.70 dans le document corrigé. Le document en échec signale aussi BR-CO-15, car le total TVA comprise de 80.20 est égal à 68.50 plus 11.70, et non à 68.50 plus les 11.80 envoyés. Corriger le total de TVA lève les deux constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-CO-14 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 aussi bien aux documents UBL
Invoicequ'auxCreditNote; un avoir comportant la même erreur signale les deux mêmes constats. - Augmenter le total TVA comprise et le montant à payer pour les accorder à un total de TVA erroné n'aide pas. Avec les trois ajustés sur 11.80, le document signale toujours
BR-CO-14, désormais seul. - Un document sans aucun
cac:TaxSubtotaln'est pas détecté ici, car la règle l'ignore. C'estBR-CO-18qui signale alors la ventilation manquante.
Règles liées
- BR-CO-15 ajoute ce total de TVA au total hors TVA pour vérifier le total TVA comprise
- BR-CO-17 vérifie chaque montant de taxe de la ventilation par rapport à sa base imposable et à son taux
- BR-CO-18 exige au moins une ventilation de la TVA
- BR-S-09 vérifie le montant de taxe d'une ventilation au taux normal
- 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-20.
La définition officielle de BR-CO-14 (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.

