Aller au contenu

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

PEPPOL-EN16931-CL007 : Écrire chaque currencyID de montant exactement comme un code de la liste de devises Peppol

Peppol compare le currencyID de chaque montant à sa liste ISO 4217, caractère par caractère. Un code suivi d'une espace échoue ici, alors qu'EN 16931 l'accepte.

Peppol BIS BillingErreur : le document n'est pas valideListes de codes

Sur cette page

La réponse courte

PEPPOL-EN16931-CL007 échoue lorsque le currencyID d'un montant n'est pas exactement l'un des codes de la liste de devises Peppol. Rien n'est supprimé ni mis en majuscules avant la comparaison : l'attribut doit contenir le seul code à trois lettres, comme GBP, et rien d'autre.

Dans l'exemple enregistré, le montant à payer porte GBP suivi d'une espace. EN 16931 supprime les espaces de bord avant son propre contrôle, BR-CL-03, et accepte la valeur. Peppol ne le fait pas, et PEPPOL-EN16931-R051 signale aussi l'attribut, car il n'est plus égal à la devise de la facture.

Ce que la règle vérifie

La règle lit les mêmes treize éléments de montant que BR-CL-03 : cbc:Amount, cbc:BaseAmount, cbc:PriceAmount, cbc:TaxAmount, cbc:TaxableAmount, cbc:LineExtensionAmount et les totaux de cac:LegalMonetaryTotal. Chaque montant dont l'attribut est incorrect donne un constat distinct.

La règle déclenchée dépend de ce qui ne va pas dans la valeur. Une valeur absente des deux listes, comme UKP ou gbp, est signalée par cette règle et par BR-CL-03, ainsi que par PEPPOL-EN16931-R051 lorsqu'elle diffère du code de devise de la facture. Un code valide précédé ou suivi d'une espace réussit BR-CL-03 et n'échoue que dans l'étape Peppol : lors d'un essai, une espace initiale et une espace finale ont chacune été signalées par cette règle et par PEPPOL-EN16931-R051.

Les deux listes diffèrent d'une devise. La liste Peppol contient STN, le code actuel de la dobra de Sao Tomé-et-Principe, et pas le code retiré STD ; la liste EN 16931 fait l'inverse. Lors d'un essai, une facture entièrement en STD a réussi EN 16931 et déclenché cette règle sur chaque montant, tandis qu'une facture entièrement en STN a réussi l'étape Peppol et échoué sur BR-CL-03 et BR-CL-04.

Le montant total de la TVA dans la devise de comptabilisation est couvert, bien que PEPPOL-EN16931-R051 l'exclue. Lors d'un essai avec EUR comme devise de comptabilisation, EUR suivi d'une espace sur ce montant a été signalé par cette règle ainsi que par BR-53 et PEPPOL-EN16931-R055, qui retrouvent ce montant par son code de devise.

TermeSignificationÉlément UBL
-Devise d'un montant (l'attribut currencyID)currencyID on each amount element, for example cac:LegalMonetaryTotal/cbc:PayableAmount/@currencyID
BT-5Code de devise de la facturecbc:DocumentCurrencyCode

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 :

  • La devise provient d'un champ à largeur fixe ou d'une colonne de base de données de type CHAR et garde son remplissage.
  • Un modèle écrit l'attribut sous la forme currencyID="{currency} ", ou assemble des chaînes avec un séparateur, ce qui laisse une espace dans la valeur.
  • Les codes viennent d'une ancienne table de référence qui contient encore des devises retirées comme STD.
  • Chaque montant est alimenté par sa propre source, et une seule d'entre elles, comme le total à payer, fournit la valeur non nettoyée.

Comment corriger le document

  1. Utilisez l'emplacement du constat pour trouver le montant, puis l'endroit de votre mappage qui remplit son currencyID.
  2. Supprimez les espaces autour du code de devise une seule fois, là où il entre dans votre système, et remplissez chaque currencyID et cbc:DocumentCurrencyCode à partir de cette seule valeur.
  3. Vérifiez le code par rapport à la liste ISO 4217 actuelle. Un code valide dans les deux étapes, comme GBP ou EUR, efface à la fois cette règle et BR-CL-03.
  4. Pour la dobra de Sao Tomé-et-Principe, aucun code n'est accepté par les deux étapes dans la version épinglée : STN échoue sur EN 16931 et STD sur Peppol, si bien qu'une facture dans cette devise ne peut pas réussir tant que les listes ne concordent pas.

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 : le montant à payer porte GBP suivi d'une espace

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <!-- allowance, charge, prepaid and rounding totals omitted from this fragment -->
  <cbc:PayableAmount currencyID="GBP ">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Fragment de la facture corrigée : chaque montant porte le seul code GBP

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <!-- allowance, charge, prepaid and rounding totals omitted from this fragment -->
  <cbc:PayableAmount currencyID="GBP">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Seul le currencyID de cbc:PayableAmount diffère : GBP suivi d'une espace dans la facture en échec, GBP seul dans la facture corrigée. Deux constats Peppol partagent cet emplacement : cette règle, parce que la valeur complétée d'une espace n'est pas sur la liste, et PEPPOL-EN16931-R051, parce qu'elle n'est pas égale à la devise de la facture. L'étape EN 16931 réussit, car BR-CL-03 supprime d'abord les espaces de la valeur.

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 à UBL Invoice et CreditNote. Lors d'un essai, un avoir avec le même montant à payer suivi d'une espace a signalé les deux mêmes règles.
  • Signalée par l'étape Peppol. En dehors de STD, STN et des blancs autour d'un code, cette règle et BR-CL-03 acceptent et rejettent les mêmes valeurs dans la version épinglée.
  • Elle ne lit jamais cbc:DocumentCurrencyCode ni cbc:TaxCurrencyCode eux-mêmes ; ce sont BR-CL-04 et BR-CL-05 qui les contrôlent. Lors d'un essai avec STD comme devise de comptabilisation de la TVA, BR-CL-05 a accepté l'élément de code et cette règle n'a signalé que le total de TVA qui portait STD.

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 PEPPOL-EN16931-CL007 (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.