Sur cette page
La réponse courte
BR-CO-11 échoue lorsque cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount n'est pas la somme des remises au niveau du document. Additionnez le cbc:Amount de chaque cac:AllowanceCharge placé directement sous la racine du document dont le cbc:ChargeIndicator vaut false, arrondissez la somme à deux décimales et écrivez cette valeur comme total des remises.
Les remises de ligne ne font pas partie de cette somme. Elles sont déjà incluses dans chaque montant net de ligne.
Ce que la règle vérifie
La règle compare un total aux montants qu'il résume. Elle ne lit que les éléments cac:AllowanceCharge qui sont enfants de la racine Invoice ou CreditNote et dont le cbc:ChargeIndicator vaut false. Les frais, ainsi que tout cac:AllowanceCharge situé dans une ligne ou un prix, sont ignorés.
La comparaison est exacte, une fois la somme arrondie à deux décimales. Il n'y a aucune tolérance : un total de 2.00 face à des remises de 1.99 échoue.
Le total ne peut être omis que s'il n'y a aucune remise au niveau du document. Une remise sans total échoue. Sans remise, un total explicite de 0.00 passe et tout autre total échoue.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-107 | Somme des remises au niveau du document | cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount |
| 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 :
- Le total est pris dans un champ d'en-tête du système source, tandis que les éléments de remise sont construits à partir d'une table distincte, et les deux ne concordent pas.
- Les remises de ligne sont ajoutées au total du document en plus d'être déduites des montants des lignes.
- Des frais sont émis avec un
cbc:ChargeIndicatoràfalse, ou une remise avectrue, si bien que le montant tombe dans la mauvaise somme. - Les montants sont additionnés en virgule flottante binaire et le résultat dérive d'un centime avant d'être formaté.
- Les éléments de remise sont émis, mais le total est omis parce que le système source le considère comme facultatif.
Comment corriger le document
- Listez les éléments
cac:AllowanceChargeplacés directement sous la racine du document et gardez ceux dont lecbc:ChargeIndicatorvautfalse. - Additionnez leurs valeurs
cbc:Amounten arithmétique décimale, puis arrondissez le résultat à deux décimales. - Écrivez cette valeur dans
cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount. Si la liste est vide, omettez l'élément. - Recalculez le total hors TVA à partir de la valeur corrigée : total des lignes, moins total des remises, plus total des frais.
BR-CO-13le vérifie ensuite.
L'exemple enregistré comporte une remise et des frais au niveau du document.
Remises au niveau du document : 1.00 Total des remises (BT-107) : 1.00 Total hors TVA : 66.00 - 1.00 + 3.50 = 68.50
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 total indique 2.00, la seule remise est de 1.00
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Example document discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">1.00</cbc:Amount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">66.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">68.50</cbc:TaxExclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="GBP">2.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="GBP">3.50</cbc:ChargeTotalAmount>
</cac:LegalMonetaryTotal>Fragment de la facture corrigée : le total est la somme des remises
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">66.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">68.50</cbc:TaxExclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="GBP">1.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="GBP">3.50</cbc:ChargeTotalAmount>
</cac:LegalMonetaryTotal>Seul cbc:AllowanceTotalAmount diffère. Le document en échec signale aussi BR-CO-13, car le total hors TVA de 68.50 a été calculé à partir d'un total des remises de 1.00 et ne concorde plus avec les 2.00 envoyés. Corriger le total des remises lève les deux constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-CO-11 et BR-CO-13. 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; les éléments portent les mêmes noms dans les deux. - Les montants sont exprimés dans la devise du document. La règle ne convertit pas les devises et ne tient pas compte de la devise de comptabilisation de la TVA.
- Chaque remise au niveau du document doit tout de même avoir sa propre catégorie de TVA et son motif, que d'autres règles vérifient. Cette règle ne concerne que la somme.
Règles liées
- BR-CO-12 est le même contrôle pour les frais au niveau du document
- BR-CO-13 utilise le total des remises pour vérifier le total hors TVA
- BR-CO-10 vérifie le total des lignes dont les remises sont déduites
- PEPPOL-EN16931-R040 vérifie chaque montant de remise par rapport à son montant de base et à son pourcentage
- 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-11 (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.

