En bref
- BR-S-05 impose qu’une ligne, remise ou charge en catégorie
S(Standard rated) aitRateApplicablePercentstrictement positif. BR-S-01est DIFFÉRENT : il exige qu’une facture avec au moins une ligneScontienne un breakdownSau niveau facture.- Taux français typiques : 5.50, 10.00, 20.00 métropolitain ; 2.10, 8.50, 13.00, 20.00 outre-mer.
- Cause fréquente : migration ERP où le mapping « code produit → taux TVA » est cassé.
- Réparable automatiquement par
/repairsi le taux peut être déduit deCalculatedAmount/BasisAmount.
Ce que l’erreur veut dire
BR-S-05 (Schematron EN16931, aligné Peppol) impose qu’une ligne, remise documentaire ou charge documentaire en catégorie S (Standard rated) ait son RateApplicablePercent strictement supérieur à 0. Attention : BR-S-01 contrôle une autre règle — la présence d’un VAT breakdown de catégorie S au niveau facture quand au moins une ligne S existe.
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
<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é
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>200.00</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>1000.00</ram:BasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
Correction manuelle
Positionner <ram:RateApplicablePercent> avec le taux applicable (5.50 / 10.00 / 20.00 en France métropolitaine). Si le taux est 0 sur une opération légalement à 0 %, changer la catégorie en Z (taux 0 légal) ou E (exonération), pas S. Si vous avez CalculatedAmount et BasisAmount déjà exposés, le taux se déduit : taux = round(CalculatedAmount / BasisAmount × 100, 2).
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]"