Sur cette page
La réponse courte
BR-IC-10 échoue lorsque le cac:TaxCategory d'une ventilation de TVA K, dans cac:TaxTotal/cac:TaxSubtotal, n'a ni cbc:TaxExemptionReasonCode ni cbc:TaxExemptionReason. Ajoutez le code VATEX-EU-IC, le texte Intra-community supply ou sa formulation standard dans la langue de la facture, ou les deux, comme le fait la facture corrigée.
La catégorie K a exactement un motif correct ; il a donc sa place dans le mapping de la catégorie plutôt que dans des données par article.
Ce que la règle vérifie
La règle s'exécute sur chaque cac:TaxCategory avec un cbc:ID à K et le régime fiscal VAT dans la ventilation de la TVA au niveau du document, et le constat pointe sur cet élément. Elle passe lorsque l'élément a un enfant code de motif, un enfant texte de motif, ou les deux.
L'un ou l'autre champ suffit à lui seul. Lors d'un essai, la facture corrigée avec seulement VATEX-EU-IC, puis avec seulement le texte, a passé toutes les étapes.
La valeur elle-même n'est pas lue. Un texte arbitraire a passé, tout comme le code sans rapport VATEX-EU-132 sur une ventilation K, sans constat d'aucune étape. D'autres règles détectent certains codes erronés : un code inconnu signale BR-CL-22, et VATEX-EU-G sur une ventilation K a signalé la règle Peppol PEPPOL-EN16931-P0104, qui lie ce code à la catégorie G.
Un cbc:TaxExemptionReason vide compte comme présent pour cette règle. Lors d'un essai, le seul constat a été PEPPOL-EN16931-R008.
Un motif sur la ligne n'est pas lu. Avec le code et le texte déplacés dans le cac:ClassifiedTaxCategory de la ligne, la ventilation a toujours signalé BR-IC-10, et la ligne a entraîné les avertissements UBL-CR-600 et UBL-CR-601 pour des champs qu'elle ne devrait pas porter.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
| BT-120 | Motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason |
| BT-121 | Code du motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode |
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 :
- Le mapping n'écrit de motifs d'exonération que pour la catégorie
E, etKa été ajoutée plus tard sans l'étendre. - Le motif est rattaché aux lignes dans le système source et n'est pas recopié dans la ventilation construite à partir d'elles.
- Le modèle PDF imprime la mention de livraison intracommunautaire en pied de page, et rien ne la mappe dans les données structurées.
- Les champs de motif vides sont supprimés à l'export, et le code fiscal utilisé pour les livraisons intracommunautaires n'avait aucun motif configuré.
Comment corriger le document
- Confirmez que la livraison est réellement une livraison intracommunautaire. Si c'est le cas, la catégorie
Kreste. - Dans le
cac:TaxCategoryde la ventilationK, ajoutezcbc:TaxExemptionReasonCodeavecVATEX-EU-IC,cbc:TaxExemptionReasonavecIntra-community supplyou son équivalent standard dans la langue de la facture, ou les deux. - Respectez l'ordre UBL :
cbc:ID,cbc:Percent, le code, le texte, puiscac:TaxScheme. Avec le texte avant le code, le document a échoué à l'étape XSD lors d'un essai. - Configurez le motif sur le code fiscal
Kà la source, afin que chaque ventilation intracommunautaire soit générée avec lui.
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 : une ventilation K avec un taux mais sans motif
<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>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Fragment de la facture corrigée : le code et le texte suivent tous deux le taux
<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>
<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 facture corrigée a cbc:TaxExemptionReasonCode VATEX-EU-IC et cbc:TaxExemptionReason Intra-community supply dans la catégorie de taxe K ; la facture en échec n'a ni l'un ni l'autre, et elle est identique par ailleurs. BR-IC-10 est le seul constat que signale le document en échec. L'un ou l'autre élément seul l'aurait aussi levé.
Ce que le validateur a signalé
- La facture en erreur signale BR-IC-10. 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. Lors d'un essai, la facture en échec transformée en avoir a signalé le même constat sur la même ventilation. - Seules les ventilations
Ksous le régimeVATsont concernées. Les ventilations exonérées, en autoliquidation, d'exportation et non soumises à la TVA ont leurs propres règles de motif :BR-E-10,BR-AE-10,BR-G-10etBR-O-10. - Peppol ajoute le contrôle inverse : une ventilation portant
VATEX-EU-ICdoit être de catégorieK, sinonPEPPOL-EN16931-P0106est signalé. - Un motif n'est pas tout ce dont un document
Ka besoin.BR-IC-02,BR-IC-11etBR-IC-12contrôlent les identifiants TVA, la date de livraison ou la période de facturation, et le pays de livraison.
Règles liées
- PEPPOL-EN16931-P0106 rejette le code VATEX-EU-IC sur toute ventilation qui n'est pas de catégorie K
- BR-E-10 demande un motif sur les ventilations exonérées, où la formulation dépend de l'exonération
- BR-O-10 est le même contrôle de présence pour les ventilations non soumises à la TVA
- BR-CL-22 rejette un code de motif qui ne figure pas dans la liste VATEX
- 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-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-24.
La définition officielle de BR-IC-10 (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.

