Aller au contenu

Ironfang Finance - Référence des règles

BR-CO-14 : Corriger un total de la TVA qui ne correspond pas à la ventilation de la TVA

Le total de la TVA d'un bloc de taxes doit être égal à la somme des montants de taxe de ses ventilations de TVA, arrondie à deux décimales.

EN 16931Erreur : le document n'est pas valideTotauxTVA

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.

TermeSignificationÉlément UBL
BT-110Montant total de la TVA de la facturecac:TaxTotal/cbc:TaxAmount
BT-117Montant de la TVA de la catégoriecac: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:TaxSubtotal dans 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

  1. Construisez d'abord la ventilation de la TVA : un cac:TaxSubtotal par catégorie et taux de TVA, chacun avec son montant de taxe arrondi à deux décimales.
  2. Additionnez ces valeurs cbc:TaxAmount en arithmétique décimale et arrondissez à deux décimales.
  3. Écrivez le résultat dans le cbc:TaxAmount placé directement sous le même cac:TaxTotal.
  4. Recalculez le total TVA comprise à partir du total de TVA corrigé, puis le montant à payer. BR-CO-15 et BR-CO-16 les 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é

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 Invoice qu'aux CreditNote ; 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:TaxSubtotal n'est pas détecté ici, car la règle l'ignore. C'est BR-CO-18 qui signale alors la ventilation manquante.

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.