Aller au contenu

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

BR-CO-22 : Indiquer le motif de chacun des frais au niveau du document

Des frais portant sur l'ensemble du document, comme le transport ou l'emballage, doivent porter un code de motif de UNTDID 7161, un texte de motif, ou les deux.

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

Sur cette page

La réponse courte

BR-CO-22 échoue lorsqu'un cac:AllowanceCharge placé à la racine et marqué comme frais, avec un cbc:ChargeIndicator à true, n'indique pas ce que couvrent ces frais. Ajoutez cbc:AllowanceChargeReasonCode avec le code UNTDID 7161 du service facturé, cbc:AllowanceChargeReason avec une description, ou les deux.

Chaque montant de frais sans motif est signalé deux fois : une fois comme BR-CO-22 et une fois comme BR-38, qui applique le même contrôle. Une seule correction vaut pour les deux.

Ce que la règle vérifie

Seuls les éléments cac:AllowanceCharge enfants directs de la racine Invoice ou CreditNote et marqués comme frais sont examinés. Chacun doit contenir au moins l'un des deux éléments de motif.

Un code sans texte passe, tout comme un texte sans code : lors d'un essai, les deux variantes de la facture corrigée ont été acceptées.

Cette règle ne vérifie que la présence. Un cbc:AllowanceChargeReasonCode vide l'a passée lors d'un essai, mais a ensuite été signalé par BR-CL-20, PEPPOL-EN16931-CL003 et PEPPOL-EN16931-R008.

Les frais de ligne ont leur propre paire de règles, BR-CO-24 et BR-44. Retirer le texte de motif des frais de ligne de la facture complète a signalé ces deux-là, et non BR-CO-22.

Le libellé du texte n'est jamais jugé par rapport au code. BR-CO-06, qui existe dans ce but, a un test qui passe toujours dans cette version.

TermeSignificationÉlément UBL
BG-21Charges ou frais au niveau du documentcac:AllowanceCharge[cbc:ChargeIndicator = true]
BT-104Motif des charges ou frais au niveau du documentcac:AllowanceCharge/cbc:AllowanceChargeReason
BT-105Code du motif des charges ou frais au niveau du documentcac: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 :

  • Le transport ou la manutention est ajouté comme forfait par un module d'expédition qui stocke un montant et une catégorie de TVA, mais aucun type de service.
  • La description des frais se trouve dans le modèle de mise en page imprimée et ne fait pas partie des données transmises au mapping XML.
  • Une majoration est appliquée automatiquement, par exemple sur les petites commandes, par une règle de prix qui n'a aucun nom à transmettre.
  • Les champs de motif vides sont supprimés par le sérialiseur, et le motif était vide pour ces frais.

Comment corriger le document

  1. Localisez les frais à partir du constat. Dans l'exemple enregistré, il s'agit de cac:AllowanceCharge[2], car l'index compte ensemble les remises et les frais placés sous la racine.
  2. Établissez quel service ou quel coût les frais couvrent, à partir de la commande, de l'enregistrement d'expédition ou de la règle de prix qui les a ajoutés.
  3. Cherchez le service dans la liste des frais UNTDID 7161 que publie Peppol ; par exemple, FC correspond à Freight service, DL à Delivery et PC à Packing. Écrivez le code correspondant dans cbc:AllowanceChargeReasonCode et, si rien ne convient, envoyez seulement le texte cbc:AllowanceChargeReason.
  4. Placez le code juste après cbc:ChargeIndicator et le texte après le code, tous deux avant cbc:MultiplierFactorNumeric et cbc:Amount, sinon l'étape XSD rejette le document.
  5. Enregistrez le motif là où les frais sont créés dans le système source, afin que les documents suivants ne reproduisent pas la lacune.

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 au niveau du document sans code ni texte de motif

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <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>

Fragment de la facture corrigée : les mêmes frais avec le code de motif CG et un texte de motif

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

Deux éléments manquent aux frais du document dans la facture en échec : cbc:AllowanceChargeReasonCode avec CG et cbc:AllowanceChargeReason avec Example document charge. Le document en échec signale BR-38 à côté de BR-CO-22, car les deux règles testent la même chose sur les mêmes frais : rétablir le motif lève donc les deux. CG signifie Cleaning dans UNTDID 7161 et le texte enregistré est générique ; des frais réels doivent porter le code et le libellé de leur propre service.

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 à Invoice et à CreditNote. Lors d'un essai, un avoir construit de la même façon a signalé BR-38 et BR-CO-22 sur les mêmes frais.
  • L'étape EN 16931 lit cbc:ChargeIndicator comme un booléen. Des frais écrits avec 1 au lieu de true comptent toujours comme frais ici : lors d'un essai sans motif, ils ont signalé cette règle et BR-38, ainsi que PEPPOL-EN16931-R043 pour la graphie.
  • Savoir si un code appartient à la liste des frais est une question distincte, à laquelle répond BR-CL-20.

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

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