Sur cette page
La réponse courte
PEPPOL-EN16931-R042 échoue pour tout cac:AllowanceCharge qui contient cbc:BaseAmount mais pas cbc:MultiplierFactorNumeric. Si le montant est un pourcentage de cette base, ajoutez le pourcentage, placé avant cbc:Amount.
Si le montant est une somme fixe, le montant de base n'a aucun rôle : supprimez cbc:BaseAmount.
Ce que la règle vérifie
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:BaseAmount sans cbc:MultiplierFactorNumeric. Être sélectionné constitue l'échec ; aucune valeur n'est comparée.
Remises et frais sont traités de manière identique, et la valeur du montant de base n'a aucune importance.
Envoyer seulement cbc:Amount, sans montant de base ni pourcentage, passe la règle.
| 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 mapping écrit toujours un montant de base, comme le sous-total de la ligne ou du document, y compris pour des remises et des frais d'un montant fixe qui n'ont pas de pourcentage.
- Le pourcentage est nul dans l'enregistrement source parce que l'utilisateur a saisi la remise sous forme de montant.
- Un pourcentage de 0 est traité comme vide par le sérialiseur et supprimé, alors que le montant de base est conservé.
- Le pourcentage figure dans une liste de prix ou un accord client et n'est jamais recopié dans l'enregistrement de la facture.
Comment corriger le document
- Repérez le
cac:AllowanceChargenommé dans le constat, au niveau du document ou dans une ligne. - Établissez si le montant a été dérivé d'un pourcentage. Si c'est le cas, ajoutez
cbc:MultiplierFactorNumericavec ce pourcentage, écrit 10 pour dix pour cent. En UBL, il se place avantcbc:Amount. - Sinon, supprimez
cbc:BaseAmount. Ne recalculez pas un pourcentage à partir du montant et de la base uniquement pour remplir l'élément, sauf si c'est réellement ainsi que le montant a été obtenu. - Une fois les deux présents, confrontez les trois chiffres :
PEPPOL-EN16931-R040exige que le montant soit égal à montant de base x pourcentage / 100 à 0.02 près.
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 avec un montant de base de 35.00 et sans pourcentage
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">35.00</cbc:BaseAmount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>Fragment de la facture corrigée : les 10 pour cent qui ont produit 3.50 sont indiqués
<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:MultiplierFactorNumeric de 10 avant cbc:Amount ; rien d'autre ne diffère. Le document en échec ne signale que PEPPOL-EN16931-R042. Aucun montant ni aucun total ne change : les règles de calcul ne sont donc pas concernées.
Ce que le validateur a signalé
- La facture en erreur signale PEPPOL-EN16931-R042. 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 dans les deux types de document. - La remise dans
cac:Pricen'est pas sélectionnée. À cet endroit,cbc:BaseAmountest le prix brut, aucun pourcentage n'est attendu, et c'estPEPPOL-EN16931-R046qui s'applique. - Tant que le pourcentage manque,
PEPPOL-EN16931-R040ne compare pas les chiffres de cet élément : un problème de calcul peut donc n'apparaître qu'une fois cette règle corrigée.
Règles liées
- PEPPOL-EN16931-R041 est le cas symétrique : un pourcentage envoyé sans montant de base
- PEPPOL-EN16931-R040 confronte montant, montant de base et pourcentage dès que les trois sont présents
- PEPPOL-EN16931-R046 traite le montant de base de la remise dans le prix, qui est le prix brut
- 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-R042 (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.

