What you're using right now
- 100+ barcode & QR symbologies
- Live preview & customization
- PNG & SVG export, no login
- Copy to clipboard
Loading Barcode Mint…
Free Online Barcode & QR Code Generator
Build a ZATCA-compliant QR code for Saudi Arabia e-invoices, encoded exactly as the TLV/base64 structure Fatoora requires.
Open the generator ↓Turn a CSV — or a numbered sequence — into hundreds of barcodes at once, exported as a ZIP of images or a print-ready PDF sheet. Launching with Pro.
The browser generator stays free forever. Paid plans are for teams who need bulk output and developers who need the REST API at scale — commercial license included. Tell us what you'd use; early-list members get first access and launch pricing.
What you're using right now
For designers & teams
Priced by requests. Commercial license and self-serve keys included; usage dashboard at launch.
A ZATCA QR Code is a standard QR Code that encodes invoice data in the specific binary format mandated by Saudi Arabia's Zakat, Tax and Customs Authority (ZATCA) under its Fatoora e-invoicing program. It is not a distinct barcode symbology — like the Swiss QR Code, it's a regular QR Code carrying a structured payload, in this case a Tag-Length-Value (TLV) byte sequence that is base64-encoded before being placed into the QR Code.
Every simplified tax invoice and simplified credit/debit note issued in Saudi Arabia must include this QR Code, whether the invoice is a printed paper receipt or a PDF. Its purpose is to let both a human's phone and the tax authority's systems instantly verify and read the core invoice details without parsing the full invoice document.
ZATCA's QR Code payload is built from a sequence of tags, each with a length byte and a value, then base64-encoded as a whole:
For Phase 2 (integration phase) e-invoices, ZATCA requires three additional cryptographic tags — the invoice hash, the digital signature, and the seller's certificate's public key (plus, where applicable, the certificate signature) — because Phase 2 invoices must be digitally signed and cleared or reported through ZATCA's systems. Each tag is: one byte for the tag number, one byte for the value's length in bytes, then the value itself. The full binary sequence is then base64-encoded to produce the string that gets placed into the QR Code.
A ZATCA QR Code is a standard ISO/IEC 18004 QR Code carrying a binary Tag-Length-Value (TLV) payload that is base64-encoded before being placed in the symbol — unlike the Swiss QR Code or EPC QR Code, the raw data is not human-readable plain text. Each tag consists of a one-byte tag number, a one-byte length (in bytes, not characters, which matters for multi-byte UTF-8 Arabic text), and the value itself; Phase 1 (generation phase) requires five tags, while Phase 2 (integration phase) adds three more for the cryptographic invoice hash, ECDSA digital signature, and the seller's certificate public key. ZATCA is Saudi Arabia's Zakat, Tax and Customs Authority, and the specification is published under its Fatoora e-invoicing program; there is no separate check digit on the QR data itself, since the digital signature in Phase 2 payloads serves as the cryptographic integrity and authenticity check.
ZATCA QR Codes are legally required on:
Standard tax invoices (B2B) are not required to carry the same simplified QR Code under Phase 1, though ZATCA's broader e-invoicing rules govern their structure and, in Phase 2, their clearance process separately. Businesses generating simplified invoices integrate ZATCA QR generation directly into their point-of-sale or invoicing software.
To create a Phase 1–style ZATCA QR Code:
/barcode?type=zatcaqrcode&data=... to generate codes on demand from your billing system.This builder covers the five core Phase 1 tags. Phase 2 (integration phase) invoices require a cryptographically signed payload with invoice hash, digital signature and certificate data generated through ZATCA's compliance and clearance process — that signing must happen in a system integrated with ZATCA, not through a standalone QR generator.
ZATCA specifies the QR Code must be scannable and clearly visible on the invoice; print it with adequate size and quiet zone so both a customer's phone and any auditing tool can decode it cleanly. Because the payload is base64-encoded binary rather than plain text, double-check that your VAT number, timestamp format and amounts exactly match what appears elsewhere on the invoice — a mismatch between the QR data and the printed invoice fields is a common compliance flag during ZATCA audits. On thermal POS receipts, print at a large enough module size that repeated printing on the same roll doesn't degrade contrast over a shift, and confirm the QR Code survives common receipt-printer failure modes like faded ribbon or low paper quality.
A ZATCA QR Code differs from most other payment or invoice QR formats in carrying binary TLV data rather than delimited plain text — the Swiss QR Code and EPC QR Code both use newline-separated plain-text fields that a person can read directly from decoded output, while ZATCA's base64 string decodes first to raw bytes that must be parsed tag by tag. ZATCA QR Codes also serve a different function: Swiss and EPC QR Codes initiate a bank payment, while a ZATCA QR Code verifies and discloses the details of a tax invoice that has already been (or will be) paid through another channel, making it closer in purpose to a compliance stamp than a payment instruction.
A zatca qr code generator encodes seller name, VAT number, invoice timestamp, total, and VAT amount into the TLV binary format ZATCA requires, then base64-encodes it into a scannable QR Code for Saudi e-invoices.
It's mandatory on simplified tax invoices and simplified credit/debit notes, typically B2C transactions; standard B2B tax invoices follow separate e-invoicing requirements.
Yes — Barcode Mint's bulk CSV to ZIP/PDF tool can generate a compliant QR Code per invoice row, useful for batch-producing receipts or invoices from an accounting export.