Sur cette page
La réponse courte
BR-CO-18 échoue lorsque le document n'a aucun cac:TaxSubtotal dans un cac:TaxTotal placé directement sous la racine. Ajoutez un cac:TaxSubtotal pour chaque catégorie et chaque taux de TVA utilisés sur les lignes et sur les remises et frais au niveau du document, avec sa base imposable, son montant de taxe et sa cac:TaxCategory.
Un cac:TaxTotal qui ne porte que le cbc:TaxAmount global ne suffit pas, même lorsque ce montant est juste.
Ce que la règle vérifie
Il s'agit d'un contrôle de présence sur la racine du document : au moins un cac:TaxTotal/cac:TaxSubtotal doit exister. Il n'examine pas le contenu de la ventilation ; les montants et la catégorie sont vérifiés par d'autres règles.
Le XSD accepte un cac:TaxTotal sans aucun cac:TaxSubtotal, ainsi qu'un document sans aucun cac:TaxTotal : l'omission est donc signalée d'abord ici, et non par l'étape du schéma.
Un document sans TVA à payer a tout de même besoin d'une ventilation. Une facture exonérée avec un total de TVA de 0.00 échoue à cette règle dès que son cac:TaxSubtotal est retiré.
| Terme | Signification | Élément UBL |
|---|---|---|
| BG-23 | Ventilation de la TVA | cac:TaxTotal/cac:TaxSubtotal |
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 écrit le total de la TVA à partir d'un champ d'en-tête et ne construit jamais la ventilation par catégorie.
- La ventilation n'est générée que lorsque le montant de TVA est supérieur à zéro, si bien que les documents au taux zéro, exonérés ou en autoliquidation la perdent.
- Le regroupement par catégorie de TVA dans la source ne renvoie aucune ligne, par exemple parce qu'aucun code de taxe n'est attribué aux lignes, et la boucle qui écrit
cac:TaxSubtotaln'émet rien. - La ventilation est écrite dans un
cac:TaxTotalsous chaque ligne au lieu ducac:TaxTotalau niveau du document. Seules les ventilations placées directement sous la racine comptent.
Comment corriger le document
- Regroupez les montants nets des lignes, les remises au niveau du document et les frais au niveau du document par code de catégorie de TVA et par taux.
- Pour chaque groupe, écrivez un
cac:TaxSubtotalaveccbc:TaxableAmount,cbc:TaxAmountet unecac:TaxCategorycontenantcbc:ID,cbc:Percentetcac:TaxScheme/cbc:IDàVAT. Certaines catégories exigent aussi un motif d'exonération. - Placez les ventilations dans le
cac:TaxTotalqui porte le total de la TVA dans la devise du document, et faites de soncbc:TaxAmountla somme des montants de taxe de la ventilation.BR-CO-14le vérifie. - Utilisez les catégories de TVA que l'opération comporte réellement. N'ajoutez pas de ventilation pour une catégorie absente des lignes simplement pour satisfaire cette règle.
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 : le bloc de taxes a un montant mais aucune ventilation
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
</cac:TaxTotal>Fragment de la facture corrigée : une ventilation au taux normal pour l'unique ligne de 25.00
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>Le document corrigé comporte le cac:TaxSubtotal qui manque au document en échec ; rien d'autre ne diffère. Le document en échec signale aussi BR-S-01, car sa ligne est au taux normal et aucune ventilation au taux normal n'existe, ainsi que deux constats Peppol sur la forme des blocs de taxes : PEPPOL-EN16931-R053, car aucun bloc de taxes ne porte de ventilation, et PEPPOL-EN16931-R054, car un bloc de taxes sans ventilation est présent alors qu'aucune devise de comptabilisation de la TVA n'est déclarée. Rétablir la ventilation lève les quatre constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-CO-18, BR-S-01, PEPPOL-EN16931-R053 et PEPPOL-EN16931-R054. 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 aussi bien aux documents UBL
Invoicequ'auxCreditNote; un avoir dont l'unique ventilation a été retirée signale les quatre mêmes constats. - La règle de catégorie qui accompagne ce constat dépend des catégories de TVA du document. L'exemple enregistré est au taux normal et signale
BR-S-01; une facture exonérée signale à la place la règle correspondante de la catégorie exonérée. BR-CO-14reste muette dans cette situation. Elle ignore un bloc de taxes sans ventilation : le total de la TVA n'est donc comparé à une ventilation qu'une fois celle-ci rétablie.- Un élément
cac:TaxSubtotalvide ne permet pas de contourner la règle : l'étape XSD le rejette et les étapes suivantes sont ignorées.
Règles liées
- BR-S-01 exige une ventilation au taux normal lorsque des lignes, remises ou frais sont au taux normal
- BR-CO-14 vérifie le total de la TVA par rapport à la somme des montants de taxe de la ventilation
- BR-CO-17 vérifie chaque montant de taxe de la ventilation par rapport à sa base imposable et à son taux
- BR-S-08 vérifie la base imposable d'une ventilation au taux normal par rapport aux lignes, aux remises et aux 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-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-20.
La définition officielle de BR-CO-18 (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.

