ZATCA Phase 2 · Fatoora · Odoo 17/18/19

Get ZATCA Phase 2 compliant in Odoo with no middleware. Signed invoices, compliant QR and direct submission to ZATCA.

Saudi Arabia's e-invoicing waves 23 and 24 are already live: every invoice has to be signed, stamped and reported to ZATCA, and every invoice you fail to report is a penalty risk. This module handles it inside Odoo, with no separate middleware and no parallel portal, so you can get compliant this week.

Signed and stamped invoiceSigned UBL XML, compliant QR and chained hash (PIH) on every document.
Submission to ZATCAClearance of standard invoices and reporting of simplified ones, straight from the ERP.
Built for SMEsSized for waves 23-24, without an expensive bespoke project.
Native in OdooInstalls as a module, not as an external integration you have to maintain.
Signed electronic invoice with ZATCA Phase 2 compliant QR code in Odoo
Source code included Odoo 17/18/19 · Community and Enterprise One-time payment, no fees Direct developer support No middleware

Try the ZATCA Phase 2 module inside a real Odoo, no sign-up. User demo / flexigodemo.

Try the live demo View on the App Store

The real Phase 2 problem, explained before you buy

Phase 1 was just storing the invoice with a basic QR code. Phase 2 (the Integration Phase) changes the rules: every invoice must be signed, chained and reported to ZATCA. This is the part that usually hurts when your wave goes live.

Cryptographic signature is mandatory

A PDF is no longer enough. Every invoice needs a signed UBL XML using your ZATCA certificate, and a single format error is enough for it to be rejected.

Real-time clearance and reporting

Standard (B2B) tax invoices need prior clearance; simplified (B2C) invoices must be reported within 24 hours. Without an integration, keeping up by hand is simply not viable.

Invoice chaining (PIH)

Each invoice carries the hash of the previous one. If the chain breaks or invoices are numbered out of sequence, ZATCA detects it and the invoice is left at risk of rejection.

What the module handles inside Odoo

This is not a marketing layer on top of the invoice: it is the complete Phase 2 flow, from onboarding your device with ZATCA to submitting the signed document.

CSID and certificate onboarding

CSR generation, Compliance CSID request and the switch to a Production CSID with ZATCA, all managed from inside Odoo.

Signed invoice in UBL 2.1 format

Generation of the compliant XML, digital signature (XAdES), the ZATCA cryptographic stamp and embedding into the final document.

Compliant QR and chained hash

QR code with all the mandatory TLV-encoded fields, plus Previous Invoice Hash (PIH) management so the invoice chain never breaks.

Clearance and reporting with statuses

Submission to the ZATCA API, parsing of the response (cleared, reported, warnings, errors) and the resulting status shown right on the Odoo invoice.

Credit and debit notes

Support for credit and debit notes with the reference back to the original document, exactly as Phase 2 requires.

Multi-company from a single Odoo

Multi-company support: each Saudi entity manages its own CSID, its own certificate and its own invoice chain inside the same Odoo instance.

Direct developer support

You don't talk to a reseller. Support comes from the person who wrote the module, in case your go-live needs a hand.

From install to your first cleared invoice

Four steps, all inside Odoo. No separate portal to log into and no gateway to babysit.

1. Install and configure the company

Install the module in your Odoo 17, 18 or 19, set the Saudi company's VAT details and choose the ZATCA environment (sandbox, simulation or production).

2. Onboard the CSID

Generate the CSR, request the Compliance CSID with the OTP from the Fatoora portal and promote it to a Production CSID, all without leaving Odoo.

3. Issue and sign the invoice

Post an invoice as usual and the module builds the UBL 2.1 XML, signs it, computes the hash, chains it to the previous one and generates the compliant QR.

4. Clear or report to ZATCA

Standard invoices are sent for clearance and simplified ones are reported. Odoo shows the ZATCA response and marks the invoice as cleared or reported.

A native module, not a middleware to maintain

FlexigoTech is an independent developer in Barcelona specialised in Odoo. The ZATCA Phase 2 module installs inside your Odoo and talks directly to the ZATCA API: no intermediate SaaS, no monthly fee for an external gateway, no parallel panel to keep an eye on. To be straight with you: we don't invent customer case studies or fake reviews. What we offer is the module, the source code and direct support from the person who maintains it.

0middleware needed
17/18/19Odoo versions
1:1direct support

SMEs in waves 23-24 that need to comply now

Waves 23 and 24 bring in taxpayers with lower turnover thresholds: small and mid-sized businesses without a large IT team. The module is designed for exactly that profile, so you can meet Phase 2 without an expensive bespoke project or an integration that never ends.

Try the live demoAsk a question

One price, no surprises

You pay once for the ZATCA Phase 2 module and keep it. No per-invoice cost, no monthly gateway fee.

€49
one-time payment · no recurring fees
Source code included Works on Odoo 17, 18 and 19 Community and Enterprise No middleware, no monthly fees
Buy on the Odoo App Store Try the live demo first

If you found us through this search, these help too

We link this page to the rest of the site so you can find what you need without getting lost.

Questions that usually come up at this stage

Does this module cover the full ZATCA Phase 2 (Integration Phase)?

Yes. The module is built for Phase 2 (the Integration Phase) of Fatoora: cryptographically signed invoices, a compliant QR code, chained hashing (Previous Invoice Hash) and communication with the ZATCA platform, covering both clearance of standard tax invoices and reporting of simplified invoices.

Does it work for an SME in ZATCA wave 23 or wave 24?

Yes, it is sized exactly for that profile. Waves 23 and 24 bring in taxpayers with lower turnover thresholds, typically SMEs with a smaller IT team, and the whole point of the module is to let them comply without building an expensive custom integration.

Do I need external middleware or a third-party service provider?

No. The module runs inside Odoo and talks directly to the ZATCA API. It does not rely on an intermediate SaaS gateway or a separate portal: the invoice is signed, stamped and submitted from the ERP itself, with no monthly gateway fee.

Does it work with Odoo Community?

Yes. The module works on both Odoo Community and Odoo Enterprise, and supports Odoo versions 17, 18 and 19. You buy it once, install it as a module and keep the source code, so it does not tie you to a specific edition.

Can I try the module before buying?

Yes. There is a live demo, a real Odoo with the ZATCA Phase 2 module installed and no sign-up required (user demo, password flexigodemo), where you can see the signing flow, the compliant QR and the clearance and reporting statuses. When you are ready, you buy the license on the Odoo App Store, and if you need it we help with the CSID onboarding and your first live invoices.

How much does it cost and do you help with setup?

It is a one-time payment of €49, with the source code included and no recurring fees. You can install it yourself or ask for direct developer support with CSID onboarding, certificate configuration and the first live invoices. Support comes from the developer who wrote the module, with no reseller in between.

Is your ZATCA wave already live? Every unreported invoice is a penalty risk.

Waves 23 and 24 are already in force. If you are not yet reporting invoices to ZATCA, get compliant this week: talk to us and we'll check whether the module fits your Odoo and your invoicing operation in Saudi Arabia. No commitment.

€49 · one-time payment, no fees Try the live demoView on the App Store · +34 639 913 105