BG-23VAT breakdownBT-116VAT category taxable amountBT-117VAT category tax amountBT-118VAT category codeBT-119VAT category rate
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.
La même vérification par API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRègles liées
BR-AF-09Le montant de TVA d'une ventilation de catégorie « IGIC »…BR-AG-09Le montant de TVA d'une ventilation de catégorie « IPSI »…BR-S-08La base au taux normal (BT-116) ne correspond pas aux lignesBR-AF-08Pour chaque taux de TVA distinct de catégorie « IGIC »,…BR-AG-08Pour chaque taux de TVA distinct de catégorie « IPSI »,…BR-AE-08Dans une ventilation de TVA de catégorie « Autoliquidation »…BR-AE-09Le montant de TVA d'une ventilation de catégorie « Autoliquidation »…BR-CO-17La TVA par catégorie (BT-117) n'est pas égale à la base fois le taux
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.