Aller au contenu

Ironfang Finance - Référence des règles

BR-DEC-02 : Écrire le montant de base de la remise au niveau du document avec deux décimales au plus

Le cbc:BaseAmount d'une remise au niveau du document a plus de deux chiffres après le point décimal. Écrivez la base de la remise en pourcentage avec deux décimales.

EN 16931Erreur : le document n'est pas valideRemises et frais

Sur cette page

La réponse courte

BR-DEC-02 échoue lorsqu'une remise au niveau du document, c'est-à-dire un cac:AllowanceCharge sous la racine avec un cbc:ChargeIndicator à false, indique son cbc:BaseAmount avec plus de deux caractères après le point décimal. Écrivez le montant de base de la remise avec deux décimales au plus : 50.00, pas 50.000.

Le montant de base est le montant sur lequel une remise en pourcentage est calculée ; il n'apparaît donc qu'à côté de cbc:MultiplierFactorNumeric. La base enregistrée de 50.000 pour une remise de 2 pour cent a la bonne valeur et un zéro de remplissage, et UBL-DT-01 signale le même cbc:BaseAmount à côté de cette règle.

Ce que la règle vérifie

La règle parcourt chaque remise directement sous la racine Invoice ou CreditNote, prend le texte de son cbc:BaseAmount et compte les caractères après le premier point ; trois ou plus font échouer la règle. Une remise d'un montant fixe ne porte pas de montant de base : il n'y a rien à compter, et elle passe.

Seule la forme de la base est contrôlée, pas le fait qu'elle produise la remise. Lors d'un essai, une base de 50.004 n'a signalé que cette règle et UBL-DT-01 : 2 pour cent de cette base font 1.00008, que PEPPOL-EN16931-R040 accepte face à la remise de 1.00 puisqu'il admet 0.02 dans un sens comme dans l'autre.

L'indicateur décide quelle règle compte un montant de base. Sur des frais au niveau du document, avec un cbc:ChargeIndicator à true, il relève de BR-DEC-06 ; le prix brut à l'intérieur de cac:Price est ignoré par les deux règles et par UBL-DT-01. Lors d'un essai, une remise sur le prix de 1.000 sur un prix brut de 6.000 a été validée sans constat.

Moins de décimales conviennent toujours. Lors d'un essai, la base écrite sous la forme du nombre entier 50 a été validée.

TermeSignificationÉlément UBL
BT-93Montant de base de la remise au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]/cbc:BaseAmount

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 le sous-total auquel s'applique la remise, additionné à partir de montants de ligne conservés avec trois ou quatre décimales et écrit sans arrondi.
  • Le montant de la remise est arrondi avant d'être écrit, mais la base dont il provient est copiée telle quelle depuis le moteur de tarification.
  • Une colonne décimale d'échelle trois stocke 50 sous la forme 50.000, et le sérialiseur écrit l'échelle complète.

Comment corriger le document

  1. Arrondissez le montant de base à deux décimales à l'endroit où la remise est calculée, puis appliquez le pourcentage à la base arrondie.
  2. Écrivez-le dans cbc:BaseAmount du cac:AllowanceCharge au niveau du document, avec deux décimales au plus et sans espaces.
  3. Arrondissez aussi le cbc:Amount de la remise à deux décimales, et gardez-le à moins de 0.02 de la base multipliée par le pourcentage divisé par 100, afin que PEPPOL-EN16931-R040 concorde toujours.
  4. Si la remise est en réalité un montant fixe, supprimez à la fois le montant de base et le pourcentage plutôt que d'arrondir une base dont personne n'a besoin.

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 sur le document de 2 pour cent dont la base est écrite 50.000

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document discount</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>2</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="GBP">1.00</cbc:Amount>
  <cbc:BaseAmount currencyID="GBP">50.000</cbc:BaseAmount>
  <!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>

Fragment de la facture corrigée : la même base écrite 50.00

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document discount</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>2</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="GBP">1.00</cbc:Amount>
  <cbc:BaseAmount currencyID="GBP">50.00</cbc:BaseAmount>
  <!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>

La facture en échec et la facture corrigée diffèrent par un seul élément, le montant de base de la remise sur le document : 50.000 contre 50.00. Les deux indiquent la remise comme 2 pour cent de cette base, ce qui donne la remise de 1.00 déjà utilisée par les totaux. Le document en échec signale BR-DEC-02 sur le premier cac:AllowanceCharge et UBL-DT-01 sur son cbc:BaseAmount. UBL-DT-01 impose deux décimales à tout élément nommé comme un montant, cbc:BaseAmount compris, et n'exclut que le prix net de l'article et les montants d'une remise au niveau du prix ; une base de remise qui enfreint cette règle enfreint donc aussi celle-là. La facture corrigée est l'exemple le plus complet, avec sa remise reformulée en pourcentage, et elle est validée sans aucun constat.

Ce que le validateur a signalé

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 aux documents UBL Invoice et CreditNote. Lors d'un essai, un avoir avec la même remise sur le document de 2 pour cent sur une base de 50.000 a signalé les deux mêmes constats.
  • La limite est de deux décimales dans toutes les devises ; currencyID n'est pas lu.
  • Peppol lie le montant de base au pourcentage : PEPPOL-EN16931-R041 exige une base lorsqu'un pourcentage est indiqué, et PEPPOL-EN16931-R042 exige un pourcentage lorsqu'une base est indiquée. Dans un document conforme à Peppol, un montant de base n'apparaît donc que sur une remise en pourcentage.

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-02 (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.