Aller au contenu

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

BR-S-08 : Corriger une base imposable au taux normal qui ne correspond pas à ses lignes, frais et remises

Pour chaque taux normal, la base imposable de la ventilation doit correspondre aux montants des lignes au taux normal, plus les frais et moins les remises au niveau du document à ce taux.

EN 16931Erreur : le document n'est pas valideTVATotaux

Sur cette page

La réponse courte

BR-S-08 échoue lorsque le cbc:TaxableAmount d'une ventilation de la TVA au taux normal ne correspond pas à ce que le document contient à ce taux. Prenez le cbc:Percent de la ventilation, additionnez le cbc:LineExtensionAmount de chaque ligne de catégorie S à ce taux, ajoutez les frais au niveau du document de catégorie S à ce taux, soustrayez les remises au niveau du document de catégorie S à ce taux, et écrivez le résultat comme base imposable.

Le regroupement se fait par taux autant que par catégorie. Les lignes à un autre taux normal, et les lignes d'autres catégories, appartiennent à d'autres ventilations.

Ce que la règle vérifie

La règle s'exécute une fois pour chaque ventilation dont la cac:TaxCategory a un cbc:ID égal à S sous le schéma VAT, avec le taux propre à cette ventilation. Les taux sont comparés comme des nombres, donc 20 dans la ventilation correspond à 20.00 sur une ligne.

D'abord, il doit exister quelque chose au taux normal à ce taux : une ligne, ou une remise ou des frais portant une cac:TaxCategory. Une ventilation à 19 % sur des lignes à 20 % échoue sur ce point, quels que soient ses montants.

Ensuite, la base imposable est comparée à : les montants nets des lignes, plus les frais au niveau du document, moins les remises au niveau du document, chacun filtré sur la catégorie S et le même taux. Seuls les éléments cac:AllowanceCharge placés directement sous la racine du document entrent dans la somme ; les remises et frais de ligne sont déjà inclus dans le montant net de la ligne.

La comparaison a une tolérance. La règle passe lorsque la base imposable s'écarte de moins de 1.00 du montant calculé, et échoue pour un écart d'exactement 1.00. Pour un montant calculé de 58.50, des bases imposables de 57.51 et 59.49 passent ; 57.50 et 59.50 échouent.

Être dans la tolérance ne rend pas le montant correct. Une base imposable de 59.40 pour un montant calculé de 58.50 a passé toutes les étapes de validation lors de notre essai, et elle reste fausse de 0.90. Envoyez le montant calculé.

Deux ventilations pour le même taux normal échouent toutes deux, car chacune est comparée à la somme complète pour ce taux.

TermeSignificationÉlément UBL
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
BT-131Montant net de ligne de facturecac:InvoiceLine/cbc:LineExtensionAmount
BT-152Taux de TVA de l'article facturécac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent
BT-99Montant des charges ou frais au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = true]/cbc:Amount
BT-92Montant de la remise au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]/cbc:Amount

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 base imposable est construite à partir des seules lignes, et les frais ou la remise au niveau du document sont oubliés, ou appliqués avec le mauvais signe.
  • Les lignes sont regroupées par catégorie mais pas par taux, si bien que deux taux normaux se retrouvent dans une seule ventilation.
  • Les lignes négatives, comme les corrections ou les retours, sont ignorées lors de la somme.
  • Des lignes au taux zéro ou exonérées sont incluses dans la base imposable au taux normal.
  • Le taux de la ventilation provient d'une autre source que les taux des lignes, et les deux divergent, par exemple après un changement de taux.
  • La base imposable est déduite à rebours d'un montant TTC au lieu d'être la somme des montants nets du document.

Comment corriger le document

  1. Rassemblez les lignes dont la cac:Item/cac:ClassifiedTaxCategory a un cbc:ID égal à S, et regroupez-les par cbc:Percent.
  2. Pour chaque taux, additionnez les valeurs cbc:LineExtensionAmount des lignes, ajoutez les montants des cac:AllowanceCharge à la racine dont le cbc:ChargeIndicator vaut true en catégorie S à ce taux, et soustrayez ceux à false. Utilisez une arithmétique décimale.
  3. Émettez exactement un cac:TaxSubtotal par taux, avec ce montant comme cbc:TaxableAmount et le taux comme cbc:Percent.
  4. Recalculez le cbc:TaxAmount de la ventilation à partir de la base imposable corrigée. BR-S-09 et BR-CO-17 le contrôlent, et le total de TVA et le total TTC en découlent.

L'exemple enregistré a deux lignes au taux normal de 20 %, une ligne au taux zéro, et une remise et des frais au niveau du document, tous deux au taux normal de 20 %.

Lignes au taux normal de 20 % : 58.00 + (-2.00) = 56.00
Frais au niveau du document, S à 20 % : + 3.50
Remise au niveau du document, S à 20 % : - 1.00
Base imposable pour S à 20 % : 56.00 + 3.50 - 1.00 = 58.50
La ligne au taux zéro de 10.00 ne fait pas partie de ce montant
Envoyé : 60.00, soit un écart de 1.50, donc la règle échoue

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 : 60.00 de base imposable, alors que le contenu au taux normal de 20 % donne en net 58.50

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <!-- reason code and reason omitted from this fragment -->
  <cbc:Amount currencyID="GBP">1.00</cbc:Amount>
  <!-- tax category S at 20 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <!-- reason code, reason, multiplier and base amount omitted from this fragment -->
  <cbc:Amount currencyID="GBP">3.50</cbc:Amount>
  <!-- tax category S at 20 omitted from this fragment -->
</cac:AllowanceCharge>

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">60.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">11.70</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>

<!-- Standard rated lines at 20: LineExtensionAmount 58.00 and -2.00. Zero rated line: 10.00 -->

Fragment de la facture corrigée : 58.00 - 2.00 + 3.50 - 1.00 = 58.50

<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>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>

Seul le cbc:TaxableAmount au taux normal diffère : 60.00 dans la facture en échec, 58.50 dans la facture corrigée. Le document ne signale que BR-S-08. Le montant de taxe de 11.70 s'écarte de 0.30 de 20 % de 60.00, ce qui est dans la tolérance de BR-CO-17 et BR-S-09, et le total de TVA et les totaux du document sont identiques dans les deux documents.

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 aux documents UBL Invoice et CreditNote. Dans un avoir, les lignes sont des cac:CreditNoteLine et la somme est construite de la même façon ; un avoir avec les mêmes 60.00 signale la même règle.
  • Seules les ventilations au taux normal sont concernées. Les autres catégories de TVA ont leurs propres règles de base imposable.
  • La règle ne regarde pas cac:LegalMonetaryTotal. Le total hors TVA est contrôlé séparément par BR-CO-13.
  • Une ligne au taux normal à un taux sans ventilation n'est pas signalée par cette règle, qui part des ventilations présentes.

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-S-08 (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.