Technique

Erreur BR-CO-14 EN16931 : BT-110 ≠ Σ BT-117 — ventilation TVA par catégorie

2 min de lecture Par FacturX API

BR-CO-14 vérifie que le total TVA (BT-110) égale la somme des CategoryTradeTax/CalculatedAmount (BT-117). Cause classique : modification de taux sans recalcul.

En bref

  • BR-CO-14 contrôle que BT-110 (Invoice total VAT amount) = Σ BT-117 (montant TVA par catégorie).
  • Différent de BR-CO-17 qui vérifie, pour CHAQUE catégorie, que BT-117 = BT-116 × BT-119 / 100.
  • Cause : votre ERP exporte les ventilations TVA par catégorie séparément du total TVA, et un seul des deux est mis à jour.
  • Cas piégeux : autoliquidation (AE) où le taux est 0 mais où il faut quand même exposer une CategoryTradeTax correspondante.
  • Réparable automatiquement par /repair.

Ce que l’erreur veut dire

BR-CO-14 (Schematron EN16931, aligné Peppol) exige que TaxTotalAmount (BT-110, au niveau ApplicableHeaderTradeSettlement) soit strictement égal à la somme des CategoryTradeTax/CalculatedAmount (BT-117) pour chaque catégorie de TVA exposée (S, Z, E, AE, K, G, O, L, M). Cette règle contrôle l’agrégat entre le total TVA et les sous-totaux par catégorie.

Quand cette erreur arrive

Erreur fréquente avec : (a) factures multi-taux (5,5 % + 10 % + 20 %) où une catégorie est calculée séparément du total ; (b) modification du taux d’une ligne sans recalcul de la ventilation ; (c) ligne en autoliquidation où on oublie d’exposer la CategoryTradeTax correspondante ; (d) TVA aligné en erreur : la somme arrondie des catégories diffère de BT-110 calculé séparément.

Exemple XML qui déclenche l’erreur

<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>100.00</ram:CalculatedAmount>
  <ram:CategoryCode>S</ram:CategoryCode>
  <ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>50.00</ram:CalculatedAmount>
  <ram:CategoryCode>S</ram:CategoryCode>
  <ram:RateApplicablePercent>10.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:TaxTotalAmount currencyID="EUR">100.00</ram:TaxTotalAmount>  <!-- ❌ devrait être 150.00 -->
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Exemple XML corrigé

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:TaxTotalAmount currencyID="EUR">150.00</ram:TaxTotalAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Correction manuelle

Recalculer TaxTotalAmount = Σ ApplicableTradeTax/CalculatedAmount sur toutes les ApplicableTradeTax du document. Chaque combinaison (catégorie, taux) doit avoir sa propre entrée. Pour les catégories à 0 (Z, AE, G, K, E, O), exposer quand même la ligne avec CalculatedAmount=0.00.

Réparable automatiquement par /repair ?

Oui — l’endpoint /repair corrige automatiquement cette erreur dans la majorité des cas.

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