Aller au contenu

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

PEPPOL-EN16931-R041 : Ajouter le montant de base à une remise ou à des frais qui indiquent un pourcentage

Une remise ou des frais qui indiquent un pourcentage doivent aussi indiquer le montant de base auquel le pourcentage a été appliqué.

Peppol BIS BillingErreur : le document n'est pas valideRemises et frais

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.

TermeSignificationÉlément UBL
BG-20Remises au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = false]
BG-21Charges ou frais au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = true]
BG-27Remises sur la ligne de facturecac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = false]
BG-28Charges ou frais sur la ligne de facturecac: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

  1. Repérez le cac:AllowanceCharge indiqué par le constat. La règle se déclenche une fois pour chaque élément concerné, au niveau du document ou dans une ligne.
  2. Si le montant provient d'un pourcentage, ajoutez cbc:BaseAmount avec le chiffre auquel le pourcentage a été appliqué, avec le même currencyID que le montant. En UBL, il suit cbc:Amount.
  3. Si le montant est une somme fixe, supprimez cbc:MultiplierFactorNumeric. N'inventez pas un montant de base pour que les chiffres collent.
  4. Lorsque les deux éléments sont présents, PEPPOL-EN16931-R040 vé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é

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 Invoice et CreditNote, au niveau du document et dans cac:InvoiceLine ou cac:CreditNoteLine. Confirmé avec le validateur sur une remise au niveau de la ligne et sur un avoir.
  • La remise dans cac:Price n'est pas sélectionnée par cette règle.
  • Lorsque cette règle se déclenche, PEPPOL-EN16931-R040 reste 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.

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.