Aller au contenu

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

BR-CO-24 : Donner à chaque frais de ligne un code ou un texte de motif

Des frais sur une ligne de facture ou d'avoir ont besoin de cbc:AllowanceChargeReasonCode, de cbc:AllowanceChargeReason ou des deux. BR-44 signale le même manque.

EN 16931Erreur : le document n'est pas valideRemises et fraisLignes et prix

Sur cette page

La réponse courte

BR-CO-24 échoue lorsqu'un cac:AllowanceCharge de ligne avec cbc:ChargeIndicator à true ne contient ni cbc:AllowanceChargeReasonCode ni cbc:AllowanceChargeReason. Dites pourquoi la ligne coûte davantage : un code UNTDID 7161, un texte, ou les deux.

Un document en échec signale aussi BR-44. Cette règle EN 16931 fait exactement le même contrôle sur les mêmes frais : les deux apparaissent donc toujours ensemble, et un seul motif lève les deux.

Ce que la règle vérifie

Chaque cac:AllowanceCharge placé directement dans une ligne et qui se lit comme des frais est contrôlé séparément. Une ligne portant une remise et une majoration est jugée élément par élément, et la remise est laissée à BR-CO-23.

L'un ou l'autre élément suffit, et seule sa présence compte. Lors d'un essai, les frais avec seulement cbc:AllowanceChargeReasonCode à ABL ont passé toutes les étapes, tandis qu'un <cbc:AllowanceChargeReason/> vide a passé BR-CO-24 et BR-44 et a été rejeté par PEPPOL-EN16931-R008.

Les codes de frais viennent d'une autre liste que les codes de remise. Lors d'un essai, le code 95, qui désigne une remise, sur les frais de ligne a signalé BR-CL-20 et PEPPOL-EN16931-CL003.

Les frais placés directement sous la racine du document sont hors du champ de cette règle. Lors d'un essai, des frais au niveau du document privés de leur motif ont signalé BR-CO-22 et BR-38 à la place.

TermeSignificationÉlément UBL
BG-28Charges ou frais sur la ligne de facturecac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = true] (cac:CreditNoteLine/cac:AllowanceCharge in a credit note)
BT-144Motif des frais sur la ligne de facturecac:InvoiceLine/cac:AllowanceCharge/cbc:AllowanceChargeReason
BT-145Code du motif des frais sur la ligne de facturecac:InvoiceLine/cac:AllowanceCharge/cbc:AllowanceChargeReasonCode

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 :

  • Une majoration, comme des frais de petite commande ou d'urgence, est ajoutée par ligne par une règle de prix qui ne stocke que le montant.
  • Le mapping des frais de ligne a été copié sur celui des remises de ligne, et les champs de motif n'ont pas été repris.
  • Le texte du motif est facultatif dans la source, et lorsqu'il est vide aucun code n'est écrit à sa place.
  • Un nettoyage réduit le texte du motif à rien, et l'élément est alors omis.

Comment corriger le document

  1. Repérez les frais à partir du constat, par exemple cac:InvoiceLine[1]/cac:AllowanceCharge[2]. Le second indice compte chaque cac:AllowanceCharge de la ligne, y compris la remise qui les précède.
  2. Reprenez le type de frais depuis la fiche de prix qui les a créés.
  3. Lorsque le type correspond à une entrée de UNTDID 7161, écrivez ce code dans cbc:AllowanceChargeReasonCode. Ajoutez cbc:AllowanceChargeReason avec une description, ou envoyez le texte seul lorsqu'aucun code ne convient.
  4. Placez les éléments de motif juste après cbc:ChargeIndicator, avant cbc:MultiplierFactorNumeric et cbc:Amount. Le montant des frais et le montant net de la ligne restent inchangé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 : les frais de 0.01 sur la ligne 1 ont un montant et rien qui dise à quoi ils correspondent

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <!-- note, quantity, line net amount, accounting cost, order line reference and line allowance omitted from this fragment -->
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:Amount currencyID="GBP">0.01</cbc:Amount>
  </cac:AllowanceCharge>
  <!-- item and price omitted from this fragment -->
</cac:InvoiceLine>

Fragment de la facture corrigée : les frais de ligne portent le texte de motif Example charge

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <!-- note, quantity, line net amount, accounting cost, order line reference and line allowance omitted from this fragment -->
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReason>Example charge</cbc:AllowanceChargeReason>
    <cbc:Amount currencyID="GBP">0.01</cbc:Amount>
  </cac:AllowanceCharge>
  <!-- item and price omitted from this fragment -->
</cac:InvoiceLine>

Sur la ligne 1, la facture corrigée donne aux frais de 0.01 le texte de motif Example charge ; la facture en échec n'a aucun motif sur ces frais et est identique par ailleurs. Le document en échec signale BR-44 avec BR-CO-24, tous deux à cac:InvoiceLine[1]/cac:AllowanceCharge[2], car les deux règles partagent un même contrôle. La remise de ligne qui précède les frais garde son code 95 et n'est pas signalé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 à cac:InvoiceLine dans un document Invoice et à cac:CreditNoteLine dans un CreditNote. Lors d'un essai, la version avoir de l'exemple a signalé BR-44 et BR-CO-24 à cac:CreditNoteLine[1]/cac:AllowanceCharge[2].
  • Les deux règles relèvent de l'étape EN 16931, et l'étape Peppol n'a rien à dire d'un motif manquant. Lorsqu'un code est présent, Peppol le vérifie par rapport à la liste des frais sous PEPPOL-EN16931-CL003.
  • BR-44 n'a pas de page propre dans cette référence ; tout ce qui figure ici s'y applique tel quel.
  • Des frais de ligne n'ont pas de catégorie de TVA propre. Ils font partie du montant net de la ligne et sont taxés avec elle.

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-28.1 : source vérifiée le 2026-09-28, explication mise à jour le 2026-09-28.

La définition officielle de BR-CO-24 (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.