BR-KSA-CL-02: Every amount's currencyID must match the invoice currency
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
- BR-05 · Every invoice needs a currency code (BT-5)
- BR-53 · With a tax currency (BT-6), give the VAT total in it (BT-111)
- BR-KSA-88 · Exchange-rate source currency must equal the invoice currency
- BR-KSA-97 · Non-SAR invoice: SAR VAT total must differ from the VAT total
- BR-KSA-CL-01 · Invoice currency code must be a valid ISO 4217 code
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