BR-47: Each VAT breakdown needs a VAT category code (BT-118)
Checks that every cac:TaxTotal/cac:TaxSubtotal under ubl:Invoice contains a cac:TaxCategory whose cac:TaxScheme/cbc:ID is 'VAT' and which has a cbc:ID.
How to fix it
Inside each cac:TaxSubtotal add <cac:TaxCategory><cbc:ID>S</cbc:ID><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory> with the category code that applies.
ZATCA's official text
[BR-47]-Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).
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:ID))
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-48 · Each VAT breakdown needs a VAT rate (BT-119) unless category is O
- BR-CO-18 · Every invoice needs at least one VAT breakdown
- BR-E-01 · Exempt (E) items need an 'E' VAT breakdown
- BR-E-08 · Exempt (E) taxable amount must match the exempt lines and adjustments
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