ZATCA QR code decoder and generator

Paste the text from a Saudi e-invoice QR and see every field: seller, VAT number, date, total and VAT. Phase 2 hash and signature included.

Getting ZATCA rejections in Phase 2? Our validator checks XML, hash, QR and signature before submission.See Pro tools →
How it works

Three steps, no signup

1

Paste the QR text

Scan the invoice QR with any phone scanner and paste the Base64 text. It usually starts with "AR".

2

See every field

Seller name, VAT number, date, total and VAT are decoded. Phase 2 hash, signature and key are shown too.

3

Check or generate

Spot a wrong VAT number or total at once, or build a Phase 1 QR from invoice values for testing.

FAQ

Questions about this tool

What is inside a ZATCA e-invoice QR code?

A Base64 text in TLV format (tag, length, value). Tags 1 to 5 hold the seller name, VAT registration number, invoice date and time, invoice total with VAT and the VAT amount. Phase 2 simplified invoices add tags 6 to 9: invoice hash, ECDSA signature, public key and the stamp signature.

Why does my ZATCA QR start with "AR"?

The first byte is tag 1 (the seller name) and the second byte is its length. Encoded in Base64 those first bytes often become "AR", so most valid ZATCA QR texts start that way.

How do I know if a VAT number in the QR is valid?

A Saudi VAT registration number has 15 digits and starts and ends with 3. The decoder checks this format automatically.

Is the Phase 1 QR from the generator valid for Phase 2?

No. Phase 2 (integration phase) QR codes must include the cryptographic hash and signature produced by your e-invoicing solution after onboarding with ZATCA. Use the generator for Phase 1 and for testing only.

Is my invoice data sent anywhere?

No. Decoding and QR generation happen in your browser. Nothing is uploaded.

Need ZATCA Phase 2 inside SAP Business One?

We connect SAP B1 to ZATCA Fatoora: onboarding, UBL XML, signing, QR and clearance. Fixed price, usually quoted within 24 hours.