Aller au contenu

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

BR-28 : Rendre le prix brut de l'article nul ou positif

Le prix brut dans cbc:BaseAmount d'une remise sur le prix d'une ligne ne doit pas être inférieur à zéro. Une déduction ou une correction tire son signe de la quantité.

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

Sur cette page

La réponse courte

BR-28 échoue lorsque cac:Price/cac:AllowanceCharge/cbc:BaseAmount sur une ligne est inférieur à zéro. Cet élément est le prix brut de l'article, le prix unitaire avant la remise sur le prix, et il ne peut pas être négatif. Corrigez le signe à la source pour que le prix brut soit positif et que le prix net dans cbc:PriceAmount soit égal à ce prix moins la remise.

Dans l'exemple enregistré, le prix brut négatif ne concorde plus non plus avec le prix net : PEPPOL-EN16931-R046 l'accompagne donc.

Ce que la règle vérifie

Pour chaque cac:InvoiceLine ou cac:CreditNoteLine, la règle lit le cbc:BaseAmount du cac:AllowanceCharge situé dans cac:Price, s'il y en a un, et exige qu'il soit supérieur ou égal à zéro.

Sans cac:AllowanceCharge au niveau du prix, ou sans aucun qui ait un cbc:BaseAmount, aucun prix brut n'est indiqué et la règle est satisfaite. Lors d'un essai, supprimer le prix brut de la ligne enregistrée a laissé une facture valide.

Zéro est accepté par cette règle. Lors d'un essai, un prix brut de 0 n'a pas été signalé par BR-28 ; seul PEPPOL-EN16931-R046 l'a contesté, car 0 moins 2.5 ne donne pas le prix net de 12.5.

Le contrôle du signe est indépendant. Avec un prix brut de -15 et une remise de -27.5, qui maintient le prix net à 12.5, BR-28 a tout de même été signalé lors d'un essai, et rien d'autre.

Le montant de la remise, le prix net et la quantité ne sont pas lus. Un prix net négatif relève d'une règle distincte, BR-27.

TermeSignificationÉlément UBL
BT-148Prix brut de l'articlecac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:BaseAmount (cac:CreditNoteLine in a credit note)
BT-147Remise sur le prix de l'articlecac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:Amount
BT-146Prix net de l'articlecac:InvoiceLine/cac:Price/cbc:PriceAmount

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 :

  • Une ligne de déduction ou de retour est construite en inversant le signe de chaque champ de prix, prix brut compris.
  • Le signe du montant net de la ligne est recopié sur les prix unitaires lors du mapping d'un retour.
  • Le prix brut est calculé à partir du prix net et de la remise avec les opérandes inversés, par exemple remise moins prix net.
  • Une entrée au niveau du prix sert à porter une déduction qui relève de la ligne ou du document.

Comment corriger le document

  1. Repérez la ligne grâce à l'emplacement du constat et lisez cbc:PriceAmount, ainsi que cbc:Amount et cbc:BaseAmount dans cac:Price/cac:AllowanceCharge.
  2. Écrivez le prix brut comme le prix unitaire positif avant remise. Si la ligne est une déduction ou une correction, exprimez-le par un cbc:InvoicedQuantity (ou cbc:CreditedQuantity) et un montant net de ligne négatifs, et non par les prix.
  3. Assurez-vous que prix net = prix brut - remise est exactement vérifié, car PEPPOL-EN16931-R046 le contrôle sans aucune tolérance.
  4. Si la source n'a pas de prix brut fiable, omettez entièrement le cac:AllowanceCharge au niveau du prix et envoyez le prix net seul.

La ligne enregistrée a un prix net de 12.5 et une remise sur le prix de 2.5.

En échec : prix brut -15 - remise 2.5 = -17.5, prix net envoyé 12.5, donc BR-28 et PEPPOL-EN16931-R046 échouent tous deux
Corrigé : prix brut 15 - remise 2.5 = 12.5, soit le prix net envoyé

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 prix brut est de -15

<cac:Price>
  <cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
  <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="GBP">2.5</cbc:Amount>
    <cbc:BaseAmount currencyID="GBP">-15</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>

Fragment de la facture corrigée : le prix brut est de 15, et 15 moins 2.5 donne le prix net

<cac:Price>
  <cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
  <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="GBP">2.5</cbc:Amount>
    <cbc:BaseAmount currencyID="GBP">15</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>

Le prix brut dans cbc:BaseAmount est de -15 dans la facture en échec et de 15 dans la facture corrigée ; rien d'autre ne change. Le document en échec signale aussi PEPPOL-EN16931-R046 sur la remise sur le prix, car -15 moins 2.5 donne -17.5 alors que le prix net est de 12.5. Avec le signe corrigé, 15 moins 2.5 donne 12.5 et les deux constats disparaissent.

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 à cac:InvoiceLine et à cac:CreditNoteLine. Lors d'un essai, une ligne d'avoir avec le même prix brut de -15 a signalé BR-28 et PEPPOL-EN16931-R046.
  • Signalé par l'étape EN 16931 ; le constat qui l'accompagne, PEPPOL-EN16931-R046, provient de l'étape Peppol.
  • Le prix brut n'alimente aucun total. Le montant net de la ligne est calculé à partir du prix net : le chiffre négatif n'a donc rien perturbé au-delà du prix lui-même.

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-24.

La définition officielle de BR-28 (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.