Technique

Erreur BR-S-05 EN16931 : TVA Standard sans taux > 0 — différence avec BR-S-01

2 min de lecture Par FacturX API

BR-S-05 exige qu'une ligne en catégorie S ait un RateApplicablePercent > 0. BR-S-01 exige la présence d'un VAT breakdown S quand une ligne S existe.

En bref

  • BR-S-05 impose qu’une ligne, remise ou charge en catégorie S (Standard rated) ait RateApplicablePercent strictement positif.
  • BR-S-01 est DIFFÉRENT : il exige qu’une facture avec au moins une ligne S contienne un breakdown S au 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 /repair si le taux peut être déduit de CalculatedAmount/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]"

Voir aussi

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