BR-KSA-75: Prepayment lines need taxable amount, tax amount, category and rate

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

Warning: accepted with a warningConditional, see belowFields: KSA-30, KSA-31, KSA-32, KSA-33, KSA-34

In an invoice with cac:LegalMonetaryTotal/cbc:PrepaidAmount > 0, every invoice line that has a cac:DocumentReference must carry cac:TaxTotal/cac:TaxSubtotal with cbc:TaxableAmount (KSA-31), cbc:TaxAmount (KSA-32), cac:TaxCategory/cbc:ID (KSA-33) and cac:TaxCategory/cbc:Percent (KSA-34). The executed check keys on the presence of cac:DocumentReference in the line, not specifically on the document type code (KSA-30).

How to fix it

In each prepayment line, add a cac:TaxTotal containing a cac:TaxSubtotal with cbc:TaxableAmount, cbc:TaxAmount and a cac:TaxCategory holding cbc:ID and cbc:Percent for the prepaid invoice's VAT category.

ZATCA's official text

[BR-KSA-75]-If Prepayment Document Type code (KSA-30) is provided in an Invoice Line, then the following data is mandatory to provide in that invoice line - Prepayment VAT category Taxable Amount (KSA-31) - Sum total of taxable amounts subject to specific VAT Category code of the prepayment invoice(s); Prepayment VAT Category Tax Amount (KSA-32) - Sum total of tax amounts subject to specific VAT Category code of the prepayment invoice(s); Prepayment VAT category code (KSA-33) - the VAT category code of the associated Prepayment invoice(s); Prepayment VAT rate (KSA-34) - VAT rate of the specific VAT Category code of the prepayment invoice(s)
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules

Fails when (the condition ZATCA's SDK runs)

not( exists(../cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount) and exists(../cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:Percent) and exists(../cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount) and exists(../cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/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