BR-KSA-CL-02: Every amount's currencyID must match the invoice currency

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

Error: the invoice is rejectedAll invoicesFields: BT-5, BT-111

Each checked amount element (cbc:Amount, cbc:BaseAmount, cbc:LineExtensionAmount, cbc:PriceAmount, the cac:LegalMonetaryTotal amounts, document cac:TaxSubtotal amounts, line cac:TaxTotal and cac:TaxSubtotal amounts) must have a non-empty @currencyID matching cbc:DocumentCurrencyCode (BT-5). Document-level cac:TaxTotal/cbc:TaxAmount is not in the checked list, which leaves room for the SAR VAT total (BT-111).

How to fix it

Set currencyID to the invoice currency on every amount, e.g. <cbc:LineExtensionAmount currencyID="SAR">100.00</cbc:LineExtensionAmount> when BT-5 is SAR.

ZATCA's official text

[BR-KSA-CL-02]-All currencyID attributes (BT-5) must have the same value as the invoice currency code (BT-5), except for the invoice total VAT amount in accounting currency (BT-111).
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules

Fails when (the condition ZATCA's SDK runs)

not(exists(@currencyID) and matches(normalize-space(//cbc:DocumentCurrencyCode), @currencyID) and (@currencyID !='') )

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