Sur cette page
La réponse courte
BR-CL-03 échoue lorsque l'attribut currencyID d'un montant n'est pas un code de la liste alphabétique ISO 4217. Le constat est localisé sur l'élément de montant ; mettez l'attribut au code à trois lettres de la devise de la facture, la même valeur que cbc:DocumentCurrencyCode.
Le UKP de l'exemple enregistré ressemble à un code pour la livre sterling mais n'en est pas un ; le code ISO est GBP. Deux règles Peppol examinent le même attribut, si bien qu'une seule valeur erronée produit trois constats.
Ce que la règle vérifie
Elle contrôle le currencyID de chaque cbc:Amount, cbc:BaseAmount, cbc:PriceAmount, cbc:TaxAmount, cbc:TaxableAmount et cbc:LineExtensionAmount, ainsi que des autres totaux de cac:LegalMonetaryTotal, où qu'ils apparaissent. Contrairement à la limite de décimales, elle couvre aussi le prix de l'article.
L'attribut est débarrassé des espaces qui l'entourent, puis recherché dans une liste fixe de codes, en respectant la casse. Lors d'un essai, gbp, le code numérique 826, un symbole livre et un attribut vide ont chacun échoué.
Les espaces autour sont tolérés ici mais pas ailleurs. Lors d'un essai, un espace initial avant GBP a passé cette règle et a quand même été signalé par PEPPOL-EN16931-CL007 et PEPPOL-EN16931-R051, qui comparent l'attribut exactement tel qu'il est écrit.
Tout code de la liste passe, y compris un code différent de la devise du document. La correspondance avec la devise de la facture relève de PEPPOL-EN16931-R051.
L'attribut est obligatoire dans le schéma UBL. Lors d'un essai, un montant sans currencyID a échoué à l'étape XSD et cette règle n'a jamais été atteinte.
| Terme | Signification | Élément UBL |
|---|---|---|
| - | Devise d'un montant (l'attribut currencyID) | currencyID on each amount element, for example cac:InvoiceLine/cac:Price/cbc:PriceAmount/@currencyID |
| BT-5 | Code de devise de la facture | cbc: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 :
- Une devise est saisie à la main ou conservée dans un champ de texte libre, ce qui produit des valeurs comme
UKPouSTG. - Les codes de devise sont stockés en minuscules ou sous forme de codes numériques ISO, et écrits tels quels.
- Chaque type de montant prend sa devise dans une source différente, et l'une d'elles, comme une liste de prix, écrit la devise autrement.
- Un symbole monétaire issu de la couche d'affichage est utilisé comme valeur de l'attribut.
Comment corriger le document
- Servez-vous de l'emplacement du constat pour voir quel montant porte la valeur erronée, puis trouvez où votre mapping remplit son
currencyID. - Remplissez chaque
currencyIDà partir de la même source quecbc:DocumentCurrencyCode, afin que les codes ne puissent pas diverger. - Écrivez le code alphabétique ISO 4217 en majuscules, sans espaces autour. Convertissez les codes numériques, symboles et noms à l'endroit où la valeur entre dans votre système.
- Le seul montant qui peut porter un autre code est le total de la TVA dans la devise de comptabilisation de la TVA, dans son propre
cac:TaxTotalsans ventilation, et ce code doit correspondre àcbc:TaxCurrencyCode.
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 prix est libellé en UKP
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<!-- item omitted from this fragment -->
<cac:Price>
<cbc:PriceAmount currencyID="UKP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Fragment de la facture corrigée : le prix est en GBP comme tous les autres montants
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<!-- item omitted from this fragment -->
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Seul le currencyID de cbc:PriceAmount diffère : UKP dans la facture en échec, GBP dans la facture corrigée. Trois constats partagent cet emplacement. BR-CL-03 est le contrôle de liste de codes d'EN 16931. PEPPOL-EN16931-CL007 est le contrôle du même attribut par rapport à ISO 4217 à l'étape Peppol, donc une valeur qui n'est pas un code de la liste échoue aux deux. PEPPOL-EN16931-R051 est signalé parce que UKP n'est pas la devise du document GBP ; il se déclencherait même pour un code valide comme EUR. Corriger l'attribut élimine les trois.
Ce que le validateur a signalé
- La facture en erreur signale BR-CL-03,
PEPPOL-EN16931-CL007et PEPPOL-EN16931-R051. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML en erreurTélécharger le XML corrigé
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
InvoiceetCreditNote. Lors d'un essai, un avoir avecUKPsur le prix a signalé les trois mêmes règles. - La liste est le même instantané ISO 4217 que celui que
BR-CL-04applique à la devise du document, donc un code retiré échoue ici aussi. - La règle examine un attribut à la fois. Elle ne compare pas les montants entre eux ni avec la devise du document, donc un mélange de codes valides la passe.
Règles liées
- PEPPOL-EN16931-R051 exige que chaque currencyID soit égal au code de devise du document
- BR-CL-04 applique la même liste de codes au code de devise du document
- BR-05 exige le code de devise du document que les attributs doivent reprendre
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : Understanding EN 16931 validation errors
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-CL-03 (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.

