BT-116VAT category taxable amountBT-117VAT category tax amountBT-119VAT category rate
Officiële regeltekst
[BR-CO-17] VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.
De normatieve tekst is Engels en wordt ongewijzigd geciteerd.
Waarom deze fout optreedt
In elke btw-specificatie moet het btw-bedrag (BT-117) gelijk zijn aan het belastbare bedrag (BT-116) vermenigvuldigd met het tarief (BT-119) gedeeld door 100, afgerond op twee decimalen; de schematron accepteert een afwijking van minder dan 1.00 om afronding per regel toe te staan. Is het tarief 0, dan moet het btw-bedrag 0 zijn. De regel leest cac:TaxSubtotal/cbc:TaxAmount, cbc:TaxableAmount en cac:TaxCategory/cbc:Percent (UBL) of ram:ApplicableTradeTax/ram:CalculatedAmount, ram:BasisAmount en ram:RateApplicablePercent (CII). Hij slaat aan wanneer het percentage als breuk is geschreven (0.19), wanneer categorieën met verschillende tarieven in één subtotaal zijn samengevoegd, of wanneer de grondslag is gewijzigd nadat de btw was berekend.
Zo lost u het op
Formule: BT-117 = round(BT-116 x BT-119 / 100, 2). Schrijf het tarief als percentage (19, 7, 0), niet als 0.19. Maak één cac:TaxSubtotal (ram:ApplicableTradeTax) per combinatie van categoriecode en tarief, tel de bijbehorende nettoregelbedragen en kortingen/toeslagen op documentniveau op in cbc:TaxableAmount / ram:BasisAmount, en bereken cbc:TaxAmount / ram:CalculatedAmount over die grondslag. Voor de categorieën E, AE, K, G, O en Z is het tarief 0 en moet het btw-bedrag 0.00 zijn.
Voorbeeld (geldig)
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">245.90</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">46.72</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>
Wat de validator controleert
Gecontroleerd element (context):
UBL
cac:TaxTotal/cac:TaxSubtotalTest (XPath):
(round(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent)) = 0 and (round(xs:decimal(cbc:TaxAmount)) = 0)) or (round(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent)) != 0 and ((abs(xs:decimal(cbc:TaxAmount)) - 1 < round(abs(xs:decimal(cbc:TaxableAmount)) * (cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(cbc:TaxAmount)) + 1 > round(abs(xs:decimal(cbc:TaxableAmount)) * (cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent) div 100) * 10 * 10) div 100 ))) or (not(exists(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent))) and (round(xs:decimal(cbc:TaxAmount)) = 0))CII
//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTaxTest (XPath):
(round(.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent)) = 0 and (round(xs:decimal(ram:CalculatedAmount)) = 0)) or (round(.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent)) != 0 and ((abs(xs:decimal(ram:CalculatedAmount)) - 1 <= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(ram:CalculatedAmount)) + 1 >= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ))) or (not(exists(.[normalize-space(upper-case(ram:TypeCode))='VAT']/xs:decimal(ram:RateApplicablePercent))) and (round(xs:decimal(ram:CalculatedAmount)) = 0))
Automatisch herstellen
Deze fout kan automatisch worden hersteld: na uw bevestiging herberekent de checker totalen en btw uit de regelbedragen.
Dezelfde controle via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateGerelateerde regels
BR-AF-09Het btw-bedrag in een btw-uitsplitsing met categorie "IGIC"…BR-AG-09Het btw-bedrag in een btw-uitsplitsing met categorie "IPSI"…BR-S-09Btw-bedrag normaal tarief (BT-117) is niet grondslag maal tariefBR-AF-08Voor elk afzonderlijk btw-tarief in categorie "IGIC",…BR-AG-08Voor elk afzonderlijk btw-tarief in categorie "IPSI",…BR-S-08Belastbaar bedrag normaal tarief (BT-116) klopt niet met de regelsBR-CO-14Totaal btw-bedrag (BT-110) komt niet overeen met de btw-specificatieBR-45Elke btw-uitsplitsing moet een belastbaar bedrag per btw-categorie hebben
Veelgestelde vragen
Wat betekent BR-CO-17?
BR-CO-17 is een en 16931-kernregel: VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.
Wordt mijn factuur geweigerd vanwege BR-CO-17?
Ja. BR-CO-17 is "fataal"; validators (Peppol-accesspoints, KoSIT, KSeF) weigeren de factuur totdat de fout is opgelost.
Voor welke formaten geldt BR-CO-17?
Elke EN 16931-factuur: Peppol BIS Billing 3.0, NLCIUS, XRechnung, ZUGFeRD 2.x / Factur-X (profielen EN 16931, EXTENDED, XRECHNUNG) en andere nationale CIUS. Syntax: UBL en CII.
Bron: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Catalogus gegenereerd uit de officiële regelsets op 2026-10-15.