Sur cette page
La réponse courte
PEPPOL-EN16931-P0106 échoue pour chaque cac:TaxCategory qui porte le code de motif d'exonération VATEX-EU-IC alors que son cbc:ID n'est pas K. Le constat pointe vers cette catégorie de taxe. Si la livraison est réellement une livraison intracommunautaire, passez la catégorie à K ; sinon, remplacez le code par celui de l'exonération réelle, ou supprimez-le.
Dans l'exemple enregistré, le code se trouve dans une ventilation exonérée (E). Passer à K change le traitement TVA de la facture, pas seulement son codage, et entraîne les exigences propres aux livraisons intracommunautaires.
Ce que la règle vérifie
La règle sélectionne chaque cac:TaxCategory dont le cbc:TaxExemptionReasonCode, mis en majuscules, vaut VATEX-EU-IC, et ne réussit que si son cbc:ID vaut K. Les minuscules ne permettent pas d'y échapper : lors d'un essai, vatex-eu-ic sur une ventilation exonérée a été signalé.
Toute catégorie autre que K échoue. Lors d'un essai, sur une ventilation au taux normal, le code a été signalé par cette règle et par BR-S-10, qui y interdit les motifs d'exonération.
Les remises et charges au niveau du document sont incluses, car leur catégorie est aussi un cac:TaxCategory ; lors d'un essai, un code à cet endroit a été signalé par cette règle, avec l'avertissement UBL-CR-480. Les catégories des lignes sont des cac:ClassifiedTaxCategory et ne sont pas lues : sur une ligne, le code n'a produit que l'avertissement UBL-CR-600.
Des règles Peppol voisines lient de la même façon les autres codes propres à une catégorie à leur catégorie : PEPPOL-EN16931-P0104 pour VATEX-EU-G et G, PEPPOL-EN16931-P0105 pour VATEX-EU-O et O, PEPPOL-EN16931-P0107 pour VATEX-EU-AE et AE, et PEPPOL-EN16931-P0108 à PEPPOL-EN16931-P0111 pour les codes du régime de la marge VATEX-EU-D, VATEX-EU-F, VATEX-EU-I et VATEX-EU-J, qui vont avec E.
La règle ne vérifie pas qu'une ventilation K remplit les conditions d'une livraison intracommunautaire. Ce sont des règles EN 16931 comme BR-IC-02, BR-IC-11 et BR-IC-12 qui le font.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-121 | Code du motif d'exonération de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode |
| BT-118 | Code de catégorie de TVA | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID |
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 :
- Un seul code d'exonération est configuré pour toute vente sans TVA à un client de l'UE, y compris les ventes exonérées ou hors du champ de la TVA pour d'autres raisons.
- La catégorie provient du code fiscal de l'article tandis que le code d'exonération provient de la fiche client, si bien qu'un client de l'UE qui achète un article exonéré reçoit
EavecVATEX-EU-IC. - Les livraisons intracommunautaires sont associées à
EouZparce qu'aucune TVA n'est facturée, alors que le code d'exonération a été correctement renseigné.
Comment corriger le document
- Établissez le traitement TVA réel à partir de votre détermination fiscale.
Kest la catégorie d'une livraison intracommunautaire ; si la livraison n'en est pas une, c'est le code qui doit changer. - S'il s'agit d'une livraison intracommunautaire, mettez
cbc:IDàKdans la ventilation et sur chaque ligne, remise et charge qu'elle couvre, et gardezVATEX-EU-IC. Fournissez ensuite ce que la catégorieKexige : lors d'un essai, passer l'exemple enregistré àKa fait apparaîtreBR-IC-02(identifiants TVA du vendeur et de l'acheteur),BR-IC-11(date de livraison ou période de facturation) etBR-IC-12(pays de livraison), qui exigent tous des données réelles. - Si la livraison est exonérée pour une autre raison, gardez
Eet remplacez le code par le code VATEX de ce fondement, ou supprimez le code et indiquez le motif sous forme de texte.BR-E-10exige l'un des deux. - Dérivez le code d'exonération de la même décision que celle qui fixe la catégorie, afin qu'ils ne puissent pas se contredire.
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 exonérée portant le code intracommunautaire
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReasonCode>VATEX-EU-IC</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Exempt from VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Fragment de la facture corrigée : la ventilation reste exonérée et le code intracommunautaire est supprimé
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Exempt from VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>La facture en échec ajoute <cbc:TaxExemptionReasonCode>VATEX-EU-IC</cbc:TaxExemptionReasonCode> à sa ventilation exonérée ; la facture corrigée garde la catégorie E avec le seul texte de motif. Le document en échec ne signale que cette règle Peppol. Son étape EN 16931 réussit, car VATEX-EU-IC est un code VATEX valide et le texte satisfait BR-E-10. La correction présentée est le cas non intracommunautaire : la livraison reste exonérée et le code trompeur disparaît.
Ce que le validateur a signalé
- La facture en erreur signale PEPPOL-EN16931-P0106. 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 à UBL
InvoiceetCreditNote. Lors d'un essai, un avoir exonéré portantVATEX-EU-ICa signalé cette règle. - Signalée uniquement par l'étape Peppol. EN 16931 vérifie, via
BR-CL-22, que le code figure sur la liste VATEX, mais pas avec quelle catégorie il est utilisé. - Une ventilation
Kcorrecte a toujours besoin de son propre code ou texte de motif d'exonération, en vertu deBR-IC-10.
Règles liées
- BR-IC-10 exige le motif d'exonération sur une ventilation de livraison intracommunautaire, là où ce code a sa place
- BR-CL-22 vérifie qu'un code de motif d'exonération figure bien sur la liste VATEX
- BR-E-10 exige un motif sur une ventilation exonérée une fois le code mal placé supprimé
- BR-IC-02 exige les identifiants TVA du vendeur et de l'acheteur lorsque la livraison est réellement intracommunautaire
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : How Peppol invoice validation actually works
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 PEPPOL-EN16931-P0106 (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.

