BR-KSA-25: Simplified invoice with EDU/HEA exemption needs the buyer name

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

Warning: accepted with a warningSimplified invoices (B2C)Fields: KSA-2, BT-121, BT-44

For simplified invoices and their notes (cbc:InvoiceTypeCode @name starting '02'): if the invoice has VAT exemption reason codes (BT-121) and every one of them is VATEX-SA-EDU or VATEX-SA-HEA, the buyer name cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName (BT-44) must be present and non-empty. If any other exemption code also appears, the check does not trigger.

How to fix it

Add the buyer's name: <cac:PartyLegalEntity><cbc:RegistrationName>…</cbc:RegistrationName></cac:PartyLegalEntity> under cac:AccountingCustomerParty/cac:Party.

ZATCA's official text

[BR-KSA-25]-If it is a simplified tax invoice or an associated credit note or a debit note (KSA-2, position 1 and 2 = 02) and the tax exemption reason code (BT-121) is equal with VATEX-SA-EDU or VATEX-SA-HEA, then buyer name (BT-44) is mandatory.
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules

Fails when (the condition ZATCA's SDK runs)

not((every $taxreasoncode in //cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode satisfies contains(' VATEX-SA-HEA VATEX-SA-EDU ', $taxreasoncode) and exists(//cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName) and (//cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName) != '') or not(every $taxreasoncode in //cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode satisfies contains(' VATEX-SA-HEA VATEX-SA-EDU ', $taxreasoncode)))

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