Aller au contenu

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

BR-37 : Donner un code de catégorie de TVA à chaque charge au niveau du document

Un cac:AllowanceCharge à la racine avec cbc:ChargeIndicator à true doit avoir un cbc:ID dans un cac:TaxCategory du régime VAT, sinon les frais ne sont taxés nulle part.

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

Sur cette page

La réponse courte

BR-37 échoue lorsqu'un cac:AllowanceCharge placé directement sous la racine du document, avec cbc:ChargeIndicator à true, n'a pas de code de catégorie de TVA : aucun cac:TaxCategory portant un cbc:ID sous le régime fiscal VAT. Ajoutez la catégorie dans laquelle les frais sont taxés ; dans la facture corrigée, les frais de 3.50 sont en S à 20.

Chaque charge au niveau du document est taxée pour elle-même et doit entrer dans la base imposable d'exactement une ventilation de la TVA. Sans catégorie, elle n'entre dans aucune, ce qui se traduit dans l'exemple enregistré par BR-S-08 à côté de cette règle.

Ce que la règle vérifie

Pour chaque cac:AllowanceCharge à la racine qui se lit comme des frais, la règle veut un cac:TaxCategory avec un enfant cbc:ID et un cac:TaxScheme/cbc:ID égal à VAT, comparé après suppression des espaces et passage en majuscules. Lors d'un essai, vat en minuscules a passé.

Le régime fiscal fait partie du contrôle. Lors d'un essai avec GST comme régime des frais, BR-37 a été signalé seul : le contrôle de la ventilation au taux normal ne lit pas le régime des frais, il a donc continué à compter les 3.50 et a passé.

Seule la présence de l'élément de code est contrôlée ici. Lors d'un essai, un cbc:ID vide dans la catégorie des frais a passé BR-37 et a été signalé par BR-CL-17 et PEPPOL-EN16931-R008, ainsi que par BR-S-08, car un code vide n'est pas S.

Lors d'un essai, des frais sans aucun cac:TaxCategory ont signalé les deux mêmes règles que l'exemple enregistré.

Les frais de ligne ne sont pas concernés. Ils n'ont pas de catégorie propre et sont taxés avec la ligne, comme partie de son montant net.

TermeSignificationÉlément UBL
BG-21Charges ou frais au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = true]
BT-102Code de catégorie de TVA des charges ou frais au niveau du documentcac:AllowanceCharge/cac:TaxCategory/cbc:ID
BT-103Taux de TVA des charges ou frais 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 :

  • Des frais de port, d'emballage ou de manutention sont ajoutés comme montant d'en-tête par un module qui ignore tout de la TVA.
  • Le mapping des frais reprend le motif et le montant de la commande, et les attributs fiscaux restent sur les lignes de commande.
  • La source contient un taux pour les frais mais aucun code de catégorie, si bien que le mapping écrit cbc:Percent et le régime fiscal et omet cbc:ID, comme dans l'exemple enregistré.
  • Les attributs fiscaux utilisent un nom de régime local dans la source, et cac:TaxScheme/cbc:ID est écrit avec ce nom au lieu de VAT.

Comment corriger le document

  1. Établissez comment les frais sont taxés, à partir du paramétrage fiscal du type de frais ou des opérations qu'ils accompagnent.
  2. Ajoutez cbc:ID comme premier enfant du cac:TaxCategory des frais, suivi de cbc:Percent et de cac:TaxScheme/cbc:ID à VAT. La catégorie vient après cbc:Amount et cbc:BaseAmount.
  3. Lorsque des frais couvrent des opérations taxées différemment, scindez-les en une charge par catégorie et par taux. Le total des frais reste le même.
  4. Ajoutez les frais à la base imposable de leur ventilation de la TVA et recalculez la TVA à cet endroit. BR-S-08 et les règles correspondantes des autres catégories vérifient 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 catégorie des frais a un taux et un régime, mais pas de code

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="GBP">3.50</cbc:Amount>
  <cbc:BaseAmount currencyID="GBP">35.00</cbc:BaseAmount>
  <cac:TaxCategory>
    <cbc:Percent>20</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>

Fragment de la facture corrigée : les frais sont au taux normal, code S à 20

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="GBP">3.50</cbc:Amount>
  <cbc:BaseAmount currencyID="GBP">35.00</cbc:BaseAmount>
  <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 ouvre le cac:TaxCategory des frais par un cbc:ID à S ; dans la facture en échec, la catégorie garde son taux de 20 et son régime VAT mais n'a pas de code. Le document en échec signale aussi BR-S-08. Sans catégorie, les frais de 3.50 ne comptent plus dans la ventilation au taux normal, dont la base calculée tombe à 56.00 de lignes moins la remise de 1.00, soit 55.00, face à une base imposable de 58.50. Rétablir le code 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 Invoice et CreditNote. Lors d'un essai, la version avoir de l'exemple enregistré a signalé BR-37 à cac:AllowanceCharge[2] avec BR-S-08.
  • L'indice dans l'emplacement du constat compte chaque cac:AllowanceCharge à la racine, remises comprises : les frais sont ici le deuxième élément, après la remise du document.
  • La règle de ventilation qui l'accompagne suit la catégorie que les frais auraient dû avoir : ici BR-S-08, parce que les frais relèvent de la ventilation au taux normal.
  • Une fois le code à S, les frais ont aussi besoin d'un taux supérieur à zéro, ce que vérifie BR-S-07.

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-28.1 : source vérifiée le 2026-09-28, explication mise à jour le 2026-09-28.

La définition officielle de BR-37 (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.