ZATCA QR Code Generator for Saudi E-Invoices

The five Phase 1 fields of a Saudi simplified invoice's QR code, encoded as ZATCA specifies: for businesses not yet in Phase 2, and for testing.

Phase 1 (generation) only. Businesses with VAT-taxable revenue above SAR 375,000 in 2022–2024 have been in Phase 2 since ZATCA’s wave 24 (30 June 2026), and wave 25 adds those above SAR 187,500 in any year from 2022 to 2025 by 1 February 2027. In Phase 2 your invoices and their QR codes, with hash, signature and ZATCA’s stamp, must come from an e-invoicing solution connected to ZATCA’s Fatoora platform: a code from this page won’t comply.

What the code opens

These are example details: replace them with your own before you download.

    Design

    A random mix of shapes and colors. Every result is test-scanned.

    Checking that it scans…

      Static code: the content is inside the pattern itself, so it never expires and works without this site.

      A ZATCA Phase 1 QR code is Base64 text holding five fields in tag-length-value form: 1 the seller’s name, 2 the VAT number, 3 the time, 4 the total with VAT and 5 the VAT. Fill them in above and the code is ready to print; the example is a made-up invoice for 1,150.00 riyals with 150.00 VAT.

      Check first that Phase 1 still applies to you. As of October 2026 ZATCA has moved every taxpayer with VAT-taxable revenue above SAR 375,000 in 2022, 2023 or 2024 into Phase 2 (wave 24, by 30 June 2026), and wave 25 adds everyone above SAR 187,500 in any year from 2022 to 2025 by 1 February 2027. A business in Phase 2 must make its invoices and their QR codes in an e-invoicing solution connected to ZATCA’s Fatoora platform; a code from this page isn’t enough for it. Phase 1 codes are for registrants below those thresholds, wave 25 businesses until their date, and developers testing a reader.

      How to make the code for an invoice

      1. Type the seller’s name exactly as the invoice prints it. Arabic is fine: each letter takes two bytes, and the field can hold 255 bytes.
      2. Enter the 15-digit VAT registration number. ZATCA’s XML rules (BR-KSA-40) require 15 digits with a 3 at each end, so a typo is caught before you print.
      3. Pick the invoice’s date and time in Saudi time, then the total including VAT and the VAT total, with a dot before the halalas.
      4. When the line under the preview says Scans reliably, download a PNG or SVG for your receipt template, or copy the Base64 if your billing software takes the text instead of an image.

      What the generator checks

      • The VAT rate. If the VAT isn’t 15% of the amount before VAT, a note says so. Zero-rated or exempt lines lower the overall rate legitimately, so it is a warning, not an error. 15% has been the standard rate since 1 July 2020, according to ZATCA’s VAT rate guideline.
      • The amounts. Both must be numbers with at most two decimals, and the VAT can’t exceed the total. They are written with two decimals, as on the invoice.
      • The length. Every field must fit its one-byte length and the Base64 must stay within ZATCA’s 700 characters.

      Phase 1 and Phase 2

      ZATCA’s e-invoicing came in two phases. Phase 1 (generation) has applied to all resident taxpayers since 4 December 2021, and its code is the five fields this page makes. Phase 2 (integration) started on 1 January 2023 and has reached taxpayers in waves, each told at least six months ahead. The waves have worked down by revenue: wave 24 (announced 26 September 2025) took in taxpayers whose VAT-taxable revenue was above SAR 375,000 in 2022, 2023 or 2024, with integration due by 30 June 2026, and wave 25 (announced 24 July 2026) halves the threshold to SAR 187,500 in any year from 2022 to 2025, with integration due by 1 February 2027. Once your wave applies, the code also carries a hash, a signature and ZATCA’s stamp that only your connected e-invoicing system can produce.

      As of October 2026 the format above follows the Electronic Invoice Security Features Implementation Standards version 1.2 (May 2023) on zatca.gov.sa.

      Printing on receipts

      Thermal receipt printers make small, slightly soft dots, so keep the plain black square style this page opens with, leave the white margin around the code, and print it as wide as the receipt comfortably allows. An SVG stays sharp at any size in a receipt template. To check a batch of printed receipts, the ZATCA QR code scanner decodes each code and lists the fields, and the plain QR code generator makes codes for your website or Wi-Fi.

      The example invoice, field by field

      What the code above holds before Base64: each field is a tag byte, a length byte and the value's UTF-8 bytes, in this order (ZATCA Security Features Implementation Standards v1.2, section 4.1).

      TagFieldValueLength (bytes)
      1Seller’s nameشركة المثال للتجارة36
      2VAT registration number30000000000000315
      3Time stamp (UTC)2026-10-15T11:30:00Z20
      4Invoice total with VAT1150.007
      5VAT total150.006

      Joined, that is 94 bytes, which Base64 turns into the 128 characters the code carries: ASTYtNix2YPYqSDYp9mE2YXYq9in2YQg2YTZhNiq2KzYp9ix2KkCDzMwMDAwMDAwMDAwMDAwMwMUMjAyNi0xMC0xNVQxMTozMDowMFoEBzExNTAuMDAFBjE1MC4wMA==

      QR Code GeneratorSomeone shared their result

      Suggested