Aller au contenu

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

BR-S-05 : Donner à une ligne au taux normal un taux de TVA supérieur à zéro

Une ligne en catégorie de TVA S doit avoir un taux supérieur à zéro dans la catégorie de taxe de son article. Un taux de 0, un taux négatif ou l'absence de taux échoue.

EN 16931Erreur : le document n'est pas valideTVALignes et prix

Sur cette page

La réponse courte

BR-S-05 échoue sur chaque ligne dont la cac:Item/cac:ClassifiedTaxCategory a un cbc:ID égal à S et un cbc:Percent qui n'est pas supérieur à zéro. Écrivez dans cbc:Percent le taux normal applicable à l'article, 20 dans l'exemple enregistré ; si aucune TVA n'est due sur l'article, donnez-lui plutôt la catégorie qui en indique la raison.

La catégorie S avec un taux de 0 % est une contradiction que la règle n'accepte pas. Les fournitures au taux zéro, exonérées et en autoliquidation ont chacune leur propre code de catégorie et leur propre ventilation.

Ce que la règle vérifie

La règle parcourt chaque catégorie de taxe d'article dont le cbc:ID vaut S sous le schéma VAT, dans cac:InvoiceLine ou cac:CreditNoteLine, et signale sur cette cac:ClassifiedTaxCategory. Deux lignes fautives donnent deux constats.

Elle passe lorsque cbc:Percent est un nombre supérieur à zéro : 0, 0.00 et les taux négatifs échouent donc tous. Omettre l'élément échoue aussi : lors d'un essai, une ligne au taux normal sans cbc:Percent a signalé cette règle et BR-S-08.

Aucune liste de taux nationaux n'est consultée. Tout nombre positif satisfait cette règle, et le validateur ne peut pas savoir s'il s'agit du bon taux pour l'article.

Les remises et frais au niveau du document sont hors de son périmètre. Lors d'un essai, une remise au niveau du document au taux normal à 0 a été signalée comme BR-S-06, avec BR-S-08, et non comme cette règle.

Une ligne négative n'a droit à aucune exception. L'exemple enregistré échoue sur une ligne de correction de quantité -1 et d'un montant net de -2.00 ; le montant porte le signe et le taux reste positif.

TermeSignificationÉlément UBL
BT-151Code de catégorie de TVA de l'article facturécac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note)
BT-152Taux de TVA de l'article facturécac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent in a credit note)

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 taux de la ligne est obtenu en divisant un montant de taxe par le montant net, et une ligne sans taxe calculée séparément, comme une correction, donne 0.
  • Les lignes de correction, de remise ou de geste commercial sont créées avec un taux vide alors que la catégorie retombe par défaut sur S.
  • Les codes de taxe source ne se distinguent que par le taux, et le mapping les envoie tous vers S, y compris un code à 0 % prévu pour des ventes au taux zéro ou exonérées.
  • Un champ de taux vide est sérialisé en 0, ou l'élément cbc:Percent est omis.
  • L'article a été reclassé dans le système source, et la catégorie et le taux ont été mis à jour séparément, ce qui les a désynchronisés.

Comment corriger le document

  1. Servez-vous de l'emplacement de chaque constat pour trouver la ligne : il pointe sur la cac:ClassifiedTaxCategory dans l'article de la ligne.
  2. Établissez le traitement TVA de cet article à partir du code de taxe du système source. S'il est soumis à un taux normal, écrivez ce taux dans cbc:Percent. Une ligne de correction ou de retour prend le taux de la fourniture qu'elle corrige.
  3. Si aucune TVA n'est due sur l'article, remplacez cbc:ID par la catégorie qui en indique la raison, comme Z ou E, et déplacez le montant de la ligne vers la ventilation de cette catégorie. Cette catégorie apporte ses propres exigences, par exemple un motif d'exonération pour E.
  4. Reconstruisez la ventilation au taux normal pour ce taux à partir des lignes corrigées, puis recalculez son montant de taxe et le total de TVA. BR-S-08 et BR-S-09 contrôlent ces montants.

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 : la ligne de correction est au taux normal à 0, et la ventilation à 20 la compte toujours

<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:InvoiceLine>
  <cbc:ID>3</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example correction</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Fragment de la facture corrigée : la ligne de correction porte le même taux de 20 que la vente

<cac:InvoiceLine>
  <cbc:ID>3</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example correction</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Seul le cbc:Percent de la ligne 3 diffère : 0 dans la facture en échec, 20 dans la facture corrigée. Le document en échec signale aussi BR-S-08 sur la ventilation au taux normal à 20, car la ligne 3 n'étant plus à ce taux, le contenu à 20 donne en net 58.00 + 3.50 - 1.00 = 60.50, alors que la ventilation indique 58.50. Cet écart de 2.00 dépasse la tolérance de BR-S-08, et rétablir le taux réintègre les -2.00 dans la somme et 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 aux documents UBL Invoice et CreditNote. Une ligne d'avoir en catégorie S au taux 0 a signalé cette règle et BR-S-08 lors d'un essai.
  • Signalée par l'étape EN 16931 comme constat fatal sur la cac:ClassifiedTaxCategory de la ligne.
  • Les catégories à taux nul ont la règle de ligne inverse : BR-Z-05 et BR-AE-05 exigent exactement 0 sur les lignes au taux zéro et en autoliquidation.
  • Une ligne sans aucune catégorie est un autre échec, signalé par BR-CO-04.

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