En bref
- BR-05 (et non BR-13) impose la présence d’
InvoiceCurrencyCode(BT-5) dansApplicableHeaderTradeSettlement. - La valeur est un code ISO 4217 alpha-3 sur 3 lettres :
EUR,USD,GBP, etc. — pas un symbole. - Pour rappel,
BR-13concerne 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-13 — BR-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]"