BR-48: Each VAT breakdown needs a VAT rate (BT-119) unless category is O
Checks that the VAT cac:TaxCategory in every cac:TaxTotal/cac:TaxSubtotal under ubl:Invoice contains cbc:Percent; the only exception is when that category's cbc:ID is 'O' (not subject to VAT).
How to fix it
Add the rate inside the subtotal's cac:TaxCategory, e.g. <cbc:Percent>15.00</cbc:Percent>; it may be omitted only when the category cbc:ID is O.
ZATCA's official text
[BR-48]-Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.
Source: ZATCA SDK 3.4.8 · EN 16931 (CEN) rules
Fails when (the condition ZATCA's SDK runs)
not(exists(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:Percent) or (cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/normalize-space(cbc:ID)='O'))
Related rules
- BR-45 · Each VAT breakdown needs a taxable amount (BT-116)
- BR-46 · Each VAT breakdown needs a VAT amount (BT-117)
- BR-47 · Each VAT breakdown needs a VAT category code (BT-118)
- BR-CO-17 · VAT amount per category must equal taxable amount x rate
- BR-CO-18 · Every invoice needs at least one VAT breakdown
- BR-E-01 · Exempt (E) items need an 'E' VAT breakdown
Validate your invoice against ZATCA's rules
Paste the XML and see every error and warning. It runs in your browser; the invoice goes nowhere.
Validate an invoice or try Matheel