Home / Plugins / Phase 2
E-invoicing: Phase 2Connect your WooCommerce store to Fatoora once, and every order's invoice is sent to ZATCA on its own. No manual uploads, no extra accounting software, no change to how you work.
Order #1024 Today
Customer completed checkout
Checkout runs at its usual speed.
E-invoice generated
In the format ZATCA requires, with nothing to do on your side.
Sent to Fatoora
In the background, with retries if the connection drops.
Accepted by ZATCA
Status shows on the order screen, and the QR code in the customer's email.
What you did for this order: nothing
Once ZATCA sets your integration date, your store's invoices must be sent to Fatoora. Here is what changes for you with the plugin.
Exporting and uploading orders by hand, or paying monthly for accounting software
Constant worry about an invoice that was forgotten or sent late
Refunds need credit notes prepared separately
When something fails, you cannot tell which order or why
Every order is sent automatically as soon as it completes, from inside your store
If sending fails, the plugin retries within the 24-hour window
Refunds are sent as credit notes automatically
Any problem shows on the order itself, with how to fix it
No exporting, uploading or reconciling. Invoices go to ZATCA on their own, even while you sleep.
Sending happens in the background after purchase, so checkout speed and the buying experience are untouched.
If Fatoora is down or the connection drops, the plugin resends automatically several times before the deadline.
If ZATCA rejects an invoice, the reason appears on the order screen and you can issue a corrected invoice or credit note in one click.
When an order is refunded, the credit note is generated and sent to ZATCA automatically, just like invoices.
Your ZATCA keys are stored encrypted on your own site, and the invoice archive is kept as the regulations require.
No new account to manage and no accounting subscription. Each invoice's status sits right next to the order.
The plugin guides you step by step, and if a step does not complete it tells you exactly why.
Like any WordPress plugin, then activate your license.
Name, VAT number and address, then the verification code (OTP) from the Fatoora portal.
Once ZATCA's compliance checks pass, every new order's invoice is sent automatically.
Rather not deal with setup? We install the plugin, connect it to Fatoora and check the first invoice with you.
Request setupAdd the Phase 1 plugin and every customer gets a clean Arabic PDF invoice with the e-invoice file attached.
$199 / year
The full plugin for one store
Updates as ZATCA requirements change
Technical support included
Per store
Single-store license
We connect your store to Fatoora for you
We verify the first invoice with you
From $999 / year
License for several stores
Suited to your clients' stores
Priority support
No. Setup is a few simple screens in WordPress that ask for your business details and the verification code from the Fatoora portal. If you prefer, we handle setup for you.
When ZATCA notifies you of your Phase 2 integration date. Until then, issuing Phase 1 compliant invoices is enough.
Nothing stops in your store. The plugin keeps the invoice and resends it automatically: temporary network and server errors are retried 7 times over about 16 hours via Action Scheduler, within the 24-hour reporting window.
The rejection reason appears on the order screen exactly as ZATCA sent it. Rejections are final under the regulations, so you issue a corrected invoice or credit note from the same screen.
It is optional. Without it, customers see the Phase 2 QR code on the order page and in emails. With it, they also get an Arabic PDF invoice and credit note with the signed XML embedded.
The plugin follows the technical requirements ZATCA publishes, but it is not affiliated with or issued by ZATCA.
Invoices and credit notes are generated as UBL 2.1 XML, digitally signed with the cryptographic stamp, and reported to Fatoora (Reporting). The invoice counter (ICV) and previous invoice hash (PIH) are updated under a database lock, so concurrent orders never share a position in the chain.
The private key and CSID secrets are stored in your site's database encrypted with AES-256-GCM, never as files. You can set your own encryption key with the ZATCA_WC_ENCRYPTION_KEY constant in wp-config.php.
Signed XML files are kept as ZATCA requires, in folders with unguessable names so they stay protected on any server. VAT is broken down by category and rate, including the ZATCA category for zero-rated items.
WordPress 5.8 or later, WooCommerce 6.0 or later, PHP 8.1 or later, and a Fatoora portal account to get the verification code (OTP). The plugin works with orders in Saudi riyals (SAR). The current version is 1.0.17.
Buy the plugin and start now, or leave it to us and we will set it up for you.