BT-107Sum of allowances on document levelBT-108Sum of charges on document levelBT-109Invoice total amount without VATBT-131Invoice line net amount
Texte officiel de la règle
[BR-CO-13] Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).
Le texte normatif est en anglais ; il est cité tel quel.
Pourquoi cette erreur apparaît
Le montant total de la facture hors TVA (BT-109) doit être égal à la somme des montants nets des lignes (BT-106), moins les remises au niveau du document (BT-107), plus les majorations au niveau du document (BT-108). La règle évalue cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount par rapport à cbc:LineExtensionAmount, cbc:AllowanceTotalAmount et cbc:ChargeTotalAmount (UBL), ou ram:TaxBasisTotalAmount par rapport à ram:LineTotalAmount, ram:AllowanceTotalAmount et ram:ChargeTotalAmount (CII). Les écarts proviennent généralement d'un logiciel qui déduit BT-109 de la ventilation de TVA ou des totaux TTC au lieu de ces trois champs.
Comment corriger
Formule : BT-109 = BT-106 - BT-107 + BT-108, arrondi à 2 décimales ; BT-107 ou BT-108 absents valent 0. En UBL, écrivez le résultat dans cbc:TaxExclusiveAmount, en CII dans ram:TaxBasisTotalAmount. Vérifiez d'abord que BT-106, BT-107 et BT-108 sont eux-mêmes corrects (BR-CO-10 à BR-CO-12), puis recalculez BT-109 à partir des valeurs effectivement écrites. N'y incluez ni la TVA, ni l'arrondi, ni le montant déjà payé.
Exemple (valide)
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">250.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">245.90</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">292.62</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">10.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">5.90</cbc:ChargeTotalAmount>
<cbc:PayableAmount currencyID="EUR">292.62</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
Ce que le validateur vérifie
Élément vérifié (contexte):
UBL
cac:LegalMonetaryTotalTest (XPath):
((cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10) div 100 )) or (not(cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10 ) div 100)) or ((cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount)) * 10 * 10 ) div 100)) or (not(cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = xs:decimal(cbc:LineExtensionAmount)))CII
//ram:SpecifiedTradeSettlementHeaderMonetarySummationTest (XPath):
(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) and not (ram:AllowanceTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))
Corriger automatiquement
Cette erreur peut être corrigée automatiquement : après confirmation, le vérificateur recalcule les totaux et la TVA à partir des lignes.
La même vérification par API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRègles liées
BR-CO-10Somme des montants nets de ligne (BT-106) non conforme aux lignesBR-CO-11Somme des remises au niveau du document (BT-107) erronéeBR-CO-12Somme des majorations au niveau du document (BT-108) erronéeBR-CO-15Le total TTC (BT-112) n'est pas égal au total HT plus la TVABR-13Une facture doit comporter le montant total hors TVABR-24Chaque ligne de facture doit avoir un montant net de ligneBR-AE-08Dans une ventilation de TVA de catégorie « Autoliquidation »…BR-AF-08Pour chaque taux de TVA distinct de catégorie « IGIC »,…
Questions fréquentes
Que signifie BR-CO-13 ?
BR-CO-13 est une règle de base en 16931 : Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).
Ma facture sera-t-elle rejetée à cause de BR-CO-13 ?
Oui. BR-CO-13 est classée « bloquante » ; les validateurs (plateformes agréées, points d'accès Peppol, KoSIT, KSeF) rejettent la facture tant qu'elle n'est pas corrigée.
À quels formats s'applique BR-CO-13 ?
Toute facture EN 16931 : Factur-X / ZUGFeRD 2.x (profils EN 16931, EXTENDED, XRECHNUNG), XRechnung, Peppol BIS Billing 3.0 et les CIUS nationales. Syntaxe : UBL et CII.
Source: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Catalogue généré à partir des jeux de règles officiels le 2026-10-15.