Description
ZATCA E-Invoice for WooCommerce is a free WordPress plugin that helps Saudi Arabian businesses generate ZATCA (Zakat, Tax and Customs Authority) compliant PDF Invoices with QR codes for WooCommerce orders.
It supports the First Phase (Generation Phase) requirements of ZATCA E-Invoicing.
It generates PDF invoices containing all mandatory fields required by ZATCA, including the QR code.
Check ZATCA Mandatory Fields
Disclaimer: This plugin is not officially affiliated with or endorsed by ZATCA (Zakat, Tax and Customs Authority).
Features
- ZATCA Compliant PDF Invoices: Generates PDF invoices compatible with ZATCA requirements, including all mandatory fields.
- Encrypted QR Code: Generates a Base64 encoded QR code containing the required TLV (Tag-Length-Value) data (Seller Name, VAT Registration Number, Timestamp, Invoice Total, VAT Total).
- Automatic Generation: Automatically generates the invoice when the order status changes to “Completed” (or any status you configure).
- Mandatory Fields Support: Ensures the invoice contains:
- Invoice Reference Number
- Invoice Issue Date
- Seller Name & Address
- VAT Registration Number
- Line Items with VAT details
- Totals (Net, VAT, Gross)
- Display QR codes on order emails
- Display QR codes on My Account orders page
- Generate PDF invoices with QR codes
- Support for Arabic/RTL layout
- HPOS (High Performance Order Storage) compatible
- Local QR code generation (no external API required)
Premium Version
Unlock advanced features with the Premium Version:
- Credit Notes (Refunds): Automatically generate PDF credit notes for refunded orders.
- Bulk Generation: Generate invoices for old orders in one click.
- Customization: Add your Company Logo, Custom Header, and Custom Footer to the PDF.
- QR Code Size: Control the size of the QR code.
- PDF Appearance: Primary color, font size, logo and QR code alignment, product SKU and customer order note on the PDF invoice.
- Priority Support.
Electronic Invoice Phase Two (Integration Phase)
This plugin is designed for Phase One (Generation).
If you need full compliance with Phase Two (Integration) requirements, which involve XML generation, cryptographic stamping, and direct integration with ZATCA servers, you need our specialized plugin:
Phase Two Plugin Features:
* Full integration with ZATCA portals (Fatoora & Simulation).
* Generation of XML files compliant with UBL 2.1 standards.
* Cryptographic Stamp & CSR Generation.
* Reporting of invoices.
* PIH (Previous Invoice Hash) chaining.
Screenshots




Installation
- Upload the plugin files to the
/wp-content/plugins/zatca-e-invoice-for-woocommercedirectory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the ‘Plugins’ screen in WordPress
- Open the Zatca QR Fatora menu in the WordPress admin (الفوترة الإلكترونية in Arabic) to configure the plugin
- Enter your company name and tax number (15 digits)
- Enable QR code generation and PDF invoice generation
FAQ
-
Does this plugin support ZATCA Phase Two?
-
No, this plugin supports the First Phase (Generation Phase) requirements only (PDF generation + QR Code).
For Phase Two (Integration Phase) which requires XML generation and API integration with ZATCA, you need to purchase our specialized plugin:
ZATCA Phase Two Integration Plugin -
What is ZATCA?
-
ZATCA (formerly known as GAZT) is the Zakat, Tax and Customs Authority in Saudi Arabia. This plugin helps you generate invoices that comply with ZATCA requirements for electronic invoicing.
-
The free version includes:
* ZATCA compliant PDF Invoice generation
* Encrypted QR Code generation
* Email and My Account displayThe premium version includes all free features plus:
* Credit note PDF generation
* Bulk invoice/credit note generation
* Custom company logo on invoices
* Custom header and footer text
* Control QR code size
* Automatic plugin updates
* Priority support -
Do I need WooCommerce?
-
Yes, this plugin requires WooCommerce to be installed and activated.
-
What PHP version is required?
-
PHP 7.4 or higher is required.
-
How do I generate QR codes?
-
- Open the Zatca QR Fatora menu (الفوترة الإلكترونية in Arabic)
- Enter your company name and tax number
- Enable QR code generation
- Select order statuses where QR codes should appear
- Save settings
QR codes will automatically appear on completed orders.
Contributors & Developers
“ZATCA E-Invoice for WooCommerce” is open source software. The following people have contributed to this plugin.
Contributors“ZATCA E-Invoice for WooCommerce” has been translated into 1 locale. Thank you to the translators for their contributions.
Translate “ZATCA E-Invoice for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.4.1
- The license files of the bundled libraries (mPDF, FPDI, psr/log, php-qrcode and others) are included again. The 2.3.2-2.4.0 builds left them out.
2.4.0
- New (premium): PDF invoice appearance options in the PDF Invoice tab: primary color, font size (9-12 pt), logo and QR code alignment, the product SKU under each product, and the customer’s order note. The fields required by ZATCA and the QR code are always shown.
- Improved: Arabic text in the PDF invoice now uses the Tajawal font (SIL Open Font License, bundled in assets/fonts/tajawal). The invoice already asked for it, but the font was missing, so mPDF fell back to DejaVu Sans.
2.3.3
- Fixed (premium): the “QR Code Size” setting was saved but never used, so the QR code was always 150 pixels. It now applies to the QR code on the order page, in order emails, in the
[zeiw_order_qr]shortcode and in the supported PDF invoice plugins. The plugin’s own PDF invoice keeps its 150 pixel layout. - Fixed: the
widthattribute of the[zeiw_order_qr]shortcode is now honored. Without it, the size from the settings is used. - Fixed: the installation steps in the readme pointed to a Settings menu that does not exist. The plugin has its own “Zatca QR Fatora” menu.
- Fixed Arabic translations: “Customer Access”, the PDF invoice section description, the license key description, and a few spelling mistakes.
2.3.2
- Fixed: the bundled libraries required PHP 8.1, so on PHP 7.4 and 8.0 the plugin stopped the site with “Composer detected issues in your platform”, although PHP 7.4 is supported. They are now built for PHP 7.4.
- Improved: the bundled libraries (mPDF, FPDI, psr/log, php-qrcode) now use the plugin’s own
ZEIW\Vendornamespace, so another plugin shipping a different version of them can no longer break the PDF invoices or QR codes. - Updated mPDF to 8.3.1 and FPDI to 2.6.8.
2.3.1
- Security: PDF invoices and credit notes contain customer data but were saved at predictable public paths (
uploads/zatca/pdf-invoices/invoice-{order}.pdf). The.htaccessrule only protects them on Apache, so on Nginx anyone could download them by guessing the order number. Each PDF is now stored in its own folder named from a site secret, so its address cannot be guessed on any server. Downloads keep going through the permission checked links. - Security: existing PDFs are moved to the protected folders automatically after the update, unchanged, in batches of 200 per request.
- Fixed: the
.htaccessrules now also work on Apache 2.4 withoutmod_access_compat, andindex.phpfiles prevent directory listings. ZEIW_Pdf_Invoice_Generator::get_invoice_file_url()now returns the permission checked download link instead of the file’s public address.
2.3.0
- New: optional integration hooks for ZATCA Phase 2 plugins. When such a plugin is active, the QR code, invoice/credit note number, issue date and embedded XML can come from the invoice it reported to ZATCA. Nothing changes when no Phase 2 plugin is installed.
- New:
zeiw_document_datafilter for the invoice/credit note data before the PDF is rendered. - New:
zeiw_qr_datareceives the refund when the QR code is for a credit note;zeiw_pdf_invoice_xml_filepathalso applies to credit notes and receives the refund. - New: a cached PDF is regenerated when a Phase 2 plugin fires
zatca_wc_document_changed. - New:
zeiw_document_availablefilter. A Phase 2 plugin can hold back the QR code, PDF, downloads and email attachments of an order until it has issued the e-invoice, so customers never receive a document that differs from the one reported to ZATCA. Always available when no Phase 2 plugin is installed.
2.2.0
- Fixed: Invoice PDF and QR code timestamps now consistently use the site’s configured timezone instead of mixing UTC and local time.
- Fixed: VAT percentage on invoices now uses the order’s actual tax rate when available, avoiding rounding artifacts (e.g. 14.94% instead of 15%) on small-value orders.
2.0.1 (2026-06-09)
- Fixed a fatal error that occurred in the free version due to missing license manager files.
2.0.0 (2026-05-20)
- Major licensing update: Transitioned to Freemius for a better user experience and easier premium feature management.
- Enhanced settings page.
- Important: Existing premium users will be seamlessly migrated to the new licensing system.
1.0.1 (2025-12-27)
- Fixed WordPress plugin repository compatibility issue
- Fixed QR code image in account orders page
1.0.0 (2025-12-01)
- Initial release
- QR code generation for ZATCA compliance
- PDF invoice generation
- Email and My Account integration
- HPOS compatibility
