Sur cette page
La réponse courte
BR-DEC-25 échoue lorsqu'une remise sur une ligne, c'est-à-dire un cac:AllowanceCharge à l'intérieur de cac:InvoiceLine ou de cac:CreditNoteLine avec un cbc:ChargeIndicator à false, a un cbc:BaseAmount avec plus de deux chiffres après le point décimal. Écrivez le montant auquel le pourcentage de la remise a été appliqué avec deux décimales au plus, par exemple 40.00.
Dans l'exemple enregistré, seule la base est en cause : le montant de remise de 2.00 et le pourcentage de 5 étaient déjà acceptables. Le même élément déclenche aussi UBL-DT-01, si bien qu'une base complétée par des zéros produit deux constats.
Ce que la règle vérifie
La règle sélectionne chaque remise directement à l'intérieur d'une ligne et compte les caractères qui suivent le premier point dans son cbc:BaseAmount ; trois ou plus échouent. Une remise donnée comme montant fixe, sans base, n'a rien à compter et réussit.
Seule la forme écrite compte, pas la valeur. Lors d'un essai, un montant de base de 40 a été validé sans constat, tandis que 40.004 a échoué de la même façon que le 40.000 enregistré.
La base d'une remise sur le prix est le prix brut de l'article, dans cac:Price/cac:AllowanceCharge/cbc:BaseAmount, et cette règle ne l'atteint pas. Lors d'un essai, un prix brut écrit 15.000 a passé toutes les étapes.
Le contrôle Peppol du pourcentage lit le même élément, mais par sa valeur. Lors d'un essai, une base de 40.500, qui ne donne plus la remise de 2.00 à 5 pour cent, a aussi déclenché PEPPOL-EN16931-R040 ; 40.004 est resté dans sa tolérance de 0.02 et ne l'a pas déclenché.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-137 | Montant de base de la remise sur la ligne de facture | cac:InvoiceLine/cac:AllowanceCharge/cbc:BaseAmount (cac:CreditNoteLine/cac:AllowanceCharge/cbc:BaseAmount in a credit note), where cbc:ChargeIndicator is false |
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 :
- La base est la valeur brute de la ligne, quantité multipliée par un prix unitaire à trois ou quatre décimales, et elle est sérialisée avec cette précision.
- Le montant de la remise est arrondi avant d'être écrit, mais la base à partir de laquelle il a été calculé est transmise telle quelle.
- La base est stockée dans une colonne décimale à trois décimales, et le sérialiseur écrit chaque chiffre stocké, ce qui transforme 40 en
40.000.
Comment corriger le document
- Arrondissez le montant de base à deux décimales au moment du calcul de la remise, et appliquez le pourcentage au montant arrondi.
- Écrivez le résultat dans
cbc:BaseAmountducac:AllowanceChargede la ligne, aprèscbc:Amount, sans chiffre au-delà de la deuxième décimale et sans espace. - Vérifiez le montant de la remise par rapport à la base arrondie :
PEPPOL-EN16931-R040tolère un écart de 0.02 au plus avec la base multipliée par le pourcentage et divisée par 100. - Si la remise portait en réalité sur le prix unitaire, modélisez-la plutôt dans
cac:Price/cac:AllowanceCharge, où le prix brut peut garder ses décimales supplémentaires.
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 remise de ligne de 5 pour cent dont la base est écrite 40.000
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<!-- note, quantity, line net amount, accounting cost and order line reference omitted from this fragment -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example discount</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>5</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">2.00</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">40.000</cbc:BaseAmount>
</cac:AllowanceCharge>
<!-- line charge, item and price omitted from this fragment -->
</cac:InvoiceLine>Fragment de la facture corrigée : la même base écrite 40.00
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example discount</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>5</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">2.00</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">40.00</cbc:BaseAmount>
</cac:AllowanceCharge>La facture en échec et la facture corrigée diffèrent par un seul élément : le cbc:BaseAmount de la remise de ligne vaut 40.000 dans l'une et 40.00 dans l'autre. Cinq pour cent de l'un ou de l'autre donnent la remise de 2.00 que portent les deux documents, si bien que le contrôle Peppol du pourcentage et le montant net de ligne de 58.00 sont satisfaits dans les deux. Le document en échec signale BR-DEC-25 sur le cac:AllowanceCharge de la ligne et UBL-DT-01 sur le cbc:BaseAmount lui-même, car un montant de base est un élément de montant comme un autre et ne fait pas partie de ceux que UBL-DT-01 exempte. Deux décimales lèvent les deux constats.
Ce que le validateur a signalé
- La facture en erreur signale BR-DEC-25 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. Lors d'un essai, un avoir avec une base de remise de ligne de40.000a signalé les deux mêmes constats. - Seules les remises sont sélectionnées. La base de frais de ligne relève de
BR-DEC-28, et la base d'une remise au niveau du document deBR-DEC-02. - Un montant de base sans pourcentage est un autre problème. Lors d'un essai, retirer
cbc:MultiplierFactorNumericde la ligne en échec a ajoutéPEPPOL-EN16931-R042aux deux constats.
Règles liées
- BR-DEC-24 limite à deux décimales le montant de la même remise de ligne
- BR-DEC-28 est la limite correspondante pour le montant de base de frais de ligne
- UBL-DT-01 signale aussi le montant de base, comme l'un des montants qu'il limite à deux décimales
- PEPPOL-EN16931-R040 compare le montant de la remise à ce montant de base et au 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-28.1 : source vérifiée le 2026-09-28, explication mise à jour le 2026-09-28.
La définition officielle de BR-DEC-25 (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.

