En bref
- BR-CO-15 vérifie que
BT-112(Invoice total amount with VAT, montant total avec TVA) =BT-109(HT après remises) +BT-110(TVA totale). - Ne pas confondre :
BT-112= total avec TVA ;BT-115= montant à payer (=BT-112 − BT-113 + BT-114, règle BR-CO-16). - Cause classique : changement de taux TVA ou de remise documentaire sans recalcul du total.
- Cas piégeux : ligne en autoliquidation (catégorie
AE) qui metBT-110à 0 et qu’on oublie de refléter dansBT-112. - Réparable automatiquement par
/repairquand les composantsBT-109etBT-110sont eux-mêmes corrects.
Ce que l’erreur veut dire
BR-CO-15 (Schematron EN16931, aligné Peppol) exige que GrandTotalAmount (BT-112, montant total avec TVA) soit strictement égal à la somme du TaxBasisTotalAmount (BT-109, HT après remises et frais documentaires) et du TaxTotalAmount (BT-110, total TVA). Tout écart bloque le document, sans tolérance. Attention sémantique : BT-112 est le total AVEC TVA ; ce n’est pas le « montant à payer » — ce dernier est BT-115 et relève de BR-CO-16.
Quand cette erreur arrive
Survient quand : (a) changement de taux TVA sans recalcul du total ; (b) ajout d’une remise documentaire (BG-20) qui modifie BT-109 mais pas BT-112 ; (c) ligne en autoliquidation (catégorie AE) où la TVA est 0 € mais où le moteur additionne une ligne fantôme ; (d) confusion entre HT brut et HT net (après remises et frais documentaires).
Exemple XML qui déclenche l’erreur
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:TaxBasisTotalAmount>1000.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">200.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>1100.00</ram:GrandTotalAmount> <!-- ❌ devrait être 1200.00 -->
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
Exemple XML corrigé
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:TaxBasisTotalAmount>1000.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">200.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>1200.00</ram:GrandTotalAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
Correction manuelle
Toujours recalculer GrandTotalAmount = TaxBasisTotalAmount + TaxTotalAmount en fin de pipeline ERP, après finalisation des lignes, des remises documentaires et du calcul TVA. En autoliquidation pure : TaxTotalAmount = 0.00, donc GrandTotalAmount = TaxBasisTotalAmount. Si vous voulez calculer le montant à payer (avec acompte ou arrondi), utilisez BT-115 et la règle BR-CO-16, pas BT-112.
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 "file=@facture.xml"