Free tool · Saudi e-invoicing

ZATCA QR code generator & reader

Create a test QR code in ZATCA's TLV format, or decode the QR text from any Saudi e-invoice to check exactly what it contains.

For testing and checking only. This does not make an invoice ZATCA-compliant: invoices must come from a compliant e-invoicing system, and Phase 2 invoices need cryptographic tags only your onboarded system can create.

Generate a test QR code (tags 1–5)

QR code text (Base64 TLV):

Read an invoice QR code

Runs entirely in your browser. Nothing you type is sent to us or stored.

How to use the ZATCA QR Code Generator & Reader

How the ZATCA QR code works

Every Saudi tax invoice carries a QR code. Inside it is TLV data: for each field, one byte for the tag number, one byte for the length of the value in UTF-8 bytes, and then the value itself. All the fields are joined and Base64-encoded. Tags 1–5 (seller name, VAT number, date and time, total with VAT, VAT total) have been required since 4 December 2021; Phase 2 integration adds tags 6–9 with the invoice hash and digital signatures.

When this tool helps

  • Checking supplier invoices: confirm the VAT number and totals in the QR match the printed invoice.
  • Testing your own system: developers can compare their output with a known-good encoding.
  • Learning the format before choosing an e-invoicing provider.

Is your business in Wave 25? Read our guide to ZATCA e-invoicing Wave 25, and calculate VAT with the UAE & Saudi VAT calculator.

FAQ

Common questions

What is in a ZATCA e-invoice QR code?

The QR code holds Base64-encoded TLV (tag, length, value) data. Tags 1 to 5 are the seller's name, the seller's VAT registration number, the invoice date and time, the invoice total including VAT, and the VAT total. Phase 2 invoices add tags 6 to 9: the invoice hash, an ECDSA signature, a public key and, for simplified invoices, ZATCA's signature of the cryptographic stamp.

Does this tool make my invoices ZATCA-compliant?

No. Saudi rules require invoices to be issued from a compliant e-invoicing system, and Phase 2 invoices need cryptographic tags that only your system, onboarded to ZATCA, can produce. Use this tool to test, learn or check a QR code, not to issue invoices.

How do I check what an invoice QR code contains?

Scan the invoice QR code with any QR scanner app to get a long text string, then paste it into the reader on this page. It decodes every field, including the Phase 2 tags.

Why does the length count bytes, not letters?

ZATCA specifies that each value is UTF-8 encoded and its length is the number of bytes. Arabic letters take 2 bytes each in UTF-8, so a 4-letter Arabic name has a length of 8. This tool counts bytes correctly.

Want help putting this to work?

Tell us about your business. We'll reply with honest advice and a clear next step.