Aller au contenu

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

BR-DEC-27 : Écrire le montant des frais de ligne avec deux décimales au plus

Des frais sur une ligne de facture ont un cbc:Amount avec plus de deux chiffres après le point décimal. Arrondissez les frais de ligne à deux décimales avant de les écrire.

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

Sur cette page

La réponse courte

BR-DEC-27 échoue lorsque des frais sur une ligne, c'est-à-dire un cac:AllowanceCharge à l'intérieur de cac:InvoiceLine ou de cac:CreditNoteLine dont le cbc:ChargeIndicator vaut true, ont un cbc:Amount avec plus de deux chiffres après le point décimal. Arrondissez les frais à deux décimales et écrivez-les par exemple 2.50.

Des frais de ligne s'ajoutent au montant net de ligne et doivent donc être un montant payable. Contrairement à une remise, ils n'ont pas de forme au niveau du prix qui pourrait garder des décimales supplémentaires : PEPPOL-EN16931-R044 n'autorise aucuns frais à l'intérieur de cac:Price.

Ce que la règle vérifie

La règle retient les remises et frais de ligne dont l'indicateur vaut true et compte ce qui suit le point décimal dans leur cbc:Amount. Plus de deux caractères échouent, si bien que le 2.500 enregistré échoue alors que sa valeur est 2.5.

Moins de décimales sont toujours acceptées. Lors d'un essai, le même supplément écrit 2.5 a passé toutes les étapes.

Que les frais soient un pourcentage ne change rien. Lors d'un essai, un supplément fixe de 2.500 sans montant de base ni pourcentage a signalé cette règle et UBL-DT-01, exactement comme les frais en pourcentage.

Des frais non arrondis peuvent aussi fausser les calculs. Lors d'un essai, 2.525 a en plus déclenché PEPPOL-EN16931-R040 et PEPPOL-EN16931-R120, car il s'écarte de plus de 0.02 de 10 pour cent de 25.00 et du montant net de ligne qu'il devrait produire ; 2.504 est resté dans les deux tolérances et n'a signalé que les constats sur les décimales.

TermeSignificationÉlément UBL
BT-141Montant des charges ou frais sur la ligne de facturecac:InvoiceLine/cac:AllowanceCharge/cbc:Amount (cac:CreditNoteLine/cac:AllowanceCharge/cbc:Amount in a credit note), where cbc:ChargeIndicator is true

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 supplément est calculé comme un pourcentage de la valeur de la ligne et écrit avec la précision du calcul.
  • Les frais et les prix unitaires partagent un même format numérique, réglé sur trois décimales parce que certains prix en ont besoin.
  • Des frais stockés dans une colonne à trois ou quatre décimales sont sérialisés à pleine précision.

Comment corriger le document

  1. Arrondissez les frais de ligne à deux décimales là où ils sont calculés, selon la règle d'arrondi de votre système de facturation.
  2. Écrivez la valeur arrondie dans cbc:Amount du cac:AllowanceCharge de la ligne dont le cbc:ChargeIndicator vaut true, sans zéros de remplissage et sans espace.
  3. Utilisez les frais arrondis, et non les frais non arrondis, pour construire le montant net de ligne, et gardez-les à 0.02 au plus de la base multipliée par le pourcentage et divisée par 100 si vous transmettez les deux.
  4. Formatez le montant de base des frais, s'il existe, selon la même règle de deux décimales ; il est contrôlé séparément.

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 : un supplément de 10 pour cent sur 25.00 écrit 2.500

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">27.50</cbc:LineExtensionAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReason>Out-of-hours surcharge</cbc:AllowanceChargeReason>
    <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
    <cbc:Amount currencyID="GBP">2.500</cbc:Amount>
    <cbc:BaseAmount currencyID="GBP">25.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
  <!-- item and price omitted from this fragment -->
</cac:InvoiceLine>

Fragment de la facture corrigée : le supplément écrit 2.50, deux unités à 12.5 formant le reste des 27.50

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">27.50</cbc:LineExtensionAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReason>Out-of-hours surcharge</cbc:AllowanceChargeReason>
    <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
    <cbc:Amount currencyID="GBP">2.50</cbc:Amount>
    <cbc:BaseAmount currencyID="GBP">25.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
  <!-- 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 cbc:Amount du supplément change : 2.500 dans la facture en échec, 2.50 dans la facture corrigée. Les deux valent 10 pour cent de la base de 25.00, et deux unités à 12.5 plus le supplément donnent le montant net de ligne de 27.50 dans chacune, si bien que les calculs Peppol réussissent dans les deux cas. Le document en échec signale BR-DEC-27 sur le cac:AllowanceCharge de la ligne et UBL-DT-01 sur son cbc:Amount : tout montant autre que le prix de l'article et les remises au niveau du prix est plafonné à deux décimales, frais de ligne compris. Réécrire cette seule valeur lève les deux constats.

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 à Invoice et à CreditNote. Lors d'un essai, une ligne d'avoir portant le même supplément écrit 2.500 a signalé la même paire.
  • Les frais au niveau du document sont hors du champ de cette règle ; BR-DEC-05 les limite de la même façon.
  • C'est l'étape EN 16931 qui la signale. L'étape Peppol contrôle les valeurs plutôt que leur forme écrite, et ne s'y ajoute donc que lorsque les frais sont aussi faux sur le plan du calcul, comme le montre le cas 2.525 ci-dessus.

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