BR-KSA-10: Standard invoices need buyer street, city and country code
On standard invoices (cbc:InvoiceTypeCode/@name starting '01'), cac:AccountingCustomerParty/cac:Party/cac:PostalAddress must have non-empty cbc:StreetName, cbc:CityName and cac:Country/cbc:IdentificationCode. The executed check does not look at the country value, so it applies to Saudi buyers too, unlike the official text; it also does not require cbc:PostalZone or cbc:CitySubdivisionName, which the listed test text adds.
How to fix it
Fill the buyer's address with at least <cbc:StreetName>…</cbc:StreetName><cbc:CityName>…</cbc:CityName><cac:Country><cbc:IdentificationCode>…</cbc:IdentificationCode></cac:Country>.
ZATCA's official text
[BR-KSA-10]-Where the Buyer Country Code (BT-55) is other than 'SA' Buyer address must contain a street (BT-50), city (BT-52), country code (BT-55). This rule does not apply on the simplified tax invoices and associated credit notes and debit notes (KSA-2, position 1 and 2 = 02).
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules
Fails when (the condition ZATCA's SDK runs)
not (string-length(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode) > 0 and string-length(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:StreetName) > 0 and string-length(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:CityName) > 0 and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:StreetName) and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:CityName) and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode))
Related rules
- BR-KSA-06 · Invoice transaction code (name attribute) must follow NNPNESB
- BR-KSA-07 · Export invoices cannot be self-billed
- BR-KSA-15 · Standard tax invoices (388) need a supply date
- BR-KSA-25 · Simplified invoice with EDU/HEA exemption needs the buyer name
- BR-KSA-31 · Simplified invoices cannot be self-billed (KSA-2 position 7 = 0)
- BR-KSA-42 · Standard tax invoices and their notes need the buyer name (BT-44)
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