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 returns | What it means |
|---|---|
| Validation results | Whether the document is structurally and cryptographically valid. |
| Clearance / reporting status | Whether 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
| Outcome | Means |
|---|---|
| Errors | The sample was not accepted. Fix them — they are blocking. |
| Warnings | Accepted, 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.