The ZATCA Compliance Check

The ZATCA Compliance Check

The compliance check sends ZATCA a set of sample documents and asks whether they would be accepted. Passing it is not a formality — ZATCA issues your production certificate only after the samples have actually been accepted, so a compliance check that genuinely passes is the gate to going live.

Running it

Check Compliance on the settings page submits the samples and shows the Compliance Check Results with the date it was Last Checked.

What counts as a pass

Two different things come back for each sample, and both matter:

What ZATCA returnsWhat it means
Validation resultsWhether the document is structurally and cryptographically valid.
Clearance / reporting statusWhether ZATCA actually accepted it — CLEARED for standard invoices, REPORTED for simplified.

A sample can validate cleanly and still not be cleared or reported. The check judges each sample on the acceptance status, falling back to the validation result only where ZATCA returns no acceptance field at all.

This is the distinction behind the error CurrentCCSID is invalid when requesting a production CSID after a check that appeared green. A NOT_CLEARED or NOT_REPORTED sample leaves the certificate ineligible, whatever the validation said. If the check passes here, the production request has what it needs.

Warnings and errors

OutcomeMeans
ErrorsThe sample was not accepted. Fix them — they are blocking.
WarningsAccepted, but ZATCA has something to say. Worth reading, not blocking.

Warnings are captured per document alongside the clearing status, and the full raw ZATCA response is logged. When a message is unclear, the raw response is what your adviser or ZATCA support will ask for.

If the check will not run

Compliance check could not run means the request never reached ZATCA — a credential, connectivity or configuration problem rather than a rejected document. Error during compliance check means it reached ZATCA and something went wrong in handling the answer. The two point at different places.

After it passes

Once compliance passes, the check is not offered again as a destructive re-run. Re-running a passed compliance check served no purpose and could disturb a working setup, so the option is removed rather than left as a trap.

Then what

Go to step 4 of the wizard and request the Production CSID. Remember that on sandbox or simulation this remains a test credential; only in the production environment does it take you live.

Global Coverage

Multi-Country ERP — One Platform

Supports GST (India), VAT (UAE, South Africa, Egypt, Iraq, Botswana), and local compliance across all regions.

🇮🇳 India (GST)
🇦🇪 UAE (VAT)
🇸🇦 Saudi Arabia
🇶🇦 Qatar
🇧🇭 Bahrain
🇴🇲 Oman
🇰🇼 Kuwait
🇪🇬 Egypt
🇮🇶 Iraq
🇿🇦 South Africa
🇧🇼 Botswana
🇲🇾 Malaysia
🇸🇬 Singapore
🇦🇺 Australia
🇬🇧 United Kingdom
🇺🇸 USA
🌏 & More Regions