Sur cette page
La réponse courte
PEPPOL-EN16931-R041 échoue pour tout cac:AllowanceCharge qui contient cbc:MultiplierFactorNumeric mais pas cbc:BaseAmount. Ajoutez le montant de base auquel le pourcentage a été appliqué, placé après cbc:Amount.
Si le montant n'a jamais été calculé à partir d'un pourcentage, supprimez plutôt cbc:MultiplierFactorNumeric et envoyez le montant seul.
Ce que la règle vérifie
Il s'agit d'un contrôle de présence, sans aucun calcul. La règle sélectionne les éléments cac:AllowanceCharge placés directement sous la racine du document ou directement sous une ligne qui contiennent cbc:MultiplierFactorNumeric sans cbc:BaseAmount, et chaque élément sélectionné échoue.
La valeur du pourcentage n'a aucune importance, pas plus que cbc:ChargeIndicator : remises et frais sont traités de la même façon.
Une remise ou des frais sans pourcentage ni montant de base passent. Confirmé avec le validateur en retirant les deux des frais enregistrés.
| Terme | Signification | Élément UBL |
|---|---|---|
| BG-20 | Remises au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = false] |
| BG-21 | Charges ou frais au niveau du document | cac:AllowanceCharge[cbc:ChargeIndicator = true] |
| BG-27 | Remises sur la ligne de facture | cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = false] |
| BG-28 | Charges ou frais sur la ligne de facture | cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = 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 système source stocke la remise sous forme de pourcentage et de montant résultant, et n'a pas de colonne pour le chiffre auquel le pourcentage a été appliqué.
- Le montant de base est mappé depuis un champ vide pour ce document, et le sérialiseur supprime les éléments vides.
- Un pourcentage est écrit à titre d'information sur ce qui est en réalité des frais d'un montant fixe.
- Le mapping a été conçu pour des remises au niveau de la ligne et réutilisé au niveau du document, où aucune valeur de base n'a été raccordée.
Comment corriger le document
- Repérez le
cac:AllowanceChargeindiqué par le constat. La règle se déclenche une fois pour chaque élément concerné, au niveau du document ou dans une ligne. - Si le montant provient d'un pourcentage, ajoutez
cbc:BaseAmountavec le chiffre auquel le pourcentage a été appliqué, avec le mêmecurrencyIDque le montant. En UBL, il suitcbc:Amount. - Si le montant est une somme fixe, supprimez
cbc:MultiplierFactorNumeric. N'inventez pas un montant de base pour que les chiffres collent. - Lorsque les deux éléments sont présents,
PEPPOL-EN16931-R040vérifie que le montant est égal à montant de base x pourcentage / 100 à 0.02 près : assurez-vous donc que la base ajoutée est bien celle qui a été utilisée.
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 : des frais de 10 pour cent sans montant de base
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>Fragment de la facture corrigée : le montant de base de 35.00 est indiqué
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">35.00</cbc:BaseAmount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>Le document corrigé ajoute cbc:BaseAmount de 35.00 après cbc:Amount ; rien d'autre ne diffère. Le document en échec ne signale que PEPPOL-EN16931-R041. Le montant et tous les totaux sont inchangés : aucune règle de calcul n'est donc concernée.
Ce que le validateur a signalé
- La facture en erreur signale PEPPOL-EN16931-R041. 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 aux documents UBL
InvoiceetCreditNote, au niveau du document et danscac:InvoiceLineoucac:CreditNoteLine. Confirmé avec le validateur sur une remise au niveau de la ligne et sur un avoir. - La remise dans
cac:Pricen'est pas sélectionnée par cette règle. - Lorsque cette règle se déclenche,
PEPPOL-EN16931-R040reste muette pour le même élément, car elle ne compare les chiffres que si le pourcentage et le montant de base sont tous deux présents.
Règles liées
- PEPPOL-EN16931-R042 est le cas symétrique : un montant de base envoyé sans pourcentage
- PEPPOL-EN16931-R040 vérifie le calcul dès que le pourcentage et le montant de base sont tous deux présents
- BR-CO-12 vérifie que les montants de frais au niveau du document donnent le total des frais
- 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-R041 (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.

