Skip to content
Fatooraz

ZATCA invoice XML checker: check the structure of your invoice XML

Paste the XML of an invoice, choose a file or load a sample. The checker lists the fields it finds and the elements that are missing, badly formed or do not add up. It checks structure: it is not ZATCA validation.

A tax invoice with a QR code is sent to the cloud and confirmed by a shield with a check mark

ZATCA invoice XML checker

Paste the XML of an invoice, or choose a file. The check runs in your browser and nothing is uploaded.

This is a structure check, not ZATCA validation. It looks for the elements a ZATCA UBL invoice normally has, checks that values have the right shape and that the totals add up. It does not check the digital signature, the hash chain or ZATCA’s business rules: use ZATCA’s SDK or the Fatoora portal for that.

The sample is an unsigned simplified invoice with made-up figures.

Result

Paste an invoice to see the result.

A clean result here does not mean ZATCA will accept the invoice. Validate with ZATCA’s SDK or the Fatoora portal before you rely on it.

How the XML checker works

Paste the XML of an invoice, choose a file or load the sample. The checker reads it in your browser and lists what it finds, grouped by invoice details, seller and buyer, tax, totals, invoice lines, and signature and QR code.

It looks for the elements a ZATCA UBL invoice normally has, checks that values such as the date, time, UUID and VAT number have the right shape, and recalculates the totals from the lines to see that they add up. Each message names the element and, where it can, the line of the XML.

It does not check the digital signature, the invoice hash chain, the code lists or ZATCA’s business rules. Those checks belong to ZATCA’s SDK and the Fatoora portal, so a clean result here is only a first look.

Good to know

  • A “Problem” is something missing or wrong in the structure. A “Check” is worth a look: an unsigned invoice, for example, is normal while you build it but cannot be cleared or reported to ZATCA.
  • The elements the checker expects follow the UBL form commonly used for ZATCA invoices. They may not cover every rule in ZATCA’s current XML standard, so use ZATCA’s documentation for the final word.
  • The XML is read in your browser and is not uploaded or stored. Invoices hold tax and customer details, so try the sample first if you want to see how the tool behaves.
  • The checker reads files up to 2 MB.

Questions about the XML checker

What does the ZATCA invoice XML checker check?

It checks that the XML can be read, that it is a UBL Invoice, that the elements a ZATCA invoice normally has are present, that dates, times, UUIDs and VAT numbers have the right form, and that the totals add up.

Is this ZATCA validation?

No. ZATCA validates invoices with its own rules, including the signature and the hash chain, and its SDK and the Fatoora portal run those checks. This tool only looks at the structure.

Why does it say my invoice has no signature?

The signature, which is the cryptographic stamp, is added when an invoice is signed. An invoice that is still being built has none, so it is only a “Check” item. A signed Phase 2 invoice has one.

Is my invoice uploaded anywhere?

No. The XML is read in your browser and is not sent or stored.

Does the checker work for credit and debit notes?

Yes. It reads them as invoices with type code 381 or 383 and asks for a reference to the original invoice. Confirm the full rules in ZATCA’s documentation.

Issue correct invoices without the guesswork

Try Fatooraz free for 90 days in ZATCA’s simulation environment. No credit card needed.