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.
| Terme | Signification | Élément UBL |
|---|---|---|
| BG-21 | Charges ou frais au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = true] |
| BT-102 | Code de catégorie de TVA des charges ou frais au niveau du document | cac:AllowanceCharge/cac:TaxCategory/cbc:ID |
| BT-103 | Taux de TVA des charges ou frais au niveau du document | cac: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:Percentet le régime fiscal et ometcbc:ID, comme dans l'exemple enregistré. - Les attributs fiscaux utilisent un nom de régime local dans la source, et
cac:TaxScheme/cbc:IDest écrit avec ce nom au lieu deVAT.
Comment corriger le document
- Établissez comment les frais sont taxés, à partir du paramétrage fiscal du type de frais ou des opérations qu'ils accompagnent.
- Ajoutez
cbc:IDcomme premier enfant ducac:TaxCategorydes frais, suivi decbc:Percentet decac:TaxScheme/cbc:IDàVAT. La catégorie vient aprèscbc:Amountetcbc:BaseAmount. - 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.
- Ajoutez les frais à la base imposable de leur ventilation de la TVA et recalculez la TVA à cet endroit.
BR-S-08et 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é
- La facture en erreur signale BR-37 et BR-S-08. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML en erreurTélécharger le XML corrigé
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
InvoiceetCreditNote. Lors d'un essai, la version avoir de l'exemple enregistré a signaléBR-37àcac:AllowanceCharge[2]avecBR-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érifieBR-S-07.
Règles liées
- BR-32 est la même exigence pour les remises au niveau du document
- BR-S-08 ajoute à la base imposable les frais du document au taux normal, et échoue lorsque ceux-ci n'ont pas de catégorie
- BR-14 exige le total TVA comprise, où les frais et leur TVA aboutissent tous deux
- BR-CO-24 traite des frais de ligne, qui ont besoin d'un motif mais prennent leur catégorie de TVA de la ligne
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : Understanding EN 16931 validation errors
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.

