Aller au contenu

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

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

Une remise ou des frais qui indiquent un montant de base doivent aussi indiquer le pourcentage ; une remise ou des frais d'un montant fixe ne devraient porter ni l'un ni l'autre.

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

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.

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 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

  1. Repérez le cac:AllowanceCharge nommé dans le constat, au niveau du document ou dans une ligne.
  2. Établissez si le montant a été dérivé d'un pourcentage. Si c'est le cas, ajoutez cbc:MultiplierFactorNumeric avec ce pourcentage, écrit 10 pour dix pour cent. En UBL, il se place avant cbc:Amount.
  3. 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.
  4. Une fois les deux présents, confrontez les trois chiffres : PEPPOL-EN16931-R040 exige 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é

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 dans les deux types de document.
  • La remise dans cac:Price n'est pas sélectionnée. À cet endroit, cbc:BaseAmount est le prix brut, aucun pourcentage n'est attendu, et c'est PEPPOL-EN16931-R046 qui s'applique.
  • Tant que le pourcentage manque, PEPPOL-EN16931-R040 ne 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.

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.