Aller au contenu

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

BR-CO-17 : Corriger un montant de la ventilation de la TVA qui ne correspond pas à la base imposable multipliée par le taux

Chaque montant de taxe d'une ventilation de la TVA doit concorder avec sa base imposable multipliée par son taux. Le contrôle tolère un écart inférieur à 1.00, le bon montant non.

EN 16931Erreur : le document n'est pas valideTVATotaux

Sur cette page

La réponse courte

BR-CO-17 échoue lorsque le cbc:TaxAmount d'un cac:TaxSubtotal ne concorde pas avec le cbc:TaxableAmount de ce même bloc multiplié par son cac:TaxCategory/cbc:Percent. La valeur correcte est base imposable x taux / 100, arrondie à deux décimales. Recalculez-la, puis reportez la valeur corrigée dans le total de la TVA et dans les totaux qui en dépendent.

La règle s'exécute sur chaque ventilation de la TVA, quelle que soit sa catégorie. Sur une ventilation au taux normal, le même calcul est vérifié à nouveau par BR-S-09 : les deux sont donc normalement signalées ensemble.

Ce que la règle vérifie

Pour une ventilation dont le taux n'est pas nul, la règle calcule base imposable x taux / 100, arrondit à deux décimales et compare le résultat au montant de taxe. La comparaison n'est pas exacte : elle passe lorsque les deux diffèrent de moins de 1.00 et échoue lorsque l'écart est exactement de 1.00 ou plus. Sur 25.00 à 20 %, où le montant calculé est 5.00, des montants de taxe de 4.01 et 5.99 passent, tandis que 4.00 et 6.00 échouent.

Respecter cette tolérance ne rend pas la valeur juste. Une ventilation de 5.90 sur 25.00 à 20 % est validée lorsque les totaux la suivent, et la facture déclare pourtant 0.90 de TVA en trop. Considérez la tolérance comme une marge du contrôle, et non comme une marge d'arrondi dont vous pouvez vous servir.

Lorsque le taux est 0, ou que la ventilation n'a pas du tout de cbc:Percent, le montant de taxe doit seulement s'arrondir à zéro en nombre entier : 0.40 passe cette règle et 0.50 non. Les règles de catégorie sont plus strictes ; une ventilation au taux zéro avec 0.40 de taxe est tout de même rejetée par BR-Z-09.

Les deux montants sont comparés en valeur absolue : la règle ne tient donc pas compte du signe. Un montant de taxe de -5.00 sur une base imposable de 25.00 la passe.

Seules les trois valeurs de la ventilation sont lues. Savoir si le total de la TVA du document concorde avec les ventilations est un contrôle distinct, BR-CO-14.

TermeSignificationÉlément UBL
BT-117Montant de la TVA de la catégoriecac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount
BT-116Base imposable de la catégorie de TVAcac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount
BT-119Taux de la catégorie de TVAcac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:Percent

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 ligne par ligne et les résultats des lignes sont additionnés dans la ventilation, qui s'écarte ainsi de base imposable x taux. Quelques centimes d'écart restent dans la tolérance ; un écart plus grand signifie généralement qu'une ligne a été taxée à un autre taux que celui que déclare la ventilation.
  • Le montant de taxe provient d'une écriture comptable, tandis que la base imposable et le taux sont reconstruits à partir des lignes, et les deux ont été produits à des moments différents ou à partir de données différentes.
  • Le taux est écrit sous forme de fraction, 0.2 au lieu de 20, si bien que le montant calculé vaut un centième de ce qui était prévu.
  • La base imposable a été modifiée par une remise ou des frais au niveau du document, et le montant de taxe n'a pas été recalculé.
  • Un montant brut, ou la taxe d'une autre catégorie, est mappé dans cbc:TaxAmount.

Comment corriger le document

  1. Pour chaque cac:TaxSubtotal, prenez cbc:TaxableAmount et cac:TaxCategory/cbc:Percent tels qu'ils sont envoyés.
  2. Calculez base imposable x taux / 100 en arithmétique décimale et arrondissez le résultat à deux décimales. Écrivez-le dans le cbc:TaxAmount du bloc.
  3. Si la valeur calculée ne concorde pas avec ce que contient votre comptabilité, déterminez avant l'envoi lequel est faux, de la base imposable, du taux ou de la taxe comptabilisée. N'ajustez pas le montant petit à petit jusqu'à ce qu'il entre dans la tolérance.
  4. Donnez à cac:TaxTotal/cbc:TaxAmount la somme des montants de taxe de la ventilation (BR-CO-14), puis recalculez cbc:TaxInclusiveAmount (BR-CO-15) et cbc:PayableAmount (BR-CO-16).

L'exemple enregistré comporte une seule ventilation : 25.00 imposables à 20 %.

Taxe calculée : 25.00 x 20 / 100 = 5.00
Montant de taxe envoyé : 6.50
Écart : 1.50, qui n'est pas inférieur à 1.00, donc la règle échoue
Corrigé : montant de taxe 5.00, total de la TVA 5.00, total TVA comprise 25.00 + 5.00 = 30.00

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 : 6.50 de TVA sur 25.00 à 20 %, avec des totaux construits sur la valeur erronée

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">6.50</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">6.50</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">31.50</cbc:TaxInclusiveAmount>
  <!-- allowance, charge, prepaid and rounding totals (all 0.00) omitted from this fragment -->
  <cbc:PayableAmount currencyID="GBP">31.50</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Fragment de la facture corrigée : la ventilation vaut 5.00 et les totaux suivent

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

<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>
  <!-- allowance, charge, prepaid and rounding totals (all 0.00) omitted from this fragment -->
  <cbc:PayableAmount currencyID="GBP">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Quatre valeurs diffèrent : le cbc:TaxAmount de la ventilation et le cac:TaxTotal/cbc:TaxAmount du document passent de 6.50 à 5.00, et cbc:TaxInclusiveAmount et cbc:PayableAmount passent de 31.50 à 30.00. Le document en échec signale aussi BR-S-09, car la ventilation est au taux normal et cette règle refait le calcul pour la catégorie. Aucune règle de totaux ne se déclenche, car les totaux du document en échec ont été construits de manière cohérente sur les 6.50 erronés. Si seule la ventilation avait été fausse, BR-CO-14 aurait aussi été signalée.

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 avec les mêmes 6.50 sur 25.00 à 20 % signale les deux mêmes règles.
  • Chaque cac:TaxSubtotal d'un cac:TaxTotal est vérifié, quelle que soit la catégorie de TVA. Les équivalents propres à chaque catégorie, comme BR-S-09 pour le taux normal et BR-Z-09 pour le taux zéro, s'exécutent en plus.
  • Les montants sont comparés dans la devise dans laquelle ils sont écrits. La règle ne convertit pas les devises.
  • Une ventilation qui passe cette règle peut encore avoir une base imposable fausse. Pour les ventilations au taux normal, BR-S-08 la vérifie par rapport aux lignes, aux remises et aux frais.

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-17 (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.