Technique

Erreur BR-05 EN16931 : BT-5 InvoiceCurrencyCode manquant — ajouter la devise

2 min de lecture Par FacturX API

BR-05 exige la présence de BT-5 (InvoiceCurrencyCode) sur toute facture EN16931. Code ISO 4217 alpha-3 (EUR, USD, GBP). Différent de BR-13 qui concerne BT-109.

En bref

  • BR-05 (et non BR-13) impose la présence d’InvoiceCurrencyCode (BT-5) dans ApplicableHeaderTradeSettlement.
  • La valeur est un code ISO 4217 alpha-3 sur 3 lettres : EUR, USD, GBP, etc. — pas un symbole.
  • Pour rappel, BR-13 concerne un autre champ (montant total sans TVA, BT-109).
  • Omis fréquemment sur les factures France-France où la devise est implicite côté ERP.
  • Réparable automatiquement par /repair — mais le choix d’une devise par défaut est une décision produit, pas une règle du standard.

Ce que l’erreur veut dire

BR-05 (règle cœur EN16931) exige que la facture déclare explicitement sa devise via InvoiceCurrencyCode (BT-5) à l’intérieur de ApplicableHeaderTradeSettlement. Sans cette balise, aucun calcul TVA ni totaux n’a de sens, et le validateur Schematron rejette d’emblée. Attention : de nombreux articles confondent BR-05 et BR-13BR-13 impose la présence de BT-109 (montant total sans TVA), pas de la devise.

Quand cette erreur arrive

Très fréquent quand : (a) l’ERP ne déclare la devise qu’au niveau « société » et oublie de la propager dans le XML ; (b) export depuis un système US où le dollar est implicite ; (c) facture en franc CFA ou autre devise francophone non gérée par défaut ; (d) avoir vide où l’export XML omet la summation entière.

Exemple XML qui déclenche l’erreur

<ram:ApplicableHeaderTradeSettlement>
  <!-- ❌ pas de InvoiceCurrencyCode -->
  <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    <ram:GrandTotalAmount>1200.00</ram:GrandTotalAmount>
  </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>

Exemple XML corrigé

<ram:ApplicableHeaderTradeSettlement>
  <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
  <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    <ram:GrandTotalAmount>1200.00</ram:GrandTotalAmount>
  </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>

Correction manuelle

Ajouter <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode> (ou un autre code ISO 4217 alpha-3) en première position dans ApplicableHeaderTradeSettlement. La même devise doit être reprise dans currencyID="EUR" sur tous les attributs des montants TVA. Note : FacturX API peut appliquer un défaut produit (EUR pour les pays UE) dans /repair, mais ce comportement est propre à notre implémentation, pas au standard.

Réparable automatiquement par /repair ?

Oui, sous conditions — l’endpoint /repair corrige automatiquement cette erreur quand les données structurées sont récupérables. Dans les cas ambigus, une décision humaine reste nécessaire.

Et maintenant ?

Réparer mon Factur-X →

curl -X POST https://api.facturxapi.com/api/v1/repair \
  -H "Authorization: Bearer VOTRE_CLE" \
  -F "[email protected]"

Voir aussi

#en16931 #schematron #factur-x #erreurs #validation