- Home
- Apps
- SaaS Tools
- ZATCA Phase 2 E-Invoicing for KSA (Fatoora Integration)
Illustrative previewZATCA Phase 2 clearance & reporting for Odoo
— generate, cryptographically sign, and submit VAT e-invoices via Fatoora.
What is ZATCA Phase 2 E-Invoicing for KSA (Fatoora Integration)?
ZATCA Phase 2 clearance & reporting for Odoo — generate, cryptographically sign, and submit VAT e-invoices via Fatoora. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
ECOSIRE designs, builds, installs, and supports a native Odoo module that makes your Saudi Arabian invoicing fully compliant with ZATCA Phase 2 (the Integration Phase / Fatoora) — no bolt-on middleware, no manual portal uploads, no CSV shuttling between systems. This is not an off-the-shelf apps.odoo.com download you install blind; it is a build-to-order engagement tailored to your chart of accounts, your VAT registration, your invoice branding, and your specific Fatoora onboarding wave.
The module extends Odoo's native account.move so that the moment you confirm a customer invoice or credit note, the system generates a ZATCA-conformant UBL 2.1 XML document, builds the invoice hash and chains it to the previous invoice's hash (PIH), stamps it with your cryptographic stamp from your CSID, and — for standard tax invoices — calls the Fatoora Clearance API in real time to obtain the cleared, government-signed invoice before it reaches your customer. For simplified (B2C) invoices it uses the Reporting API within the 24-hour window. Everything is written the Odoo way: new fields on the invoice model, @api.depends computed values for the UUID, hash and QR payload, ir.model.access.csv plus record rules so only authorized finance users can trigger clearance, XML/OWL views that surface a clean "ZATCA status" panel on every invoice, and a bilingual QWeb PDF/A-3 report that embeds the signed XML and the TLV-encoded QR code exactly as the specification requires.
Because it is native Odoo, it works cleanly across Odoo 17, 18 and 19 and on both Community and Enterprise (Enterprise's accounting features are respected, not replaced). Automated actions and scheduled jobs retry failed submissions, keep a full audit trail of every ZATCA request/response, and expose XML-RPC/JSON-RPC endpoints so an external POS, e-commerce front end, or third-party billing system can push transactions into the same compliant pipeline. You get one source of truth for VAT invoicing inside the ERP you already run — with ECOSIRE standing behind onboarding, go-live, and every future regulation update from ZATCA.
What you get
- A fully installable Odoo module (source code with __manifest__.py declaring dependencies on account and l10n_sa, models, security CSV, views and QWeb reports) delivered to your repository or Odoo instance
- Configuration and onboarding of your CSID / cryptographic stamp against the Fatoora portal, including compliance-CSID testing and production go-live
- Mapping of your Odoo chart of accounts, taxes, company/VAT registration and customer data to ZATCA's required fields and business rules
- A bilingual (Arabic/English) branded tax-invoice and credit-note QWeb template matching your company identity and the ZATCA layout requirements
- End-to-end testing in ZATCA's sandbox plus a documented production validation run (standard clearance and simplified reporting) before sign-off
- Written admin and finance-user documentation plus a live training session for your accounting team on issuing, clearing, and troubleshooting invoices
- A defined post-go-live support and warranty window covering bug fixes, and a maintenance path for future ZATCA specification and Odoo-version updates
Who this is for
KSA finance manager / accountant
Owns VAT compliance for a Saudi SMB or enterprise and must meet ZATCA Phase 2 clearance and reporting obligations without leaving Odoo or hand-uploading files to the Fatoora portal.
KSA-based Odoo partner or systems integrator
Delivers Odoo to Saudi clients and needs a proven, supported Phase 2 integration to embed in projects rather than reinventing the cryptographic stamping, hashing, and Fatoora API plumbing per client.
CFO / group controller of a multi-branch KSA business
Runs several companies or branches under different VAT registrations in one Odoo database and needs each entity correctly onboarded, cleared, and audit-logged with clear role-based controls.
How ZATCA Phase 2 E-Invoicing for KSA (Fatoora Integration) Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| ZATCA Phase 2 clearance & reporting inside Odoo | Built into account.move with real-time Clearance and 24h Reporting flows | Possible but you build every ZATCA API call, hash, and retry yourself | Some cover clearance; reporting, edge cases, and version support vary | Not provided — Odoo core has no Fatoora clearance |
| Cryptographic stamp / CSID onboarding via Fatoora API | Handled end-to-end during onboarding, incl. compliance and production CSID | You must implement CSR generation, CSID request, and cert storage | Often documented but self-service; support quality varies | Not available |
| UUID, invoice hash & previous-invoice-hash (PIH) chaining | Computed via @api.depends so the anti-tamper chain is never broken | Must be engineered and tested carefully to avoid breaking the chain | Usually implemented, but you rely on the vendor's correctness | Not implemented |
| Bilingual Arabic/English PDF-A3 with embedded XML & QR | Branded QWeb template built to your identity and ZATCA layout | Full QWeb + PDF/A-3 + TLV QR work from scratch | Generic template; branding and bilingual polish often limited | Standard invoice PDF only — no embedded XML or compliant QR |
| Fit to your CoA, taxes, multi-company/VAT setup | Configured and tested against your exact Odoo data during the build | You own all mapping and validation logic | One-size-fits-all; you adapt your data to the module | Generic — no ZATCA-specific mapping |
| Delivery model & lead time | Build-to-order, scoped and tested, typically one working week with go-live support | Months of in-house dev, testing, and certification effort | Instant download, but self-onboarding and self-support | Immediate, but not compliant |
| Support, warranty & future ZATCA/Odoo updates | Defined support window + maintenance path for spec and version changes | Your team maintains it indefinitely | Depends on vendor subscription and roadmap | N/A |
| External POS / e-commerce integration (XML-RPC/JSON-RPC) | Exposed endpoints + automated actions feed one compliant pipeline | You design and secure every integration point | Varies; often Odoo-invoice-only | Generic API, but no ZATCA logic behind it |
Frequently Asked Questions about ZATCA Phase 2 E-Invoicing for KSA
How long does delivery take, and is this an instant download?
This is a build-to-order engagement, not an instant apps.odoo.com download. Typical delivery is one working week depending on your Odoo version, chart-of-accounts complexity, number of VAT registrations, and how quickly your Fatoora portal access and CSID onboarding can be completed. We scope with you first, build and test against ZATCA's sandbox, then run a supervised production go-live.
What support and updates do I get after go-live?
Every engagement includes a defined post-go-live support and warranty window for bug fixes and issue resolution. ZATCA periodically updates its Phase 2 specification and business rules, and Odoo ships new major versions — we offer an ongoing maintenance path so your module stays compliant across those changes. Support scope, response times, and the update arrangement are agreed in writing before the build starts.
Does it support Odoo 17, 18, and 19 — and Community or Enterprise?
Yes. The module is built the native Odoo way (extending account.move, standard security via ir.model.access.csv and record rules, XML/OWL views, QWeb reports) so it runs on Odoo 17, 18, and 19. It works on both Community and Enterprise; on Enterprise it complements the built-in accounting features rather than replacing them, and it aligns with the l10n_sa localization.
What is the difference between the Clearance and Reporting flows, and does the module handle both?
ZATCA Phase 2 requires standard tax invoices (typically B2B/B2G) to be cleared in real time — the invoice is sent to Fatoora and returned government-signed before it is issued. Simplified invoices (typically B2C, including POS) are reported to ZATCA within 24 hours. The module handles both: real-time clearance on invoice confirmation for standard invoices, and reporting with automated retry (via a scheduled action) for simplified invoices.
How does the cryptographic stamp, hashing, and QR code work?
During onboarding we request and install your CSID and cryptographic stamp certificate via the Fatoora portal API. For each invoice the module computes a UUID and an invoice hash, chains it to the previous invoice hash (PIH) to form the anti-tamper chain, applies the cryptographic stamp, and renders a TLV-encoded, Base64 QR code on the PDF/A-3. The QR carries the seller name, VAT number, timestamp, totals, VAT amount, XML hash, and stamp, and validates in the official ZATCA app.
Can other systems like my POS or e-commerce store feed into it?
Yes. Because it lives inside Odoo, any transaction that becomes an account.move can be cleared or reported. For external systems we expose Odoo's XML-RPC / JSON-RPC API and automated actions so a POS, e-commerce front end, or third-party billing platform can push transactions into the same compliant pipeline, keeping a single audit trail in the ERP.
What happens if a submission to ZATCA fails or is rejected?
Every invoice carries a ZATCA status (Not Submitted / Cleared / Reported / Rejected) and stores the full request and response payload for audit. Hard errors are surfaced to the finance user with the ZATCA validation message; warnings are logged but do not block issuance. A scheduled action retries transient failures, and rejected invoices can be corrected and re-submitted without breaking the invoice-hash chain.
Related Modules

Zambia Smart Invoice Compliance for Odoo
A build-to-order Odoo module that fiscalises your customer invoices and credit notes through the ZRA Smart Invoice device/API flow, directly from `account.move`. ECOSIRE scopes, builds, installs and supports it for your Odoo 17.0, 18.0 or 19.0 database.

Zapier / Make Integration Bridge for Odoo
Connect Odoo to 6,000+ apps via Zapier and Make with triggers and actions for any model — built-to-order, no custom code for your team.

Advanced Access Rights & Record Rules Manager for Odoo
Visual matrix to manage Odoo permissions, field security, record rules & menu hiding per group — audit and clone roles without editing XML.

Advanced Import / Export & Data Migration Toolkit for Odoo
Map-and-import Excel/CSV into any Odoo model with validation, dedupe, scheduled syncs & branded export templates. Built for you by ECOSIRE.
ZATCA Phase 2 E-Invoicing for KSA
ZATCA Phase 2 clearance & reporting for Odoo — generate, cryptographically sign, and submit VAT e-invoices via Fatoora.
- Generates ZATCA-conformant UBL 2.1 tax-invoice and credit/debit-note XML directly from Odoo's native account.move on invoice confirmation
- Real-time Clearance flow for standard (B2B/B2G) tax invoices — the government-signed, cleared XML is returned before the invoice is issued to the customer
- Reporting flow for simplified (B2C) invoices submitted to Fatoora within the mandated 24-hour window, with automated retry via scheduled action
- Cryptographic stamp application and CSID onboarding through the Fatoora portal API (compliance CSID request, production CSID renewal, and certificate storage)