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
A required element of the invoice is absent, empty, or in the wrong format — the most common and the most fixable family.
The seller's VAT number fails validation — wrong length, wrong structure, or simply not the number registered with ZATCA.
Issue dates and times that are malformed, inconsistent between QR and XML, or outside acceptable ranges.
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.
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.