En bref
- BR-S-05 impose qu’une ligne de facture en catégorie
S(Standard rated, BT-151) ait un taux TVA (BT-152) strictement positif. Les remises et charges documentaires relèvent respectivement de BR-S-06 et BR-S-07. BR-S-01est DIFFÉRENT : il exige qu’une facture avec au moins une ligneScontienne un breakdownSau niveau facture.- La catégorie
Sne fixe pas un taux universel : utilisez le taux fiscal applicable à l’opération, déjà qualifié dans vos données métier. - Cause fréquente : migration ERP où le mapping « code produit → taux TVA » est cassé.
- Ne déduisez pas le taux fiscal d’un simple quotient montant/base.
/repairne choisit pas un taux manquant et ne recalcule pas la TVA.
Ce que l’erreur veut dire
BR-S-05 porte sur les lignes de facture (BG-25) : si leur catégorie TVA (BT-151) est S, leur taux (BT-152) doit être supérieur à zéro. BR-S-06 et BR-S-07 imposent une condition analogue aux remises et charges de niveau document ; ce sont des contrôles distincts.
En CII, le binding EN16931 1.3.16 cible ApplicableTradeTax sous IncludedSupplyChainTradeLineItem/SpecifiedLineTradeSettlement, avec CategoryCode=S et TypeCode=VAT. Le test porte sur RateApplicablePercent. Un taux positif satisfait cette condition, mais ne prouve pas que ce taux est fiscalement applicable. BR-S-01 contrôle séparément la présence de la ventilation TVA S au niveau document.
Quand cette erreur arrive
Survient avec : (a) export ERP qui distingue mal « catégorie TVA » et « taux TVA » ; (b) migration de système comptable avec mapping taux cassé ; (c) facture multi-taux où une ligne secondaire perd son taux ; (d) ligne créée à la volée sans héritage du taux du produit.
Exemple XML qui déclenche l’erreur
Fragments de taxe de ligne, sous IncludedSupplyChainTradeLineItem/SpecifiedLineTradeSettlement. Ils illustrent uniquement BR-S-05, pas une facture complète validée.
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>0.00</ram:RateApplicablePercent> <!-- ❌ doit être > 0 -->
</ram:ApplicableTradeTax>
Exemple XML corrigé
Dans cet exemple, les données métier confirment un taux de 20 %. Ce taux est illustratif : ne le substituez pas automatiquement au taux de votre opération.
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
Correction manuelle
- Repérez la ligne concernée grâce à la localisation du diagnostic, puis vérifiez sa catégorie et son taux dans l’export XML et dans l’ERP.
- Si la catégorie
Sest correcte, restaurez le taux confirmé par les données métier dansRateApplicablePercent. Un quotientCalculatedAmount / BasisAmountpeut être affecté par les arrondis et ne qualifie pas le régime fiscal. - Si l’opération relève d’un autre régime, corrigez sa catégorie et les données associées selon ce régime. Ne remplacez pas automatiquement
SparZouEsimplement parce que le taux exporté vaut zéro. - Régénérez le XML et relancez la validation. Un succès BR-S-05 n’établit ni la conformité fiscale de l’opération ni l’acceptation par une PA.
Réparable automatiquement par /repair ?
Pas par choix d’un taux fiscal. Le contrat public de l’API précise que /repair n’invente pas les données métier manquantes et ne recalcule pas la TVA. Complétez ou corrigez le taux dans votre système source, puis utilisez /validate pour contrôler le nouvel export.
Et maintenant ?
Diagnostiquer ma facture →
Après correction de la source, contrôler le XML sans le modifier :
curl -X POST https://api.facturxapi.com/api/v1/validate \
-H "Authorization: Bearer VOTRE_CLE" \
-F "file=@./facture.xml"