BR-KSA-08Seller identification carries no scheme id

Mutabiq checks Saudi ZATCA Phase 2 e-invoice XML before you submit it: pre-validation against published ZATCA requirements, not an approval by the authority. This page explains one rule, BR-KSA-08.

Validate 5 invoices free

Five checks a month on the Free plan. The file is checked in memory and is never stored.

The message ZATCA prints

[BR-KSA-08]-The seller identification (BT-29) must exist only once with one of the scheme ID (BT-29-1) (CRN, MOM, MLS, SAG, OTH, 700) and must contain only alphanumeric characters. Commercial Registration number with "CRN" as schemeID. MOMRAH license with "MOM" as schemeID. MHRSD license with "MLS" as schemeID. 700 Number with "700" as schemeID. MISA license with "SAG" as schemeID. Other OD with "OTH" as schemeID. In case of multiple commercial registrations, the seller should fill the commercial registration of the branch in respect of which the Tax Invoice is being issued. In case multiple IDs exist then one of the above must be entered following the sequence specified above.

What Mutabiq reports

One entry for each way this rule can be reported.

Reported as
What kind of value was found — empty, not_15_digits and the like — never the value itself.

Seller identification carries no scheme id

Reported asscheme_id_missingno scheme id

What is wrong

A seller identification (BT-29) — a cbc:ID under cac:PartyIdentification in the seller's party block — has no schemeID attribute, or carries one that is empty. The schemeID says which kind of identifier the value is, and ZATCA flags an identification without one under BR-KSA-08, which SDK 3.4.8 runs as a warning, not a rejection: the finding is reported without failing the document by itself.

What to check in your ERP

Every seller identification needs both parts: the value in the element and the kind in its schemeID attribute. The kinds SDK 3.4.8's checker accepts for the seller are CRN for the commercial registration number, MOM for a MOMRAH licence, MLS for a MHRSD licence, SAG for a MISA licence, 700 for the number the ZATCA XML Implementation Standard (section 13.3.1) names, and OTH for anything else. In most systems the identifier and its kind are two columns of one table and the export writes only the first.

Seller identification scheme id is not one ZATCA accepts

Reported asscheme_id_not_listeda scheme id ZATCA does not accept

What is wrong

A seller identification (BT-29) carries a schemeID that is not in the list SDK 3.4.8's checker accepts for the seller: CRN, MOM, MLS, SAG, OTH and 700. Anything else is flagged under BR-KSA-08, which SDK 3.4.8 runs as a warning, not a rejection: the finding is reported without failing the document by itself. Earlier SDK releases ran this same assertion at error and did not carry the 700 scheme id the ZATCA XML Implementation Standard (section 13.3.1) names - SDK 3.4.8 both downgrades the flag and adds 700 to the list the checker itself carries.

What to check in your ERP

Map each identifier your system holds for the issuing entity onto one of six: CRN for the commercial registration number, MOM, MLS or SAG for the respective licences, 700 for the number the ZATCA XML Implementation Standard names, and OTH for anything that fits none of them. OTH is a legitimate answer and is better than inventing a code. The buyer's list is longer and different - it also has NAT, TIN, IQA, PAS and GCC - so a code copied across from the buyer mapping will draw this warning here.

Seller identification value contains characters other than letters and digits

Reported asvalue_not_alphanumericcontains characters other than letters and digits

What is wrong

A seller identification (BT-29) holds a value with something other than Latin letters and digits in it. Only rule packs before 2.0.0 report this: SDK 3.0.8's BR-KSA-08 also required the value to be alphanumeric and refused any other character - a space, a dash, a slash, a full stop, or Arabic text. In SDK 3.4.8, which rule pack 2.0.0 reads, BR-KSA-08 no longer tests the value, although its message still says the value must contain only alphanumeric characters, so a report produced under 2.0.0 never carries this note. SDK 3.4.8 adds separate format warnings on identifier values (BR-KSA-F-07 to BR-KSA-F-13), which Mutabiq does not mirror.

What to check in your ERP

Send the identifier as stored on the certificate, with no formatting: no spaces, no dashes between groups, no prefix such as CR or licence number. The usual causes are a value held with separators for display and exported as held, and a mapping that writes a descriptive label next to the number. If the identifier genuinely contains a character that is not a letter or a digit, it does not belong in this field.

Seller identification is missing

Reported asidentification_missingthe identification is missing

What is wrong

The seller block (cac:AccountingSupplierParty/cac:Party) carries no cac:PartyIdentification/cbc:ID. BR-KSA-08 asks for one seller identifier with a scheme ID from ZATCA's list: CRN, MOM, MLS, SAG, OTH or 700. ZATCA flags this as a warning, which does not by itself reject the document.

What to check in your ERP

Map the seller's commercial registration number, with schemeID CRN, or the licence the business trades under, with its own scheme ID, into cac:PartyIdentification/cbc:ID in the seller block. Where the business holds several commercial registrations, use the one for the branch issuing the invoice.

Seller has more than one identification

Reported asidentification_repeatedmore than one identification

What is wrong

The seller block carries more than one cac:PartyIdentification. ZATCA's message for BR-KSA-08 anticipates sellers with several identifiers and asks for one of them, but its current checker cannot evaluate the rule on such a document: the run stops with a processing error rather than a rule code. The rule's own flag is a warning, and Mutabiq reports it at that severity, but whether ZATCA would accept the document is uncertain.

What to check in your ERP

Write one seller identifier only: the one for the branch issuing the invoice, with its scheme ID, chosen in the order ZATCA's message gives (CRN, MOM, MLS, 700, SAG, OTH). Remove the others from the XML export.

The clause that runs

Quoted from the validation-rule stylesheet ZATCA publishes, at the file and line named below. The executed guard is what the check runs; the reported test is what it prints when it fails, and the two are not always the same.

Executed guard

not( exists(cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID) and string-length(cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID/normalize-space(@schemeID)) > 2 and contains('CRN MOM MLS SAG OTH 700', normalize-space(cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID/@schemeID)))

Reported test

not( string-length(normalize-space( ./@schemeID)) > 2 and contains('CRN MOM MLS SAG OTH 700', ./@schemeID) and (matches((.), '^[a-zA-Z0-9]*$')) )
Evaluated against
/ubl:Invoice | /cn:CreditNote
Source
vendor/zatca/schematron/20210819_ZATCA_E-invoice_Validation_Rules.xsl:452

As shipped in ZATCA SDK 3.4.8: the copy quoted here is, byte for byte, the file that release ships. The date in the file name is the name ZATCA gives the file; the rules in it are those of SDK 3.4.8.

A worked example

A synthetic document from the measured test corpus that trips this rule, shown where it differs from one that passed. Mutabiq's report names the class of the value, never the value itself.

Document
bad-20-seller-scheme-id.xml
Mutabiq's verdict
Passed
Reported as
scheme_id_not_listeda scheme id ZATCA does not accept

Download this example (.xml)Check it in Mutabiq

This page's example, checked by the same rules your own upload goes through. No upload and no sign-in.

ERP guides

Product names identify the systems only. Mutabiq is independent of their vendors and is not affiliated with or endorsed by any of them.

Rules evaluated against the same part of the document. One wrong value often reports several of them at once.

Check an invoice

Check your own invoice

© 2026 Hayatiq AI Solutions F.Z.E. All rights reserved.