Compte
Français

BR-CO-15: Le total TTC (BT-112) n'est pas égal au total HT plus la TVA

Règle de base EN 16931 · Erreur · UBL, CII

NormeEN 16931-1 (modèle sémantique européen de la facture électronique)GravitéErreur: la facture est rejetéeSyntaxeUBL, CIITermes métier
  • BT-109 Invoice total amount without VAT
  • BT-110 Invoice total VAT amount
  • BT-112 Invoice total amount with VAT
S'applique àToute facture EN 16931 : Factur-X / ZUGFeRD 2.x (profils EN 16931, EXTENDED, XRECHNUNG), XRechnung, Peppol BIS Billing 3.0 et les CIUS nationales.

Texte officiel de la règle

[BR-CO-15] Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).

Le texte normatif est en anglais ; il est cité tel quel.

Pourquoi cette erreur apparaît

Le montant total TTC de la facture (BT-112) doit être égal au total HT (BT-109) augmenté du montant total de TVA (BT-110). La règle exige en outre un seul total de TVA dans la devise du document : en UBL, un seul cac:TaxTotal/cbc:TaxAmount dont le currencyID est égal à cbc:DocumentCurrencyCode ; en CII, un seul ram:TaxTotalAmount dont le currencyID est égal à ram:InvoiceCurrencyCode. Elle échoue en cas d'écart d'arrondi, d'absence de currencyID sur le montant de TVA, ou lorsque deux éléments TaxTotal utilisent tous deux la devise du document.

Comment corriger

Formule : BT-112 = BT-109 + BT-110, arrondi à 2 décimales. En UBL, renseignez cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount = cbc:TaxExclusiveAmount + cac:TaxTotal/cbc:TaxAmount[@currencyID = devise du document] ; en CII, ram:GrandTotalAmount = ram:TaxBasisTotalAmount + ram:TaxTotalAmount[@currencyID = devise de facturation]. Chaque montant de TVA doit porter l'attribut currencyID. Conservez un seul total de TVA dans la devise du document ; un second n'est autorisé que dans la devise de comptabilisation de la TVA (BT-111).

Exemple (valide)

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">238.00</cbc:TaxInclusiveAmount>
  <cbc:PayableAmount currencyID="EUR">238.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Ce que le validateur vérifie

Élément vérifié (contexte):

UBL

/ubl:Invoice | /cn:CreditNote

Test (XPath):

every $Currency in cbc:DocumentCurrencyCode satisfies (count(cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) eq 1) and (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxInclusiveAmount) = round( (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxExclusiveAmount) + cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) * 10 * 10) div 100)

CII

/rsm:CrossIndustryInvoice

Test (XPath):

every $Currency                                  in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode                                 satisfies (                                     count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and                                     (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round(                                      (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) +                                      (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or                                 (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))

Corriger automatiquement

Cette erreur peut être corrigée automatiquement : après confirmation, le vérificateur recalcule les totaux et la TVA à partir des lignes.

Corriger ma facture →

La même vérification par API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Règles liées

Questions fréquentes

Que signifie BR-CO-15 ?

BR-CO-15 est une règle de base en 16931 : Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).

Ma facture sera-t-elle rejetée à cause de BR-CO-15 ?

Oui. BR-CO-15 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-15 ?

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.