Sur cette page
La réponse courte
BR-IC-08 échoue lorsque le cbc:TaxableAmount de la ventilation K diffère du contenu intracommunautaire du document : montants nets des lignes K, plus les frais K à la racine, moins les remises K à la racine. L'exemple enregistré envoie 25.00, la ligne seule, et oublie les frais de transport de 6.00 en K ; le montant correct est 31.00.
Reconstruisez la ventilation à partir des mêmes remises et frais qui alimentent déjà le total hors TVA, qui vaut aussi 31.00 dans l'exemple.
Ce que la règle vérifie
Pour chaque cac:TaxCategory dont le cbc:ID vaut K et le schéma VAT dans le cac:TaxTotal racine, la règle compare son cac:TaxSubtotal/cbc:TaxableAmount à une somme calculée sur tout le document, et signale le constat sur cette catégorie de taxe.
Les lignes comptent quand la catégorie de leur article est K, et les éléments cac:AllowanceCharge à la racine quand leur cac:TaxCategory est K ; leurs taux ne jouent aucun rôle. Le transport à 19, par exemple, a continué de compter dans les 31.00 lors d'un essai, et seule BR-IC-07 l'a relevé.
La correspondance doit être exacte. Lors d'un essai, 31.01 a échoué, là où la règle du taux normal BR-S-08 laisserait passer un écart inférieur à 1.00.
Les totaux ne font pas partie de la comparaison. La facture en échec garde un total hors TVA de 31.00, correct selon BR-CO-13, et rien n'est signalé à son sujet.
Plusieurs ventilations K sont chacune comparées à la somme complète. Lors d'un essai, une ventilation de 25.00 pour la ligne et une autre de 6.00 pour le transport ont toutes deux échoué à cette règle, et BR-IC-01 a relevé qu'il y en avait deux.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-116 | Base imposable de la catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount |
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| 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 seules lignes, et le transport ou l'emballage ajoutés au niveau du document ne l'atteignent jamais, comme dans l'exemple enregistré.
- Les frais sont codés
Kmais rattachés à une autre ventilation, car le regroupement utilise leur code de taxe plutôt que leur catégorie. - Une remise intracommunautaire est soustraite du total hors TVA mais pas de la ventilation
K. - La base imposable est reprise de la commande, et les frais ajoutés à la facturation sont oubliés.
Comment corriger le document
- Additionnez
cbc:LineExtensionAmountde chaque ligne dont lecac:Item/cac:ClassifiedTaxCategory/cbc:IDvautK. - Ajoutez les montants des frais à la racine de catégorie
Ket soustrayez ceux des remises à la racine de catégorieK. Les remises et frais de ligne sont déjà inclus dans les montants des lignes. - Écrivez le résultat dans le
cbc:TaxableAmountde l'uniquecac:TaxSubtotalK: 25.00 + 6.00 = 31.00 dans l'exemple enregistré. Le montant de TVA reste 0.00. - Construisez chaque ventilation à partir de la même liste de lignes, remises et frais que celle qui produit
cbc:TaxExclusiveAmount, pour que les deux ne divergent pas.
L'exemple enregistré a une ligne intracommunautaire et des frais de transport en K, sans remise.
Montant net de la ligne intracommunautaire : 25.00 Frais de transport en K : + 6.00 Remises en K : aucune Base imposable attendue : 25.00 + 6.00 = 31.00 Envoyé : 25.00, sans le transport, 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 : des frais de transport de 6.00 en K, et une base imposable K de 25.00
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Freight to Berlin</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">6.00</cbc:Amount>
<!-- tax category K 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>K</cbc:ID>
<!-- rate 0, VATEX-EU-IC, reason text and tax scheme VAT omitted from this fragment -->
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">31.00</cbc:TaxExclusiveAmount>
<!-- other totals omitted from this fragment -->
</cac:LegalMonetaryTotal>Fragment de la facture corrigée : 25.00 + 6.00 = 31.00 dans la ventilation K
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">31.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>K</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReasonCode>VATEX-EU-IC</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Intra-community supply</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>La base imposable K vaut 25.00 dans la facture en échec et 31.00 dans la facture corrigée ; les frais de transport, la ligne et les totaux sont identiques dans les deux. Le document en échec ne signale que BR-IC-08.
Ce que le validateur a signalé
- La facture en erreur signale BR-IC-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 les montants descac:CreditNoteLinedans un avoir. Lors d'un essai, la facture en échec convertie en avoir a signalé le même constat. - Signalée par l'étape EN 16931 sur chaque ventilation
Kdont la base imposable est fausse. - Le montant de TVA
Kà côté doit être 0 selonBR-IC-09, et une seule ventilationKest autorisée selonBR-IC-01.
Règles liées
- BR-IC-01 n'autorise qu'une ventilation K, si bien que toute la somme K va dans une seule base imposable
- BR-AE-08 est la même somme pour la ventilation en autoliquidation
- BR-S-08 est la version au taux normal, qui regroupe par taux et admet une tolérance
- 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-IC-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.

