Check a ZATCA e-invoice XML

Upload the XML of a Saudi e-invoice and get a pass or fail on every rule we can check from the file, each with what to change, in Arabic or English.

Your file is checked once and not kept. To check only the QR code, with the camera or a photo, use the QR checker.

Checked on our server and dropped at once: no copy of your file is kept, only a count of checks per day.

What it checks

  1. The file: well-formed UBL 2.1 XML, with no DTD or entities (refused unread), within size and nesting limits.
  2. The fields ZATCA's XML standard requires: profile, number, UUID, date and time, type and transaction code, currencies, the counter (ICV), the previous hash (PIH), the parties and their national addresses.
  3. The totals: lines to line total, discounts and charges, VAT breakdown, total with VAT and amount payable, each line's VAT and the reason code on every zero-rated or exempt amount.
  4. The issuing rules Aqid ERP itself applies before an invoice can be approved: the seller's VAT number and Arabic name, the buyer on a standard invoice, a note's reference and reason.
  5. For a signed invoice: the invoice hash recomputed from the XML against the signature's and the QR's, and the QR decoded and compared with the invoice.

About checking e-invoices

Is this ZATCA's official validator?

No. ZATCA's own validator runs in its Fatoora portal and SDK, and its clearance or acceptance is the only official answer. This page checks what can be checked from the file, with the rules Aqid ERP applies when it issues an invoice, and says what it cannot check.

Is my invoice stored?

No. The file is checked in memory on our server and dropped; we keep only a count of checks per day. If you ask for the report by email, we keep your address and the verdict, nothing from the invoice.

Why does a standard invoice have no QR code?

On a standard (B2B) tax invoice, ZATCA adds the QR when it clears the invoice. An XML from before clearance has none; the cleared copy ZATCA returns has it.

Can it tell whether the signature is valid?

It recomputes the invoice hash and compares it with the one the signature covers and the one in the QR, which catches a file changed after signing. Verifying the signature itself against the certificate needs ZATCA's validator.

What does a failed check mean?

That the file breaks that rule as written, and ZATCA would likely reject or flag it. Each failure says what to change; fix it in the system that produced the invoice and issue a corrected document, never by editing the XML by hand.

Your first compliant invoice is minutes away

Start now for free No credit card needed — invoice in minutes