Sur cette page
La réponse courte
UBL-CR-561 est un avertissement, émis une seule fois pour un document qui a un cac:TaxTotal dans une cac:InvoiceLine ou une cac:CreditNoteLine quelconque. Le document reste valide. Retirez les totaux de taxe au niveau des lignes : EN 16931 ne prévoit pas de montant de TVA par ligne, et la TVA est déjà indiquée par catégorie dans le cac:TaxTotal placé directement sous la racine du document.
Ce qu'une ligne porte bel et bien, c'est sa catégorie et son taux de TVA, dans cac:Item/cac:ClassifiedTaxCategory. Gardez-les ; la ventilation au niveau du document est contrôlée par rapport à eux.
Ce que la règle vérifie
La règle est évaluée une seule fois, sur la racine du document, et avertit dès qu'au moins une ligne a un enfant cac:TaxTotal. Lors d'un essai avec des totaux de taxe sur deux lignes d'une facture de trois lignes, un seul avertissement a été signalé, situé sur la racine et non sur une ligne.
Rien n'est lu à l'intérieur du total de taxe de la ligne. Lors d'un essai, un total de taxe de 999.00 sur une ligne de 25.00 a produit le même avertissement isolé, tout comme un total contenant un cac:TaxSubtotal complet avec catégorie et taux.
Un avertissement ne rend pas un document non valide. L'exemple enregistré revient valide, toutes les étapes réussies, avec ce seul avertissement dans la liste.
Le total de taxe de la ligne ne peut pas remplacer la catégorie de TVA de la ligne. Lors d'un essai où cac:ClassifiedTaxCategory avait été retiré et où seul le total de taxe de la ligne restait, la facture a échoué à BR-CO-04 et à trois autres règles, en plus de l'avertissement.
| Terme | Signification | Élément UBL |
|---|---|---|
| - | Total de taxe de la ligne (aucun terme métier EN 16931) | cac:InvoiceLine/cac:TaxTotal (cac:CreditNoteLine/cac:TaxTotal in a credit note) |
| BG-23 | Ventilation de la TVA | cac:TaxTotal/cac:TaxSubtotal |
| BT-151 | Code de catégorie de TVA de l'article facturé | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID |
| BT-152 | Taux de TVA de l'article facturé | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent |
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 :
- Une bibliothèque ou un modèle UBL 2.1 généraliste écrit
cac:TaxTotalsur chaque ligne parce que le schéma UBL l'y autorise. - Le mapping a d'abord été écrit pour un autre format fondé sur UBL qui attend un montant de TVA par ligne, et l'élément a été conservé lorsque la sortie est passée à Peppol BIS.
- Le système source calcule la TVA ligne par ligne, et l'export écrit chaque résultat de ligne dans le XML en plus d'en faire la somme.
Comment corriger le document
- Retirez
cac:TaxTotalde chaquecac:InvoiceLineoucac:CreditNoteLine. - Vérifiez que chaque ligne a toujours
cac:Item/cac:ClassifiedTaxCategoryavec son code de catégorie de TVA et, lorsque la catégorie en prévoit un, son taux. - Assurez-vous que la TVA est indiquée dans le
cac:TaxTotalau niveau du document : uncac:TaxSubtotalpar catégorie et par taux avec sa base imposable et son montant de taxe, et le total de TVA dans lecbc:TaxAmountplacé directement souscac:TaxTotal. - Calculez chaque montant de taxe de la ventilation à partir de sa base imposable et de son taux plutôt qu'en additionnant des montants de TVA par ligne, qui peuvent s'écarter de base imposable x taux.
BR-CO-17fait cette comparaison.
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 avec l'avertissement : la ligne porte son propre total de taxe de 5.00
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<!-- tax scheme omitted from this fragment -->
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Fragment de la facture corrigée : la ligne n'a pas de total de taxe, et les 5.00 de TVA apparaissent une seule fois, dans la ventilation au niveau du document
<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>
<!-- tax scheme omitted from this fragment -->
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- monetary totals omitted from this fragment -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<!-- tax scheme omitted from this fragment -->
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>La facture avec l'avertissement a un cac:TaxTotal de 5.00 entre le montant net de la ligne et l'article, la facture corrigée non. Rien d'autre ne diffère ; la ventilation au niveau du document montrée dans le fragment corrigé est présente dans les deux, avec les mêmes 5.00. Cette facture ne signale que UBL-CR-561 et est valide avec cet avertissement : la modification met donc le document en ordre plutôt qu'elle ne le sauve.
Ce que le validateur a signalé
- La facture avec l'avertissement est valide et signale l'avertissement UBL-CR-561. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML avec l'avertissementTé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 à
Invoiceet àCreditNote; dans un avoir, l'élément estcac:CreditNoteLine/cac:TaxTotal. Lors d'un essai, un avoir avec un total de taxe de ligne a reçu le même avertissement unique sur sa racine et est resté valide. - L'avertissement vient de l'étape EN 16931, des contrôles de la correspondance syntaxique UBL qui signalent les éléments UBL sans place dans le modèle EN 16931. D'autres règles de la même famille font de même pour d'autres éléments, comme
UBL-CR-006pour une heure d'émission. - Les totaux de taxe des lignes ne comptent pas dans la limite Peppol sur les totaux de taxe au niveau du document. Lors d'un essai avec un sous-total complet dans un total de taxe de ligne,
PEPPOL-EN16931-R053n'a pas été signalé.
Règles liées
- BR-CO-14 contrôle le total de TVA du document par rapport à la ventilation, où la TVA a sa place
- BR-CO-17 contrôle chaque montant de taxe de la ventilation par rapport à sa base imposable et à son taux
- BR-CO-04 exige la catégorie de TVA sur chaque ligne, qu'un total de taxe de ligne ne peut pas remplacer
- UBL-CR-006 est un autre avertissement pour un élément UBL hors du modèle EN 16931, l'heure d'émission
- 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 UBL-CR-561 (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.

