Sur cette page
La réponse courte
PEPPOL-EN16931-R121 échoue lorsque cac:Price/cbc:BaseQuantity vaut 0 ou une valeur négative sur une ligne. La quantité de base est le nombre d'unités auquel le prix s'applique : écrivez 1 pour un prix à l'unité, le nombre réel pour un prix par 100 ou par 1000, ou omettez l'élément.
Ce que la règle vérifie
La règle s'exécute sur chaque cac:InvoiceLine et cac:CreditNoteLine. Si le prix de la ligne n'a pas de cbc:BaseQuantity, elle passe. S'il en a un, la valeur doit être strictement supérieure à zéro.
Toute valeur décimale positive est acceptée, y compris en dessous de 1 : une quantité de base de 0.5, avec le prix ajusté en conséquence, passe.
La comparaison est numérique : 0.00 échoue donc tout comme 0.
| Terme | Signification | Élément UBL |
|---|---|---|
| BT-149 | Quantité de base du prix de l'article | cac:InvoiceLine/cac:Price/cbc:BaseQuantity |
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 quantité de base est un champ numérique non renseigné, qui est sérialisé en 0.
- Le système source a une colonne d'unité de prix qui est vide pour les articles ordinaires, et le vide est converti en 0 au lieu d'omettre l'élément.
- Une ligne de retour ou de correction inverse le signe de chaque quantité de la ligne, y compris la quantité de base du prix.
- Le champ a été mappé à partir d'une donnée sans rapport, comme un niveau de stock ou un nombre de colis, qui se trouve être nulle pour cet article.
Comment corriger le document
- Déterminez à quoi correspond le prix de
cbc:PriceAmount: une unité, ou un lot d'unités. - Pour un prix à l'unité, écrivez une quantité de base de 1 ou n'émettez pas du tout
cbc:BaseQuantity. Pour un prix par lot, écrivez la taille du lot. - Gardez la quantité de base positive sur les lignes négatives. Le signe d'une ligne se porte sur la quantité facturée ou créditée, pas sur la quantité de base.
- Revérifiez ensuite le calcul de la ligne.
PEPPOL-EN16931-R120divise le prix par la quantité de base : passer de 0 à toute autre valeur que 1 modifie donc le montant net attendu de la ligne.
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 ligne de facture en échec : une quantité de base du prix de 0
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">0</cbc:BaseQuantity>
</cac:Price>Fragment de la ligne de facture corrigée : le prix s'entend pour 1 unité
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>Seul cbc:BaseQuantity diffère : 0 dans le document en échec, 1 dans le document corrigé. Le document en échec ne signale que PEPPOL-EN16931-R121. La règle de calcul de ligne PEPPOL-EN16931-R120 ne se déclenche pas en plus, car elle lit une quantité de base de 0 comme 1, et 2 x 12.5 correspond au montant net de la ligne de 25.00.
Ce que le validateur a signalé
- La facture en erreur signale PEPPOL-EN16931-R121. 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 de la même façon aux lignes des documents UBL
InvoiceetCreditNote. Une quantité de base de 0 sur une ligne d'avoir ne signale que cette règle, comme sur une facture. - Une valeur négative n'a pas les mêmes effets secondaires que zéro. Avec -1 sur la ligne enregistrée, le validateur signale aussi
PEPPOL-EN16931-R120, sur les deux types de document, car cette règle utilise bien une quantité de base négative, et le montant attendu de la ligne devient -25.00. - Sans
cbc:BaseQuantity, le document passe cette règle et toutes les autres étapes, pour l'exemple de facture comme pour l'exemple d'avoir ; le calcul de la ligne traite alors le prix comme un prix pour 1 unité. - Un
cbc:BaseQuantitynon numérique ou vide n'atteint jamais cette règle. L'étape XSD rejette le document, et les étapes EN 16931 et Peppol sont ignorées.
Règles liées
- PEPPOL-EN16931-R120 utilise la quantité de base pour calculer le montant net de la ligne
- PEPPOL-EN16931-R046 contrôle le prix net par rapport au prix brut et au rabais sur le prix
- BR-27 rejette un prix net négatif
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : How Peppol invoice validation actually works
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 PEPPOL-EN16931-R121 (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.

