Sur cette page
La réponse courte
BR-G-08 échoue lorsque le cbc:TaxableAmount de la ventilation G diffère du contenu net exporté : le cbc:LineExtensionAmount de chaque ligne dont l'article est en G, plus les frais racine en G, moins les remises racine en G. La ventilation enregistrée indique 25.00, la ligne seule, et oublie la remise sur quantité de 2.50 ; le bon montant est 22.50.
Comme une exportation ne porte aucune taxe, une base imposable fausse laisse intacts tous les totaux de TVA, et cette règle peut être le seul constat qui la révèle.
Ce que la règle vérifie
Pour chaque cac:TaxCategory avec un cbc:ID à G sous le régime VAT dans le cac:TaxTotal racine, la règle compare la base imposable de la ventilation à une somme calculée sur tout le document, et signale sur cette catégorie.
La remise doit être retranchée, ni ignorée ni ajoutée. Lors d'un essai, 25.00 et 27.50 ont tous deux échoué face aux 22.50 attendus, et des frais de transport oubliés ont échoué de la même façon, 25.00 face à 29.00 dans l'exemple avec frais.
La comparaison est exacte. Lors d'un essai, 22.51 a échoué, tandis que 22.5 a passé car c'est le même nombre.
Seules les lignes et les remises et frais racine en G entrent dans la somme. C'est la catégorie de chaque article ou remise qui décide ; les taux ne sont pas lus.
Chaque ventilation G est comparée à la somme complète : deux copies du bon montant passent donc toutes les deux ici, ce qui laisse un doublon à BR-G-01.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-116 | Base imposable de la catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount |
| BT-131 | Montant net de ligne de facture | cac:InvoiceLine/cbc:LineExtensionAmount (cac:CreditNoteLine/cbc:LineExtensionAmount in a credit note) |
| BT-99 | Montant des charges ou frais au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cbc:Amount |
| BT-92 | Montant de la remise au niveau du document | cac: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 ventilation est construite à partir des totaux de ligne avant application des remises au niveau du document.
- La remise est ajoutée au lieu d'être retranchée, car son montant est stocké comme un nombre positif.
- Des frais de transport d'exportation sont facturés en
G, mais la construction de la ventilation ne lit que les lignes. - La base imposable est copiée depuis
cbc:LineExtensionAmountdanscac:LegalMonetaryTotal, qui n'inclut jamais les remises ni les frais au niveau du document.
Comment corriger le document
- Additionnez le
cbc:LineExtensionAmountde chaque ligne dont lecac:Item/cac:ClassifiedTaxCategory/cbc:IDvautG, en conservant les signes. - Ajoutez le
cbc:Amountdes élémentscac:AllowanceChargeracine enGdont lecbc:ChargeIndicatorvauttrue, et retranchez ceux àfalse. - Écrivez le résultat, avec deux décimales, comme
cbc:TaxableAmountde l'uniquecac:TaxSubtotalG, en laissant son montant de taxe à0.00. - Vérifiez que
cbc:TaxExclusiveAmountdanscac:LegalMonetaryTotalconcorde. Dans l'exemple enregistré, il vaut déjà 22.50, etBR-CO-13le compare aux lignes, remises et frais.
L'exemple enregistré comporte une ligne d'exportation et une remise sur quantité au niveau du document, toutes deux en catégorie G.
Montant net de la ligne d'exportation : 25.00 Frais au niveau du document en G : 0.00 Remise au niveau du document en G : - 2.50 Base imposable d'exportation attendue : 25.00 + 0.00 - 2.50 = 22.50 Envoyé : 25.00, sans la remise, 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 : 25.00 de base imposable en G, alors que la remise G de 2.50 ramène le contenu exporté à 22.50
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<!-- reason code 95 and reason omitted from this fragment -->
<cbc:Amount currencyID="GBP">2.50</cbc:Amount>
<!-- tax category G at 0 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>G</cbc:ID>
<!-- rate 0, reason VATEX-EU-G, reason text and tax scheme omitted from this fragment -->
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- export line in G: LineExtensionAmount 25.00 -->Fragment de la facture corrigée : 25.00 - 2.50 = 22.50
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">22.50</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>G</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReasonCode>VATEX-EU-G</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Export outside the EU</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Seul le cbc:TaxableAmount de l'exportation diffère : 25.00 dans la facture en échec, 22.50 dans la facture corrigée. Le document en échec ne signale que BR-G-08. Son cac:LegalMonetaryTotal déduit déjà la remise, donc les règles de totaux sont satisfaites, et le montant de taxe de la ventilation vaut 0.00 dans les deux.
Ce que le validateur a signalé
- La facture en erreur signale BR-G-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 UBL
InvoiceetCreditNote, en additionnant lescac:CreditNoteLinedans un avoir. Lors d'un essai, la facture en échec transformée en avoir a signalé cette règle sur la même ventilation. - Les ventilations exonérées et intracommunautaires ont le même contrôle exact avec
BR-E-08etBR-IC-08. La règle du taux normal,BR-S-08, regroupe par taux et tolère un écart inférieur à 1.00. - La ventilation d'exportation doit aussi exister une seule fois (
BR-G-01), ne porter aucune taxe (BR-G-09) et indiquer son motif (BR-G-10).
Règles liées
- BR-G-01 garantit qu'il existe une ventilation d'exportation à contrôler pour cette règle
- BR-G-09 exige que le montant de taxe de la même ventilation d'exportation soit nul
- BR-E-08 est le même contrôle exact pour la base imposable exonérée
- BR-CO-13 contrôle le total hors TVA construit à partir des mêmes lignes, remises et frais
- 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-G-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.

