Aller au contenu

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

BR-32 : Ajouter une catégorie de TVA à chaque remise au niveau du document

Une remise au niveau du document exige un cac:TaxCategory avec un cbc:ID dans le schéma TVA, afin que la remise soit déduite de la bonne ventilation de la TVA.

EN 16931Erreur : le document n'est pas valideRemises et fraisTVA

Sur cette page

La réponse courte

BR-32 échoue lorsqu'un cac:AllowanceCharge au niveau racine dont le cbc:ChargeIndicator vaut false n'a pas de code de catégorie de TVA, c'est-à-dire aucun cac:TaxCategory avec un cbc:ID dont le cac:TaxScheme/cbc:ID est VAT. Ajoutez la catégorie et le taux des livraisons ou prestations que la remise réduit, comme le fait la facture corrigée avec S à 20.

Une remise sans catégorie n'est déduite dans aucune ventilation de la TVA, si bien que les contrôles de base imposable la perdent ; dans l'exemple enregistré, BR-S-08 échoue en même temps.

Ce que la règle vérifie

Chaque cac:AllowanceCharge placé directement sous la racine Invoice ou CreditNote et qui se lit comme une remise doit contenir un cac:TaxCategory qui a un enfant cbc:ID et appartient au schéma fiscal VAT.

Le schéma est comparé après suppression des espaces et passage en majuscules : vat passe donc. Une catégorie relevant d'un autre schéma ne compte pas : lors d'un essai avec GST à la place de VAT, BR-32 a été signalé.

Le code de catégorie doit être présent en tant qu'élément. Lors d'un essai, un cac:TaxCategory avec un taux mais sans cbc:ID a signalé cette règle ; celui qui avait un cbc:ID vide l'a passée et a été rejeté par BR-CL-17 et PEPPOL-EN16931-R008 à la place.

Le taux est contrôlé par d'autres règles. Avec S et sans cbc:Percent, le document a signalé BR-S-06 et BR-S-08 plutôt que cette règle.

Les frais au niveau du document ont la règle correspondante BR-37. Les remises sur une ligne ne portent pas de catégorie propre, car elles font partie du montant net de la ligne et prennent la catégorie de la ligne.

TermeSignificationÉlément UBL
BG-20Remises au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]
BT-95Code de catégorie de TVA de la remise au niveau du documentcac:AllowanceCharge/cac:TaxCategory/cbc:ID
BT-96Taux de TVA de la remise au niveau du documentcac:AllowanceCharge/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 remise est modélisée comme un montant d'en-tête sans attributs fiscaux, car le système source l'applique après le calcul de la TVA.
  • Le mapping copie la catégorie de taxe sur les lignes et les frais, mais n'a jamais été écrit pour les remises.
  • Le document couvre plusieurs catégories ou taux de TVA, et l'export ne sait pas à laquelle la remise appartient : il omet donc la catégorie.
  • Le cac:TaxScheme porte un nom de taxe local, ou est absent, au lieu de VAT.

Comment corriger le document

  1. Déterminez quelles livraisons ou prestations la remise réduit. Sa catégorie et son taux de TVA sont ceux des livraisons ou prestations auxquelles elle s'applique.
  2. Ajoutez cac:TaxCategory après cbc:Amount (et après cbc:BaseAmount s'il est présent), avec cbc:ID pour la catégorie, cbc:Percent pour le taux et cac:TaxScheme/cbc:ID à VAT.
  3. Si une même remise couvre des livraisons ou prestations de catégories ou de taux différents, scindez-la en une remise par catégorie et par taux, chacune avec sa part du montant. Le total des remises reste le même.
  4. Vérifiez la ventilation de la TVA : la remise doit être soustraite de la base imposable de sa catégorie et de son taux, et le montant de taxe recalculé à partir de là. BR-S-08 et les règles correspondantes pour les autres catégories contrôlent cette somme.

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 remise au niveau du document a un motif et un montant, mais aucune catégorie de taxe

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">1.00</cbc:Amount>
</cac:AllowanceCharge>

Fragment de la facture corrigée : la remise est au taux normal de 20 dans le schéma TVA

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">1.00</cbc:Amount>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>20</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>

La facture corrigée porte sur sa remise au niveau du document un cac:TaxCategory S à 20 dans le schéma VAT, et la facture en échec n'en a aucun. Le document en échec signale aussi BR-S-08 : sans catégorie, la remise de 1.00 sort de la somme au taux normal, qui devient 56.00 de lignes plus les frais de 3.50, soit 59.50, un écart de 1.00 entier par rapport à la base imposable de 58.50. Rétablir la catégorie ramène cette somme à 58.50 et fait disparaître 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 à Invoice et à CreditNote ; lors d'un essai, la version avoir de l'exemple enregistré a signalé BR-32 et BR-S-08 aux mêmes endroits.
  • La règle de base imposable qui l'accompagne dépend de la ventilation que la remise aurait dû réduire. Ici, c'est la ventilation au taux normal, donc BR-S-08.
  • Ajouter la catégorie ne suffit pas pour la catégorie S : la remise a aussi besoin d'un taux supérieur à zéro, ce que vérifie BR-S-06.

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