Free Tool Desk

ZATCA E-Invoice QR Code Decoder & Checker

ZATCA QR code decoder: read the Base64 TLV QR code on a Saudi e-invoice from an image or PDF and see seller, VAT number, time, totals and Phase 2 tags. Structural check only. In your browser.

Free to use No sign-up required Nothing is uploaded

The QR code on a Saudi e-invoice (FATOORA) holds a Base64 string made of tag-length-value (TLV) records: the seller's name, the VAT registration number, the date and time of the invoice, the total and the VAT. Phase 2 invoices add the invoice hash, a digital signature, the public key and, for simplified invoices, the signature of the ZATCA stamp. This decoder reads the code from an image or PDF, unpacks the records and shows them with their meaning, plus a structural check.

يقرأ هذا الأداة رمز الاستجابة السريعة في الفاتورة الإلكترونية ويعرض الحقول: اسم البائع، الرقم الضريبي، التاريخ والوقت، الإجمالي والضريبة. تتم القراءة في المتصفح دون رفع الملف، وهي فحص هيكلي ولا تتحقق من التوقيع.

The tool is not an official validator and does not say that an invoice was reported to or cleared by ZATCA.

Loading the tool…

Overview

About ZATCA E-Invoice QR Decoder & Checker

The tags. Following the ZATCA security-features implementation standards, each record is a tag byte, a length byte and the value. Tag 1 is the seller name, tag 2 the VAT registration number, tag 3 the invoice timestamp (ISO 8601), tag 4 the invoice total with VAT and tag 5 the VAT total. Tags 1 to 5 are the Phase 1 content. Phase 2 adds tag 6 (SHA-256 hash of the invoice XML), tag 7 (ECDSA signature), tag 8 (ECDSA public key) and, for simplified invoices, tag 9 (the signature of the ZATCA technical CA\'s stamp). The decoder reports which layout it found, shows text values as text and binary values in hex, and for the public key says which algorithm and curve it carries.

Structural checks. The Base64 must decode; every record must fit inside the data; tags 1 to 5 must be present; the VAT number should have 15 digits starting and ending with 3; the timestamp should be a real ISO 8601 date and time; the totals should be plain decimals, the VAT total not larger than the invoice total; no tag should repeat; the whole payload should stay within the 700 characters the standard allows. Unknown tags are listed and flagged.

What is not verified. ZATCA signs with ECDSA on the secp256k1 curve, which the Web Crypto API of browsers does not support, and checking a certificate chain would need current ZATCA certificates that cannot be maintained safely inside a web page. So tags 6 to 9 are shown but their signatures are not verified. For validation use ZATCA\'s own tools or your accounting software.

Input. An image, a PDF (every page up to the first 40 is searched) or the Base64 text pasted from a scanner app. The QR is decoded in your browser and nothing is sent anywhere.

Compatibility

Supported Formats

PDF (up to 50 MB), PNG, JPEG and WebP images (up to 30 MB), or Base64 text. The QR must hold a ZATCA TLV payload in Base64. Signatures and certificates are not verified.

Guide

How to Use ZATCA E-Invoice QR Decoder & Checker

  1. Drop the PDF or image of the invoice, or paste the Base64 text from the QR code.
  2. Read the decoded tags and the layout that was detected (Phase 1, Phase 2 or simplified).
  3. Look at the findings: missing tags, odd VAT numbers, timestamps or amounts.
  4. For signature validation, use ZATCA's tools: this decoder only inspects the structure.

Highlights

Features

  • All nine tags Seller, VAT number, time, totals, hash, signature, public key and stamp signature.
  • Phase 1, 2 and simplified The layout found is named, with the curve of the public key.
  • Structural checks Base64, record lengths, required tags, VAT number, timestamp and amounts.
  • Image and PDF input Finds the QR on any page, screenshot or photo.
  • In your browser No upload; signatures described, not verified.

Applications

Use Cases

  • Checking that the QR on a received invoice carries the same seller, VAT number and total as the printed invoice
  • Seeing which tags a billing program writes in Phase 1 and Phase 2
  • Finding out why a QR does not scan in an app
  • Reading the timestamp and VAT amount from a simplified invoice QR
  • Learning what the nine tags mean

Good to Know

Limitations

This is a structural decoder, not an official ZATCA validator, and it does not claim an invoice is ZATCA approved. It cannot say whether an invoice was reported, cleared or accepted, and a well-formed QR can belong to an invalid invoice. Signature verification needs the secp256k1 curve and ZATCA certificate chains, which a browser tool cannot support safely, so signatures are only described.

The tag layout follows the ZATCA standard version 1.2 (19 May 2023) as published; ZATCA can issue newer versions and the tool should be compared with the current ZATCA documentation. Length bytes limit a value to 255 bytes, as in the standard.

This tool runs entirely in your browser — your file is never uploaded to our servers. See our Privacy Policy for full details.

Support

Frequently Asked Questions

Is the invoice uploaded?

No. The QR code is decoded in your browser and the result is not stored or sent to our server.

Does this verify the ZATCA signature?

No. The signature uses ECDSA on secp256k1, which browsers do not support, and a certificate chain check would need current ZATCA certificates. The tool shows tags 6-9 and describes the public key but does not validate them.

What is the difference between Phase 1 and Phase 2 QR codes?

Phase 1 codes hold tags 1-5: seller, VAT number, time, total and VAT. Phase 2 codes add the invoice hash, signature and public key (tags 6-8), and simplified invoices add tag 9.

The tool says a tag is missing. What does it mean?

A required tag (1-5) is not in the code. The QR may be incomplete or made by software that does not follow the standard.

Is this an official ZATCA validator?

No. It decodes and inspects the structure; it does not say that an invoice is approved by or reported to ZATCA.

هل يتم رفع الفاتورة؟

لا. تتم قراءة الرمز في متصفحك ولا تُرسل البيانات إلى خادمنا.

Keep Going

Related Tools