Sur cette page
La réponse courte
BR-27 échoue lorsque cac:Price/cbc:PriceAmount sur une ligne est inférieur à zéro. Un prix indique ce que coûte une unité, et ce n'est jamais négatif. Lorsqu'une ligne retire de l'argent du document, comme un retour, une correction ou une annulation, gardez le prix positif et rendez la quantité négative.
Le montant net de la ligne ne change pas. Dans l'exemple enregistré, la ligne vaut -2.00 dans les deux cas ; ce que la règle conteste, c'est d'y arriver avec 1 au prix de -2 alors qu'il faudrait -1 au prix de 2.
Ce que la règle vérifie
Pour chaque cac:InvoiceLine ou cac:CreditNoteLine, la règle lit cac:Price/cbc:PriceAmount et exige qu'il soit supérieur ou égal à zéro. Elle ne regarde rien d'autre sur la ligne : ni la quantité, ni le montant net de la ligne.
Un prix de zéro passe. Une facture entièrement cohérente avec un prix de 0 et un montant net de ligne de 0.00 est validée sans constat.
Une quantité négative et un montant net de ligne négatif sont tous deux autorisés par cette règle. L'exemple corrigé a exactement cela.
Écrivez zéro sans signe. Lors d'un essai, un prix de -0.00 a été signalé par cette règle.
Une ligne sans aucun cbc:PriceAmount signale aussi BR-27, en plus de BR-26, la règle qui exige le prix. Fournir le prix fait disparaître les deux.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-146 | Prix net de l'article | cac:InvoiceLine/cac:Price/cbc:PriceAmount |
| BT-146 | Prix net de l'article (avoir) | cac:CreditNoteLine/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 :
- Le système source enregistre une ligne de déduction ou de correction comme une quantité 1 avec un prix unitaire négatif, et le mapping copie les deux champs tels quels.
- Le prix est obtenu en divisant le montant de la ligne par une quantité en valeur absolue, si bien que le signe du montant se retrouve sur le prix.
- Une réduction est modélisée comme une ligne à part avec un prix négatif, alors qu'une remise sur la ligne ou sur le document la décrirait mieux.
- Une inversion de signe prévue pour les avoirs est appliquée à chaque champ numérique de la ligne, prix compris.
Comment corriger le document
- Repérez la ligne grâce à l'emplacement du constat et examinez
cac:Price/cbc:PriceAmount. - Rendez le prix positif et reportez le signe sur
cbc:InvoicedQuantity(oucbc:CreditedQuantity) : une quantité 1 à -2 devient une quantité -1 à 2. - Laissez
cbc:LineExtensionAmounttel quel. Quantité fois prix donne le même chiffre : le montant net de la ligne et tous les totaux calculés à partir de lui restent inchangés. - Si la ligne est en réalité une réduction sur d'autres biens et non une quantité de quelque chose qu'on annule, envisagez plutôt de l'envoyer comme une remise sur la ligne ou sur le document. C'est une décision sur la modélisation de la transaction, pas une obligation imposée par cette règle.
- Ne transformez pas le document en avoir simplement pour éviter la ligne négative. Une facture peut comporter une ligne négative, comme le montre l'exemple corrigé.
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 : la ligne 3 a une quantité de 1 à un prix net de -2
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example correction</cbc:Name>
<!-- tax category omitted from this fragment -->
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="GBP">-2</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Fragment de la facture corrigée : la même ligne avec une quantité de -1 à un prix net de 2
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example correction</cbc:Name>
<!-- tax category omitted from this fragment -->
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="GBP">2</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Deux valeurs diffèrent sur la ligne 3 : cbc:InvoicedQuantity passe de 1 à -1 et cbc:PriceAmount de -2 à 2. Le montant net de la ligne est de -2.00 dans les deux cas. Le document en échec ne signale que BR-27. L'étape Peppol réussit, car son contrôle du calcul de ligne, PEPPOL-EN16931-R120, constate toujours que 1 fois -2 égale -2.00.
Ce que le validateur a signalé
- La facture en erreur signale BR-27. 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. Un prix négatif sur une ligne d'avoir a été signalé de la même façon. - Un avoir n'a pas besoin de chiffres négatifs pour signifier un crédit. Les exemples d'avoir portent des quantités, des prix et des montants positifs et sont validés sans constat ; une correction à l'intérieur d'un avoir utilise une quantité négative, de la même façon que sur une facture.
- La règle ne couvre que le prix net. Le prix brut,
cac:Price/cac:AllowanceCharge/cbc:BaseAmount, a sa propre règle,BR-28, qui a été signalée lors d'un essai avec un prix brut négatif. - Lorsque le prix négatif ne concorde pas non plus avec le montant net de la ligne, le document signale
PEPPOL-EN16931-R120en plus deBR-27. C'est arrivé lorsque seul le prix a été rendu négatif, et lorsque le prix et la quantité étaient tous deux négatifs face à un montant net de ligne négatif.
Règles liées
- PEPPOL-EN16931-R120 vérifie que le montant net de la ligne est égal à quantité fois prix, moins les remises plus les frais
- PEPPOL-EN16931-R046 vérifie le prix net par rapport au prix brut et à sa remise
- BR-CO-10 vérifie la somme des montants nets des lignes, lignes négatives comprises
- 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-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.

