BT-5Invoice currency codeBT-111Invoice total VAT amount in accounting currency
Texte officiel de la règle
[PEPPOL-EN16931-R051] All currencyID attributes must have the same value as the invoice currency code (BT-5), except for the invoice total VAT amount in accounting currency (BT-111).
Le texte normatif est en anglais ; il est cité tel quel.
Pourquoi cette erreur apparaît
Dans une facture Peppol UBL, tous les montants doivent être exprimés dans la devise de facture (BT-5) ; la seule exception est le total de TVA dans la devise de comptabilisation (BT-111). La règle vérifie que l'attribut currencyID de chaque cbc:Amount, cbc:BaseAmount, cbc:PriceAmount, cbc:TaxAmount, cbc:TaxableAmount, cbc:LineExtensionAmount et de tous les montants de cac:LegalMonetaryTotal est égal à cbc:DocumentCurrencyCode. Elle se déclenche lorsqu'un modèle code en dur currencyID="EUR" alors que la devise du document est différente, ou lorsque les prix sont exportés dans la devise du fournisseur sur une facture en devise étrangère.
Comment corriger
Générez chaque currencyID à partir de la valeur de cbc:DocumentCurrencyCode au lieu de le coder en dur. Pour une facture en devise étrangère, convertissez tous les prix et montants dans cette devise avant l'export. Si BT-6 est utilisé, conservez exactement un cac:TaxTotal sans sous-totaux dans la devise de comptabilisation ; tous les autres montants, y compris les prix de ligne, restent dans la devise du document. Cette règle s'applique uniquement à UBL.
Exemple (valide)
<cbc:DocumentCurrencyCode>SEK</cbc:DocumentCurrencyCode>
...
<cbc:LineExtensionAmount currencyID="SEK">1000.00</cbc:LineExtensionAmount>
<cbc:PriceAmount currencyID="SEK">500.00</cbc:PriceAmount>
Ce que le validateur vérifie
Élément vérifié (contexte):
UBL
cbc:Amount | cbc:BaseAmount | cbc:PriceAmount | cac:TaxTotal[cac:TaxSubtotal]/cbc:TaxAmount | cac:TaxSubtotal/cbc:TaxAmount | cbc:TaxableAmount | cbc:LineExtensionAmount | cbc:TaxExclusiveAmount | cbc:TaxInclusiveAmount | cbc:AllowanceTotalAmount | cbc:ChargeTotalAmount | cbc:PrepaidAmount | cbc:PayableRoundingAmount | cbc:PayableAmountTest (XPath):
@currencyID = $documentCurrencyCode
Vérifier votre facture
Déposez votre XML ou PDF dans le validateur : chaque règle en échec renvoie vers sa page ici. Gratuit, sans compte, le fichier n'est pas conservé.
La même vérification par API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRègles liées
PEPPOL-EN16931-R001Identifiant du processus métier (BT-23) absentPEPPOL-EN16931-R002Une seule note autorisée au niveau document, sauf si l'acheteur et le vendeur…PEPPOL-EN16931-R003Ni référence acheteur ni référence de bon de commandePEPPOL-EN16931-R004Identifiant de spécification autre que Peppol BIS Billing 3.0PEPPOL-EN16931-R005Devise de comptabilisation de la TVA identique à la devise de facturePEPPOL-EN16931-R006Un seul objet facturé autorisé au niveau documentPEPPOL-EN16931-R007Identifiant du processus métier au format incorrectPEPPOL-EN16931-R008Le document contient des éléments vides
Questions fréquentes
Que signifie PEPPOL-EN16931-R051 ?
PEPPOL-EN16931-R051 est une règle peppol bis billing 3.0 : All currencyID attributes must have the same value as the invoice currency code (BT-5), except for the invoice total VAT amount in accounting currency (BT-111).
Ma facture sera-t-elle rejetée à cause de PEPPOL-EN16931-R051 ?
Oui. PEPPOL-EN16931-R051 est classée « bloquante » ; les validateurs (plateformes agréées, points d'accès Peppol, KoSIT, KSeF) rejettent la facture tant qu'elle n'est pas corrigée.
À quels formats s'applique PEPPOL-EN16931-R051 ?
Factures et avoirs transmis via le réseau Peppol (UBL) et, XRechnung reprenant ces règles, toute XRechnung. Syntaxe : UBL.
Source: Peppol BIS Billing 3.0.20 (November 2025). Catalogue généré à partir des jeux de règles officiels le 2026-10-15.