BR-47: Each VAT breakdown needs a VAT category code (BT-118)

Explained by Matheel from ZATCA's rule text and the condition SDK 3.4.8 executes · Updated

Error: the invoice is rejectedAll invoicesFields: BG-23, 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

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