ZATCA Phase 1 vs Phase 2 QR code requirements for invoices

A Phase 1 QR code is not enough once your store enters a ZATCA Phase 2 wave. Phase 2 adds an invoice hash, digital signature and public key information to the QR code. Your invoicing system must also generate signed XML invoices and connect to ZATCA's Fatoora platform.
If your WooCommerce store currently produces a PDF invoice with a QR code, you need to check both the code's contents and the system that created it.
Phase 1 and Phase 2 QR codes contain different fields
ZATCA introduced Phase 1, the Generation Phase, on 4 December 2021. This required businesses to generate electronic invoices with the prescribed information, including QR codes for simplified tax invoices.
Phase 2, the Integration Phase, began on 1 January 2023 and applies to taxpayers in announced waves. It adds technical requirements for invoice generation, cryptographic signing and communication with ZATCA.
The QR code differences are documented in ZATCA's E-invoicing Detailed Technical Guidelines, section 6.
The QR code fields compared
The table compares the QR code requirements for simplified tax invoices, which are normally issued to consumers.
| Tag | Information | Phase 1 | Phase 2 |
|---|---|---|---|
| 1 | Seller's name | Required | Required |
| 2 | Seller's VAT registration number | Required | Required |
| 3 | Invoice date and time | Required | Required |
| 4 | Invoice total, including VAT | Required | Required |
| 5 | Total VAT amount | Required | Required |
| 6 | Hash of the XML invoice | Not required | Required |
| 7 | ECDSA digital signature | Not required | Required |
| 8 | ECDSA public key | Not required | Required |
| 9 | ZATCA technical CA signature of the public key | Not required | Required for simplified invoices and associated notes |
A Phase 1 simplified invoice QR code contains five TLV fields. A Phase 2 simplified invoice QR code contains nine.
TLV means Tag-Length-Value. Each field has a numbered tag, a length and a value. ZATCA specifies how these fields are combined and encoded into the QR code.
Tag 6 contains a hash calculated from the XML invoice. Tag 7 contains its digital signature. Tag 8 carries the public key information, while tag 9 contains the signature applied by ZATCA's technical certificate authority to the cryptographic stamp's public key.
Standard B2B invoices follow a different clearance process. ZATCA returns the cleared invoice with its QR code and cryptographic stamp. The nine-field comparison above applies specifically to simplified invoices and their associated notes.
A QR code alone does not meet Phase 2 requirements
Your current invoice plugin might print the seller's name, VAT number and total inside a QR code. It might also generate an attractive PDF invoice.
Those features do not establish Phase 2 compliance. ZATCA requires the invoicing system to perform several operations beyond printing a QR code.
The invoice must exist as structured XML
Phase 2 invoices use XML based on the UBL 2.1 standard. The XML contains the invoice information and technical fields needed for electronic processing.
A PDF generated from WooCommerce order details does not replace the required XML. A readable invoice can be provided to the customer, but the underlying electronic document must meet ZATCA's format requirements.
The invoice must have a cryptographic signature
Phase 2 uses cryptographic signing to protect invoice integrity.
Each electronic document also carries an invoice counter (ICV) and a previous invoice hash (PIH). The previous hash connects the document to the preceding document in the sequence.
An invoicing system must maintain this sequence. Generating several documents at the same time without controlling the counter and hash chain can create problems.
The system must communicate with Fatoora
An integrated invoicing system sends invoices to ZATCA through its API.
Simplified invoices are reported within 24 hours of generation. Standard tax invoices must receive ZATCA clearance before being provided to the buyer.
Displaying a QR code does not tell you whether this communication happened. ZATCA explains these requirements in its detailed e-invoicing guidelines.
You can inspect the QR code on an existing invoice
Start with a recent invoice from your WooCommerce store. Use an invoice issued by the plugin you currently have installed.
Scan the code with ZATCA's VAT app
ZATCA describes QR code verification using its VAT app. The app reads the information contained in the invoice's QR code and displays verification results.
Open the app, scan the code and review the information returned.
A readable QR code is a useful first check. You still need to confirm whether the invoice was produced by an integrated system and sent to ZATCA as required.
ZATCA describes the scanning process in section 11 of its Detailed Guidelines for E-Invoicing.
Decode the TLV fields
You can also inspect the code with a TLV decoder that supports ZATCA's QR format.
The checking process is:
- Open an invoice generated by your existing WooCommerce plugin.
- Scan its QR code or provide the encoded value to a compatible decoder.
- Inspect the numbered TLV tags returned by the decoder.
- Check whether tags 1 through 5 contain the seller and invoice information.
- Look for the additional Phase 2 fields, starting with tag 6.
- For a simplified Phase 2 invoice, check the presence of tags 7, 8 and 9.
If your simplified invoice contains only tags 1 through 5, it has the Phase 1 QR information. The QR code needs additional fields for Phase 2.
If it contains all nine tags, you have checked the field structure. You have not yet verified that the signed XML is valid or that ZATCA received the invoice.
A decoder can expose the contents of a code. It cannot establish the full status of your invoicing system from those contents alone.
Your WooCommerce store needs an integrated invoicing process
WooCommerce records the sale, payment and customer information. Your e-invoicing plugin must turn that information into the documents required by ZATCA.
For a store issuing simplified invoices, that process includes generating XML, signing the document, creating the QR code and reporting the invoice.
Paid orders need electronic invoices
Raseedo Saudi E-Invoicing for WooCommerce creates a simplified tax invoice for each paid order in Saudi riyals (SAR), after the store is onboarded and the "Issue e-invoices" setting is enabled. Orders in other currencies are skipped, with an order note and a Site Health warning.
The free plugin creates UBL 2.1 XML, signs it using the store's certificate and generates a QR code. It sends the document to ZATCA in the background using WooCommerce's Action Scheduler.
Each document carries an ICV and PIH. Raseedo creates documents one at a time so simultaneous checkouts do not interrupt the invoice sequence.
The signed XML and ZATCA's response are stored on your own WordPress site.
Reporting failures need attention
An invoice can be generated while the connection to ZATCA is unavailable.
Raseedo retries reporting when network problems or ZATCA outages occur. These retries continue for hours within the 24-hour reporting window.
If ZATCA rejects a document, Raseedo shows the rejection reasons in the E-invoices tab and adds a note to the WooCommerce order. You can inspect these records instead of relying on the QR code printed on the customer invoice.
Customers still need readable invoices
Your customers receive a bilingual Arabic and English invoice page with a QR code. Raseedo links this page from their WooCommerce order details and order emails.
The invoice page is opened using the order key. You can read more about the customer-facing document on the Arabic invoices feature page.
Your integration deadline depends on your assigned wave
ZATCA introduces Phase 2 in waves rather than applying one integration date to every business.
On 24 July 2026, ZATCA announced Wave 25. It covers taxpayers whose revenue subject to VAT exceeded SAR 187,500 in any of these years:
- 2022
- 2023
- 2024
- 2025
The integration deadline for Wave 25 is 1 February 2027. ZATCA states that it notifies targeted taxpayers at least six months before their integration date.
Source: ZATCA Wave 25 announcement.
If your business has received a Phase 2 notification, use the assigned integration date when planning the change. Your existing Phase 1 QR code does not extend that deadline.
Check your invoices and set up Phase 2
Begin by checking a current simplified invoice. Confirm which QR fields it contains, whether signed XML is generated and whether the invoicing system communicates with Fatoora.
To set up Raseedo, enter your seller details under WooCommerce > ZATCA E-Invoicing. These include your legal name, 15-digit VAT number, commercial registration number, National Address short code and branch.
Raseedo starts in Sandbox, which needs no Fatoora OTP and issues only test documents. Under Seller details, change the Environment field to Production to issue live invoices, or Simulation for a trial run. Then generate a six-digit one-time password in the Fatoora portal at fatoora.zatca.gov.sa. The OTP is valid for one hour.
Paste it into Raseedo's Onboarding tab. The plugin creates the key and certificate request, obtains the compliance certificate, passes six compliance checks and requests the production certificate.
After onboarding, enable "Issue e-invoices" to begin issuing documents. The Raseedo setup guide covers the steps for connecting your WooCommerce store.
Questions
Is a Phase 1 QR code valid for ZATCA Phase 2?
A Phase 1 QR code does not contain all the fields required for a Phase 2 simplified invoice. Phase 2 adds the XML invoice hash, digital signature and public key information. Your invoicing system must also generate signed XML and communicate with ZATCA. Adding QR fields to an existing PDF does not complete those requirements.
How many fields should a ZATCA Phase 2 QR code contain?
A Phase 2 simplified invoice QR code contains nine numbered TLV fields. Tags 1 through 5 contain seller and transaction information. Tags 6 through 9 contain the additional cryptographic information. Standard tax invoices follow a separate clearance process, so the simplified invoice field count should not be applied to every invoice type.
Can I keep my existing WooCommerce PDF invoice plugin?
You can keep a plugin that produces readable customer documents if it does not interfere with electronic invoice generation. Your store still needs an integrated system for the required XML, signatures and ZATCA communication. Check how your existing plugin works before using it alongside Raseedo. A PDF QR code alone is insufficient for Phase 2.