This is general information, not legal or tax advice. Confirm your own obligations with ZATCA or a qualified adviser.
What is ZATCA e-invoicing, and who does it affect?
ZATCA e-invoicing is Saudi Arabia’s electronic invoicing system, run by the Zakat, Tax and Customs Authority. It replaces paper and PDF invoices with structured, signed e-invoices that carry a QR code, and in its second phase it connects your invoicing to ZATCA’s Fatoora platform. It applies to VAT-registered businesses in Saudi Arabia, so an online store that sells to Saudi customers and is VAT-registered there has to issue compliant invoices from its WooCommerce orders. ZATCA brings businesses into the integration phase in waves, based on revenue, so your deadline depends on which wave you fall into.
In practice, every WooCommerce order needs the right type of invoice (a standard invoice for a business customer, a simplified invoice for a consumer), generated in ZATCA’s structure, signed, and then cleared or reported through the Fatoora platform, with refunds handled by credit notes.
I have implemented ZATCA e-invoicing for WooCommerce stores, and this guide covers the decisions that matter before you pick a plugin or a developer.
The phases of ZATCA e-invoicing, and where the waves stand
- Phase 1, generation. Businesses generate e-invoices in the required format with a QR code. It has applied since December 2021.
- Phase 2, integration. Businesses integrate their invoicing system with ZATCA’s Fatoora platform, in waves.
According to coverage by EY and VAT Update:
| Wave | Who is included | Integration deadline |
|---|---|---|
| Wave 24 | Taxpayers with VAT-taxable revenue above SAR 375,000 in 2022, 2023 or 2024 | 30 June 2026 |
| Wave 25 | Taxpayers with taxable turnover above SAR 187,500 in 2022, 2023, 2024 or 2025. The threshold was halved, and 2025 revenue counts for the first time | 1 February 2027 |
ZATCA announced Wave 25 on 24 July 2026, about six months before the deadline. ZATCA’s own site was not available to me when I wrote this, so check ZATCA’s notice and your Fatoora portal for your exact wave and date. Do not rely on a blog, including this one, for a compliance deadline.
Invoice types: B2B and B2C
Phase 2 treats invoices differently depending on the customer:
- Standard invoices (business customers). These go through ZATCA for clearance.
- Simplified invoices (consumers). These are reported to ZATCA after they are issued.
A WooCommerce store often issues both. A shop that sells to consumers mostly issues simplified invoices. One that sells to companies also needs the buyer’s VAT details at checkout. The exact reporting and clearance rules and time limits are set by ZATCA, so confirm them in its current documentation.
Three ways a WooCommerce store can comply
| Option | Best when | Watch out for |
|---|---|---|
| A WooCommerce plugin | Your volume is modest, your flow is standard, and you want to be compliant quickly | Small, young plugins. Check update history, support, and how they handle refunds and edits |
| A custom integration | You have unusual flows, high volume, or need to tie invoices to your own systems | More build and maintenance cost, and you take on the compliance detail |
| Your accounting or ERP system | You already issue invoices from software that is ZATCA-integrated, and WooCommerce can feed it orders | Syncing orders, refunds and customer VAT details reliably |
There are several WooCommerce plugins for ZATCA. On WordPress.org alone, I found ZATCA E-Invoice for WooCommerce, Simple Fatoora, Saudi VAT Pro for WooCommerce, and E-Invoicing for Saudi Arabia by ZATCA Tools, all updated in 2026. Their install counts are small, and others are sold from vendors’ own sites. I am not recommending any of them here. Treat vendor claims about compliance as claims, and ask for proof that the plugin works against ZATCA’s test environment.
What a compliant ZATCA e-invoicing setup has to do
Whichever route you pick, each invoice has to be generated in ZATCA’s required structure, digitally signed, given a QR code, and then cleared or reported to ZATCA. Invoices also have to follow a controlled sequence so they cannot be silently changed or deleted. Plugin vendors describe this as UBL XML, a digital signature, a QR code, and a hash chain. Confirm the current technical requirements in ZATCA’s own documentation, because they change.
WooCommerce-specific problems to plan for
These are the points I look at on every WooCommerce e-invoicing project. They are where a plugin that works in a demo can fail in a live store:
- Edits after an invoice is issued. Once an invoice exists, an order edit cannot quietly change it. Decide how corrections work.
- Refunds and credit notes. A refund, including a partial one, normally needs a matching credit note, linked to the original invoice.
- Partial shipments and split orders. Decide when the invoice is issued and what it covers.
- Multiple currencies. Invoices have to show SAR amounts and VAT correctly, so check how the plugin converts and rounds.
- B2B customers. You need the buyer’s VAT number and details collected and validated at checkout.
- Payment status. Decide whether the invoice is issued on order placement or on payment, and keep that consistent with your payment gateway’s callbacks.
- Failures and retries. What happens when ZATCA is unreachable or rejects an invoice? You need a visible queue, retries, and a way to alert someone.
- Backups and migration. The invoice sequence and records have to survive a site migration or restore.
Test before you go live
Use ZATCA’s non-production environments to test before you issue a single real invoice. Confirm the current names and steps in ZATCA’s documentation. Then run the cases that break things:
- A normal paid order, for a consumer and for a business.
- A cancelled order and a failed payment.
- A full refund and a partial refund.
- A multi-item order with different tax treatment.
- ZATCA rejecting an invoice, and your system’s response.
- Restoring a backup.
Go-live checklist
- Confirm your wave and date in your ZATCA account.
- Complete onboarding and obtain the credentials that ZATCA requires.
- Test every case above in the non-production environment.
- Check that your QR codes and invoice layout meet ZATCA’s rules.
- Set up alerts for failed or pending invoices.
- Document who handles a rejected invoice, and how.
- Back up the invoice data and the sequence state.
- Keep a rollback plan.
Frequently asked questions
Which WooCommerce plugin should I use for ZATCA?
I do not recommend one for every store. Compare update history, support, how it handles refunds and edits, and whether the vendor can show it working against ZATCA’s test environment. Higher volume or unusual flows may justify a custom integration.
Do I need a developer to set up ZATCA e-invoicing?
For a simple store a plugin may be enough, but integration still involves credentials, testing and your payment flow, so most stores benefit from developer help. A custom integration always needs one.
What happens if an invoice is rejected?
Your system needs to catch the rejection, show the reason, and let someone fix and resubmit it. Plan this before launch, because it will happen.
How long does ZATCA e-invoicing onboarding take?
It depends on your wave deadline, your setup, and the route you choose. Start well before your deadline and leave time for testing.
Does it change my payment gateway?
Not directly, but your invoice timing has to match your order and payment statuses. See my guide to WooCommerce payment gateways for the Gulf.
Does ZATCA e-invoicing apply if I only sell abroad?
It applies to VAT-registered businesses in Saudi Arabia, and the details depend on your registration and sales. Ask ZATCA or a tax adviser about your specific case.
Need help with a Saudi WooCommerce store?
If you are planning or fixing e-invoicing, see my pages for a WooCommerce developer in Riyadh, a WordPress developer in Riyadh, and my WooCommerce developer service. Or tell me about your project.