Compte
Français

BR-S-09: La TVA au taux normal (BT-117) n'est pas égale à la base fois le taux

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
  • BG-23 VAT breakdown
  • BT-116 VAT category taxable amount
  • BT-117 VAT category tax amount
  • BT-118 VAT category code
  • BT-119 VAT category rate
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-S-09] The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).

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

Pourquoi cette erreur apparaît

Dans une ventilation au taux normal (catégorie S), le montant de TVA (BT-117) doit être égal à la base d'imposition (BT-116) multipliée par le taux (BT-119) ; le schematron admet un écart inférieur à 1.00 pour tolérer l'arrondi par ligne. La règle lit cac:TaxSubtotal/cbc:TaxAmount, cbc:TaxableAmount et cac:TaxCategory/cbc:Percent (UBL) ou ram:CalculatedAmount, ram:BasisAmount et ram:RateApplicablePercent (CII). Elle échoue lorsque le taux est indiqué sous la forme 0.19, lorsque la taxe a été calculée sur une base différente de celle inscrite, ou lorsque le montant a été copié d'un PDF avec un arrondi différent.

Comment corriger

Formule : BT-117 = round(BT-116 x BT-119 / 100, 2), le taux étant exprimé en pourcentage (19, 7). Calculez la taxe à partir du cbc:TaxableAmount / ram:BasisAmount exact inscrit dans le XML. Si votre système calcule la TVA par ligne puis l'additionne, le résultat reste dans la tolérance, mais les totaux doivent rester cohérents avec BR-CO-14 et BR-CO-15. Conservez un sous-total par taux.

Exemple (valide)

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
  <cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
</cac:TaxSubtotal>

Ce que le validateur vérifie

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

UBL

/*/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) = 'S'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']

Test (XPath):

(abs(xs:decimal(../cbc:TaxAmount)) - 1 <  round((abs(xs:decimal(../cbc:TaxableAmount)) * (xs:decimal(cbc:Percent) div 100)) * 10 * 10) div 100 ) and (abs(xs:decimal(../cbc:TaxAmount)) + 1 >  round((abs(xs:decimal(../cbc:TaxableAmount)) * (xs:decimal(cbc:Percent) div 100)) * 10 * 10) div 100 )

CII

//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.='S']

Test (XPath):

(abs(xs:decimal(../ram:CalculatedAmount)) - 1 < round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 ) and (abs(xs:decimal(../ram:CalculatedAmount)) + 1 > round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 )

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-S-09 ?

BR-S-09 est une règle de base en 16931 : The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).

Ma facture sera-t-elle rejetée à cause de BR-S-09 ?

Oui. BR-S-09 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-S-09 ?

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.