Sur cette page
La réponse courte
BR-DEC-23 échoue lorsque le cbc:LineExtensionAmount d'une ligne est écrit avec plus de deux chiffres après le point décimal. Arrondissez le montant net de ligne à deux décimales et formatez-le ainsi : 25.00, pas 25.000.
Le contrôle compte des caractères ; il ne compare pas des nombres. 25.000 est le même montant que 25.00 et échoue quand même. Le document signale en même temps UBL-DT-01, qui est la forme générale de la même limite pour tout élément de montant.
Ce que la règle vérifie
Pour chaque cac:InvoiceLine ou cac:CreditNoteLine, la règle prend le texte de cbc:LineExtensionAmount, regarde ce qui suit le premier point décimal et exige que cela fasse au plus deux caractères.
Moins de décimales conviennent. 25, 25.0 et 25.00 passent tous.
Les zéros finaux comptent dans la limite, tout comme les espaces. 25.000 échoue, et lors d'un essai, 25.00 suivi d'espaces à l'intérieur de l'élément a également échoué, bien que le schéma l'accepte comme nombre.
La règle ne lit que le montant net de ligne. Le prix net de l'article n'est pas limité à deux décimales : un prix de 12.500 a été validé sans constat. Le total des lignes dans cac:LegalMonetaryTotal a sa propre règle de décimales.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-131 | Montant net de ligne de facture | cac:InvoiceLine/cbc:LineExtensionAmount |
| BT-131 | Montant net de ligne de facture (avoir) | cac:CreditNoteLine/cbc:LineExtensionAmount |
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 montant net de ligne est formaté avec la même précision que le prix unitaire ou la quantité, qui portent légitimement plus de décimales.
- La quantité multipliée par le prix est écrite sans arrondi, par exemple 3 à 19.995, ce qui donne 59.985.
- Une colonne de base de données de type decimal à trois ou quatre décimales est sérialisée à pleine échelle, zéros finaux compris.
- Un formateur complète la valeur jusqu'à une largeur fixe et le remplissage se retrouve à l'intérieur de l'élément.
Comment corriger le document
- Calculez le montant net de ligne en arithmétique décimale : quantité multipliée par le prix net, plus les frais de ligne, moins les remises de ligne.
- Arrondissez le résultat à deux décimales une seule fois, à la fin. Gardez la précision supplémentaire sur le prix et la quantité, où elle est autorisée.
- Formatez avec exactement deux décimales et sans espaces autour, et écrivez le résultat dans
cbc:LineExtensionAmount. - Construisez le total des lignes du document à partir des montants de ligne arrondis, afin que l'arrondi n'ouvre pas un écart que
BR-CO-10signalerait ensuite.
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 montant net de ligne a trois décimales
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.000</cbc:LineExtensionAmount>
<!-- item omitted from this fragment -->
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Fragment de la facture corrigée : le même montant avec deux décimales
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<!-- item omitted from this fragment -->
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Seul le formatage de cbc:LineExtensionAmount diffère : 25.000 devient 25.00. Le document en échec signale deux constats à l'étape EN 16931. BR-DEC-23 est situé sur la ligne, et UBL-DT-01 sur l'élément de montant lui-même : cette règle applique la limite de deux décimales à tout élément dont le nom se termine par Amount, hormis cbc:PriceAmount et les montants d'une remise à l'intérieur de cac:Price, donc un montant net de ligne qui enfreint BR-DEC-23 l'enfreint aussi. Une seule correction lève les deux. Le second exemple enregistré est un avoir avec la même valeur sur cac:CreditNoteLine, et il signale la même paire.
Ce que le validateur a signalé
- La facture en erreur signale BR-DEC-23 et UBL-DT-01. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML en erreurTélécharger le XML corrigé
- L'avoir en erreur signale BR-DEC-23 et UBL-DT-01. 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 à
cac:InvoiceLinedans uneInvoiceet àcac:CreditNoteLinedans unCreditNote, avec un comportement identique. - La limite est de deux décimales quelle que soit la devise. La règle ne regarde pas
currencyID. - Les autres formats de nombre n'atteignent jamais cette règle. Une virgule comme séparateur décimal ou un exposant comme
2.5E1échoue à l'étape XSD, et les étapes EN 16931 et Peppol sont alors ignorées. - Les montants négatifs sont traités de la même façon : le signe se trouve avant le point décimal et n'est pas compté.
Règles liées
- BR-CO-10 vérifie que les montants nets de ligne arrondis s'additionnent pour donner le total des lignes du document
- PEPPOL-EN16931-R120 contrôle le montant net de ligne par rapport à la quantité, au prix, aux remises et aux frais
- BR-27 est l'autre règle sur les mêmes valeurs de ligne : le prix net ne doit pas être négatif
- 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-DEC-23 (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.

