BR-KSA-90: Tax exchange rate may be at most 14 characters long
If cac:TaxExchangeRate/cbc:CalculationRate (KSA-39) is present and non-empty, its trimmed length must be under 15 characters. The check counts every character, including the decimal point, not only digits; the test string displayed for the rule is a copy of BR-KSA-89's.
How to fix it
Shorten the rate to 14 characters or fewer, e.g. <cbc:CalculationRate>3.75</cbc:CalculationRate>.
ZATCA's official text
[BR-KSA-90] If exists, the allowed maximum number of digits for the Tax Exchange Rate (KSA-39) is 14.
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules
Fails when (the condition ZATCA's SDK runs)
exists(/ubl:Invoice/cac:TaxExchangeRate/cbc:CalculationRate) and (/ubl:Invoice/cac:TaxExchangeRate/cbc:CalculationRate) != '' and not(string-length(normalize-space(/ubl:Invoice/cac:TaxExchangeRate/cbc:CalculationRate)) < 15)
Related rules
- BR-KSA-87 · Tax exchange rate needs source currency, target currency and rate
- BR-KSA-88 · Exchange-rate source currency must equal the invoice currency
- BR-KSA-89 · Exchange-rate target currency must equal the tax currency
- BR-KSA-92 · B2G invoices must include a contract ID
- BR-KSA-93 · Zero-rated (Z) line VAT breakdown needs an exemption reason code
- BR-KSA-94 · Exempt (E) line VAT breakdown needs an exemption reason 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