SIGNET ·
Signet / Guides / Rejections

Why ZATCA rejects e-invoices, in plain language

The rejection arrives as a terse code and an unhappy finance team. Behind almost all of them sit the same five families of cause.

The five families of rejection

Where rejections come from

1 · Missing or malformed mandatory fields

A required element of the invoice is absent, empty, or in the wrong format — the most common and the most fixable family.

2 · VAT registration number problems

The seller's VAT number fails validation — wrong length, wrong structure, or simply not the number registered with ZATCA.

3 · Timestamp issues

Issue dates and times that are malformed, inconsistent between QR and XML, or outside acceptable ranges.

4 · Broken cryptographic material

Phase-2 invoices chain together: each references the hash of the previous one, and each is signed. A broken hash chain, a signature that doesn't verify, or mismatched key material fails the submission.

5 · Business-rule violations (BR-KSA)

The XML is well-formed but breaks one of ZATCA's business rules for Saudi invoices — field combinations, totals arithmetic, or type-specific requirements.

Looking for a specific code? See the full ZATCA rejection & error-code reference — all 165 BR-KSA and EN 16931 rules with ZATCA’s official message.

Start with the QR, not the XML

The fastest first diagnostic is the invoice's own QR code. Decode it and you can see in seconds which fields are present, whether the VAT number and timestamp are well-formed, and whether the code carries Phase-2 cryptographic tags at all. Families 1–3 usually reveal themselves right there — before anyone opens the XML.

That's precisely what Signet's free decoder does: paste the Base64 payload from any Saudi e-invoice and it explains, tag by tag, what is present, what is missing, and whether the code is Phase-1 or Phase-2 — in plain language, not raw error codes.

The durable fix: validate before you submit

Rejections are cheapest when they happen on your side, before submission. A bridge that validates each invoice against ZATCA's business rules first — then signs and submits — turns rejection codes from a production incident into a pre-flight checklist. Pre-submission validation against BR-KSA is one of the core capabilities of Signet's Phase-2 bridge, in early access and switching on as certification completes.

Decode the rejected invoice's QR — free

Tag-by-tag explanation, plain language, Phase-1 vs Phase-2 flagged. No account, nothing stored. (Structure only — signatures are not verified by the free tool.)

Open the free QR decoder →

Common questions

Why do e-invoices get rejected?

Five families: missing/malformed fields, VAT number problems, timestamp issues, broken cryptographic material, and BR-KSA business-rule violations.

What's the fastest first diagnostic?

Decode the QR. Presence, format and Phase-2 material are visible in seconds — often enough to locate the fault.

Can rejections be prevented?

Mostly — validate against ZATCA's rules before submission. That pre-flight is core to Signet's bridge (early access).

General guidance on common Phase-2 failure patterns — not tax advice, and not a substitute for ZATCA's own documentation. Confirm specifics with ZATCA or your tax advisor.