Skip to main content
ZATCA Phase 2 E-Invoicing for KSA (Fatoora Integration) — ZATCA Phase 2 clearance & reporting for Odoo — generate, cryptograp — 1/1Illustrative preview

ZATCA 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

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)
Per-invoice UUID, invoice hash, and previous-invoice-hash (PIH) chaining computed via @api.depends so the anti-tamper chain is never broken
Embedded TLV-encoded, Base64 QR code (seller name, VAT number, timestamp, total, VAT amount, XML hash, stamp) rendered on the PDF and validated by the ZATCA app
Bilingual Arabic/English tax-invoice QWeb template exported as PDF/A-3 with the signed XML embedded as an attachment, exactly as the specification requires
ZATCA status panel on every invoice (Not Submitted / Cleared / Reported / Rejected) with the full request and response payload stored for audit
Full validation pre-flight that checks VAT number, buyer/seller address, line-level tax categories and totals against ZATCA business rules before submission
ir.model.access.csv permissions plus record rules so only authorized finance roles can clear, report, or re-submit invoices — with a complete submission audit log
Handles Odoo multi-company and multi-VAT-registration setups, mapping each company/branch to its own CSID and credentials
XML-RPC / JSON-RPC endpoints and automated actions so external POS, e-commerce, or billing systems can feed transactions into the same compliant clearance pipeline
Sandbox / simulation mode wired to ZATCA's developer environment for safe end-to-end testing before switching to production
Graceful handling of ZATCA warnings vs. hard errors, credit-note referencing of the original cleared invoice, and correct handling of Odoo's tax-rounding to match ZATCA totals

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 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

CriterionECOSIRECustom BuildCompetitorOdoo Native
ZATCA Phase 2 clearance & reporting inside OdooBuilt into account.move with real-time Clearance and 24h Reporting flowsPossible but you build every ZATCA API call, hash, and retry yourselfSome cover clearance; reporting, edge cases, and version support varyNot provided — Odoo core has no Fatoora clearance
Cryptographic stamp / CSID onboarding via Fatoora APIHandled end-to-end during onboarding, incl. compliance and production CSIDYou must implement CSR generation, CSID request, and cert storageOften documented but self-service; support quality variesNot available
UUID, invoice hash & previous-invoice-hash (PIH) chainingComputed via @api.depends so the anti-tamper chain is never brokenMust be engineered and tested carefully to avoid breaking the chainUsually implemented, but you rely on the vendor's correctnessNot implemented
Bilingual Arabic/English PDF-A3 with embedded XML & QRBranded QWeb template built to your identity and ZATCA layoutFull QWeb + PDF/A-3 + TLV QR work from scratchGeneric template; branding and bilingual polish often limitedStandard invoice PDF only — no embedded XML or compliant QR
Fit to your CoA, taxes, multi-company/VAT setupConfigured and tested against your exact Odoo data during the buildYou own all mapping and validation logicOne-size-fits-all; you adapt your data to the moduleGeneric — no ZATCA-specific mapping
Delivery model & lead timeBuild-to-order, scoped and tested, typically one working week with go-live supportMonths of in-house dev, testing, and certification effortInstant download, but self-onboarding and self-supportImmediate, but not compliant
Support, warranty & future ZATCA/Odoo updatesDefined support window + maintenance path for spec and version changesYour team maintains it indefinitelyDepends on vendor subscription and roadmapN/A
External POS / e-commerce integration (XML-RPC/JSON-RPC)Exposed endpoints + automated actions feed one compliant pipelineYou design and secure every integration pointVaries; often Odoo-invoice-onlyGeneric 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.

Request a quote

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)

Request a Quotation

Tell us about your ZATCA Phase 2 E-Invoicing for KSA requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.