BR-KSA-63: Saudi buyer needs a full national address on standard invoices

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

Warning: accepted with a warningStandard tax invoices (B2B)Fields: BT-55, BT-50, KSA-18, BT-53, BT-52, KSA-4

When the buyer's cac:PostalAddress/cac:Country/cbc:IdentificationCode (BT-55) is 'SA', the buyer address must have non-blank cbc:StreetName (BT-50), cbc:BuildingNumber (KSA-18), cbc:PostalZone (BT-53), cbc:CityName (BT-52), cbc:CitySubdivisionName (district, KSA-4) and the country code. The check only runs on standard tax invoices and their notes (@name starting '01'), which the official text does not state.

How to fix it

Fill all six fields under cac:AccountingCustomerParty/cac:Party/cac:PostalAddress: cbc:StreetName, cbc:BuildingNumber, cbc:PostalZone, cbc:CityName, cbc:CitySubdivisionName and cac:Country/cbc:IdentificationCode.

ZATCA's official text

[BR-KSA-63]-If the buyer country code (BT-55) is "SA", then these fields are mandatory:street name (BT-50), building number (KSA-18), postal code (BT-53), city (BT-52), District (KSA-4), country code (BT-55).For more information please access this link:https://splonline.com.sa/en/national-address-1/
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules

Fails when (the condition ZATCA's SDK runs)

not((exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:StreetName) and normalize-space(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:StreetName)!='' and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:BuildingNumber) and normalize-space(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:BuildingNumber)!='' and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:PostalZone) and normalize-space(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:PostalZone)!='' and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:CityName) and normalize-space(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:CityName)!='' and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:CitySubdivisionName) and normalize-space(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cbc:CitySubdivisionName)!='' and exists(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode) and normalize-space(//cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode)!=''))

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