Home / Blogs & Insights / Odoo Saudi ZATCA E-Invoicing and FATOORA Guide

Odoo Saudi ZATCA E-Invoicing and FATOORA Guide

Odoo ZATCA integration guide for Saudi invoice compliance

Table of Contents

Saudi businesses using Odoo must configure more than standard invoicing to meet ZATCA e invoicing requirements. Correct setup includes Saudi localization, VAT details, company information, XML invoice generation, QR code output, sales journal onboarding, ZATCA API mode selection, sandbox and simulation testing, and production synchronization.

Odoo's Saudi Arabia localization supports ZATCA e invoicing workflows when the required company data, portal credentials, and accounting configuration are in place. Below, you'll find the setup sequence, API modes, journal onboarding steps, common errors, and go live checks Saudi finance and operations teams should review before production.

ZATCA phase applicability, wave deadlines, and technical requirements can change. Review Phase 1 and Phase 2 dates on the official ZATCA portal or confirm with a qualified Saudi VAT advisor before go live.

This guide is useful for

Saudi businesses implementing Odoo Accounting
Finance teams preparing for ZATCA e-invoicing
Odoo admins configuring Saudi localization and journal onboarding
Retail and POS teams issuing simplified tax invoices
B2B companies issuing standard tax invoices requiring clearance
Businesses moving from manual to Phase 2 ZATCA integration

Saudi Arabia Localization

What Odoo Saudi Arabia Localization Covers

Odoo's Saudi Arabia localization extends Odoo Accounting with ZATCA specific settings covering VAT, company information, e invoice XML, QR codes, API modes, and journal onboarding. Review the official ZATCA technical guideline for the required e invoice format. You can review the Odoo Saudi Arabia localization documentation for supported setup details. For businesses going through Odoo implementation services, Saudi localization setup, ZATCA configuration, journal onboarding, and go live testing should be included in scope.

AreaWhat it means in Odoo
Saudi VATVAT setup, tax mapping, and tax reporting configured under Saudi Arabia localization
Company informationLegal name, VAT number, address, and CR number stored and verified before ZATCA onboarding
ZATCA API modeSandbox, Simulation/Pre-Production, or Production selected in Odoo Accounting settings
Sales journal onboardingEach sales journal onboarded with ZATCA using OTP from the Fatoora portal
Standard invoicesB2B invoices submitted for clearance where applicable under Phase 2
Simplified invoicesB2C invoices reported to ZATCA where applicable under Phase 2
QR codeQR code included on the invoice PDF or POS receipt as required
XML invoiceStructured XML payload generated for ZATCA API submission
API response handlingSuccess, warning, or rejection responses reviewed in the Odoo chatter
POS supportRetail receipts and simplified invoice scenarios where configured and tested

ZATCA Phases

ZATCA Phase 1 vs Phase 2 in Odoo

ZATCA defines Phase 2 as the Integration phase, with Phase 2 rollout waves applied by targeted taxpayer group from 1 January 2023. It introduces technical and business requirements and integrates the e invoicing solution with ZATCA systems. Phase 1 covered invoice generation; Phase 2 adds API integration, XML structure, cryptographic stamp, and ZATCA response handling.

ItemPhase 1: GenerationPhase 2: Integration
Main requirementGenerate and store electronic invoices in compliant formatIntegrate e-invoicing solution with ZATCA systems
Invoice formatElectronic invoice with QR code requirementsXML with UUID, cryptographic stamp, and API integration
B2B standard invoicesGenerated and storedSubmitted for clearance where applicable
B2C simplified invoicesGenerated and storedReported to ZATCA where applicable
Odoo focusInvoice format and QR code outputAPI mode, journal onboarding, sync, and response handling
Wave rolloutEarlier implementation across taxpayer groupsFrom 1 January 2023 in waves by targeted taxpayer group

Wave applicability and compliance deadlines vary by taxpayer group. Confirm your wave status and go live date with ZATCA or a qualified Saudi VAT advisor before starting Phase 2 configuration.

Invoice Types

Standard vs Simplified Tax Invoices in Odoo

Standard and simplified tax invoices follow different ZATCA clearance and reporting flows. Both must be tested separately before production go live. Confusing the two during setup creates separate configuration and API errors in each flow.

ItemStandard Tax InvoiceSimplified Tax Invoice
Common useB2B transactions between registered businessesB2C and retail transactions
Buyer detailsMore buyer/company fields requiredLess buyer detail depending on scenario
ZATCA flowClearance where applicableReporting where applicable
Odoo sourceCustomer invoicePOS receipt or simplified invoice
Common issueBuyer VAT or company fields incompleteQR or POS configuration incorrect, delayed reporting
Testing priorityTest clearance response and XML outputTest reporting response and QR output on receipt

E Invoice Workflow

How Odoo Handles ZATCA E Invoicing

When an applicable invoice is confirmed in Odoo, the Saudi localization generates the XML invoice payload with QR code and cryptographic data, submits it to ZATCA via the API, and updates the invoice status based on the response. The sales journal must be onboarded, the API mode must be correct, and company and customer data must be complete before this flow produces a valid result.

Odoo Invoice / POS
XML + QR Code
ZATCA API
Clearance / Reporting
Status Updated
Cleared / Reported

Fields required for ZATCA submission

  • Seller VAT number and legal name
  • Buyer VAT number where required
  • Invoice UUID and sequence number
  • XML invoice with all mandatory fields
  • QR code (Phase 1) and cryptographic stamp (Phase 2)
  • Tax breakdown and place of supply

API response types in Odoo chatter

  • Cleared — standard invoice accepted
  • Reported — simplified invoice accepted
  • Warning — accepted with noted issue
  • Rejected — invoice not accepted by ZATCA

API Modes

ZATCA API Modes: Sandbox, Simulation and Production

Odoo provides three API modes for ZATCA e invoicing. Each must be used in the correct environment with the correct database and Fatoora portal credentials. Moving directly to Production without completing Simulation testing increases the risk of live invoice rejections and compliance issues.

API Mode Progression
Sandbox
Early testing
Test VAT number
Simulation
Live-like testing
Duplicated database
Production
Real invoices
Live ZATCA sync
ModePurposeDatabaseInvoice validity
SandboxEarly setup validation with test VAT numberAny test environmentNot legally valid
SimulationLive-like invoice flow testing before productionDuplicated live databaseNot legally valid
ProductionReal invoice synchronization with ZATCALive production database onlyLegally valid

Odoo documentation confirms that Simulation/Pre Production invoices are not legally valid. Use a duplicated live database for Simulation not your production database. Switch to Production mode only on the live database.

Journal Onboarding

Odoo ZATCA Journal Onboarding Process

Each sales journal used in your Odoo operation must be onboarded with ZATCA before it can submit invoices. The OTP for onboarding is retrieved from the Fatoora portal and differs by environment: Sandbox uses a pre populated OTP, while Simulation and Production require the correct portal for each. Missing journal onboarding stops invoice synchronization entirely.

Journal onboarding pre-flight — check before each journal:
Company information complete: legal name, VAT number, full Saudi address
Correct API mode selected for the environment (Sandbox, Simulation, or Production)
Sales journal opened and ZATCA tab checked in Odoo
OTP retrieved from the correct Fatoora portal for the selected environment
OTP entered and onboarding confirmed in Odoo
Test invoice created, confirmed, and API response reviewed in the chatter
Process repeated for every sales journal used in your operation

Decision Guide

Native Odoo vs Third Party ZATCA Modules

Native Odoo Saudi localization covers standard ZATCA e invoicing workflows for most businesses. Customisation or third party modules are needed when your POS, multi branch structure, approval flows, or external system integrations fall outside the standard localization scope.

Native Odoo is usually sufficient when:
  • You use standard Odoo Accounting and invoicing flows
  • Saudi localization is clean and company data is complete
  • Invoice flows match Odoo standard processes
  • All sales journals can be onboarded without custom logic
  • No custom approval or special integration is needed before ZATCA submission
Customisation or third-party modules may be needed when:
  • Complex POS flows or retail-specific invoice formats are required
  • Multi-company or multi-branch journal structures are in use
  • Custom approval workflows before ZATCA submission are needed
  • Integration with external ERP, WMS, marketplace, or POS systems is required
  • Industry-specific invoice data or custom dashboards are needed

If your ZATCA workflow includes custom approvals, POS edge cases, or external system data, Odoo customization services may be needed beyond standard Saudi localization. For businesses connecting Odoo with external ERP, POS, marketplace, or WMS systems, Odoo integration services help ensure invoice data reaches Odoo correctly before ZATCA submission.

Find Your Odoo ZATCA Implementation Path

Answer three questions to receive a recommended ZATCA implementation path with next steps and what to avoid matched to your invoice scope, current stage, and setup complexity.

Saudi Localization Setup

Use this path when your Odoo ZATCA setup has not started yet. Begin with company data, Saudi localization, VAT settings, invoice templates, and sandbox testing.

  • Configure Saudi localization and VAT.
  • Test XML, QR code, and invoice output.
  • Move to Simulation after sandbox passes.

Simulation Ready Configuration

Use this path when sandbox testing is complete and your team needs live like validation before production.

  • Duplicate the live database.
  • Onboard journals in Simulation mode.
  • Test standard, simplified, credit, debit, and POS flows.

Production Readiness Review

Use this path when Simulation testing is complete and the business is preparing to issue live ZATCA invoices.

  • Confirm all company and journal data.
  • Switch Production mode only on the live database.
  • Monitor first live invoice responses in Odoo chatter.

Custom ZATCA Configuration Review

Use this path for complex POS, multi branch, external ERP, WMS, marketplace, or custom approval workflows.

  • Map invoice sources and journal structure.
  • Define custom scope before testing.
  • Run integration tests before Production.

Troubleshooting

Common Odoo ZATCA Errors and Fixes

Most ZATCA errors in Odoo originate from incomplete company data, incorrect journal onboarding, or invalid invoice fields rather than software defects. Each error type has a clear prevention step that should be completed during Simulation testing.

Error TypeCommon CauseHow to Prevent
Company validation errorMissing legal name, VAT number, or addressComplete company master data before journal onboarding
Journal onboarding failureWrong OTP or wrong Fatoora portal usedUse the correct portal for the selected API mode
Invoice rejectionInvalid buyer VAT, address, or invoice fieldsValidate customer and tax data before confirmation
QR code issueInvoice PDF or localization settings incompleteTest invoice PDF output before production go-live
XML validation errorMissing mandatory field or invalid tax mappingTest multiple invoice types in Simulation mode first
API response warningZATCA accepts invoice but flags a data issueReview the warning, correct root cause, and monitor
Simplified invoice reporting issuePOS or simplified invoice not configured correctlyTest POS receipts and reporting flow before go-live
Production sync failureSandbox setup not correctly replicated to productionUse a duplicated live database for Simulation testing

Recurring API rejections, journal onboarding failures, or QR code issues should be resolved through a structured process with clear escalation not one off fixes. Post go live Odoo support ensures errors are diagnosed, documented, and resolved before they affect production invoices.

Readiness

Odoo ZATCA Readiness Checklist

Work through all four groups before submitting any live ZATCA invoices. Each item should be confirmed in Simulation before switching to Production. Finance teams should also review ZATCA e invoicing controls before final approval.

Company Setup

Saudi Arabia localization installed
VAT number added and verified
Legal company name complete
Full Saudi address entered
Commercial registration details checked where required

Invoice Setup

Invoice sequence configured
Taxes mapped correctly for VAT treatment
Customer data complete including VAT numbers where required
Invoice template reviewed and QR code visible

ZATCA API Setup

Correct API mode selected (Sandbox / Simulation / Production)
All sales journals onboarded with OTP from correct Fatoora portal
OTP process confirmed and journal connection verified
Sandbox test passed and API response reviewed
Simulation test passed on duplicated live database
Production readiness approved before mode switch

Testing Scenarios

B2B standard invoice (clearance) tested
B2C simplified invoice (reporting) tested
Credit note and debit note tested
POS receipt and QR output tested where applicable
Rejected invoice scenario tested and recovery process defined
Accepted-with-warning scenario reviewed and root cause noted
Arabic and English invoice layout verified if required

Implementation

Odoo ZATCA Step by Step Implementation Roadmap

A structured ZATCA implementation covers localization, master data, API setup, journal onboarding, simulation testing, production go live, and team training in sequence. Compressing or skipping stages increases rejection risk on live invoices.

1
Confirm ZATCA scope

Determine VAT registration status, Phase/wave applicability, invoice types (standard, simplified, or both), POS use, and number of sales journals to onboard.

2
Configure Saudi localization

Install Saudi Arabia localization, configure VAT, complete company information (legal name, VAT number, full address), and set invoice templates.

3
Prepare master data

Review customers, VAT numbers, addresses, products, tax mapping, and journal configuration before any sandbox testing.

4
Configure ZATCA API mode and onboard journals

Select Sandbox, retrieve the correct OTP from Fatoora portal, onboard each sales journal, run a test invoice, and review the API response in the Odoo chatter.

5
Test in Simulation / Pre-Production

Duplicate the live database, switch to Simulation mode, onboard journals again using the Simulation portal OTP, and test all invoice types: standard, simplified, credit note, debit note, and POS receipt.

6
Move to Production

On the live production database only, switch to Production mode, onboard production journals with the Production Fatoora OTP, and monitor the first live invoices and their ZATCA responses closely.

7
Train finance, POS, and IT teams

Define who issues invoices, who reviews ZATCA responses, who handles rejections and warnings, and what must not be edited after invoice submission.

Post Go Live

What to Avoid After Odoo ZATCA Go Live

These are the most common post go live mistakes that create ZATCA compliance risk after production invoicing begins. Each is preventable with clear team processes defined before go live.

What to avoid after ZATCA go live

  • Editing invoice-critical fields (VAT, buyer data, amounts) after ZATCA submission
  • Using Sandbox or Simulation mode in the production database
  • Onboarding only one journal when multiple sales journals are in use
  • Ignoring accepted-with-warning API responses — investigate and correct root cause
  • Bypassing Odoo invoice flow with manual invoices that skip ZATCA submission
  • Changing invoice templates without retesting QR code output and API response
  • Pushing POS receipts live without completing simplified invoice testing in Simulation
  • Treating Simulation invoices as legally valid or sharing them with buyers

Team Responsibilities

Finance, IT and Odoo Admin Responsibilities

ZATCA compliance is not only a finance or IT task. Define ownership across all five roles before go live to prevent gaps in invoice handling, API monitoring, and escalation.

FinanceOdoo AdminITPOS / RetailManagement
VAT data accuracy, invoice correctness, credit and debit notes, ZATCA response review, compliance reportingSaudi localization, journal onboarding, API mode, user permissions, OTP management, invoice template reviewExternal system connections, API monitoring, database backups, logs, ZATCA error escalationSimplified invoices, receipt QR codes, daily POS reporting checks, ZATCA response awarenessGo-live approval, compliance ownership, escalation process, wave applicability confirmation

How SDLC Corp Helps

How SDLC Corp Helps with Odoo ZATCA Implementation

SDLC Corp helps Saudi businesses configure Odoo for ZATCA e invoicing, including Saudi localization setup, VAT configuration, sales journal onboarding, invoice template review, QR code validation, sandbox and simulation testing, production readiness, POS and simplified invoice scenarios, external system integrations, and post go live support.

Saudi localization and VAT configuration
ZATCA Phase 2 API setup and journal onboarding
Sandbox and Simulation testing
Invoice template and QR code review
POS and simplified invoice configuration
Production readiness and go-live support

FAQ

Frequently Asked Questions

Yes. Odoo's Saudi Arabia localization supports ZATCA e invoicing workflows including Sandbox, Simulation/Pre Production, and Production modes when company information, sales journals, API modes, and invoice settings are configured correctly.

ZATCA Phase 2 is the Integration phase. ZATCA states it is rolled out in waves and introduces technical and business requirements plus integration between e invoicing solutions and ZATCA systems. Phase 2 began from 1 January 2023 and applies in waves by targeted taxpayer group.

Standard invoices are used for B2B transactions and follow a clearance flow where applicable. Simplified invoices are used for B2C and retail transactions and follow a reporting flow. Both have different ZATCA API responses and must be tested separately before production.

Odoo's Saudi localization supports QR related e invoicing workflows where the invoice template, ZATCA configuration, API mode, and journal onboarding are configured correctly. QR code output should be tested before production go live.

Sandbox is for early setup testing with a test VAT number. Simulation/Pre Production is for live like testing on a duplicated database invoices are not legally valid. Production is for real invoice synchronization with ZATCA on the live database.

Not always. Native Odoo Saudi localization is sufficient for standard invoicing workflows. Customisation or third party modules may be needed for complex POS scenarios, multi branch journal structures, custom approval flows, or external system integrations.

Test standard B2B invoices, simplified B2C invoices, credit notes, debit notes, POS receipts where applicable, QR code display, API responses (cleared, reported, warning, rejected), each sales journal, and the rejected invoice recovery process.

Your finance team, tax advisor, or a qualified Saudi VAT consultant should verify phase/wave applicability, current ZATCA technical requirements, and compliance deadlines before production go live. ZATCA rules and deadlines can change.

Saudi Arabia Odoo Specialists
Planning an Odoo implementation in Saudi Arabia?

Start with correct VAT setup, journal onboarding, sandbox testing, simulation validation, and production readiness before issuing live ZATCA invoices.

Talk to an Odoo expert

ABOUT THE AUTHOR

aaron jone

Aaron Jone is an Odoo expert with 12 years of experience in enterprise software. At SDLC Corp, he helps companies improve efficiency by customizing and deploying Odoo solutions that align with core business needs. Aaron focuses on streamlining workflows, integrating systems, and building tools that support real-time visibility and better control across operations.
PLAN YOUR SOLUTION

More Insights
You Might Find Useful

Explore expert perspectives, practical strategies, and real-world solutions related to this topic.

Odoo India GST dashboard showing GST invoicing, e-invoicing, e-way bill generation, and GST compliance workflows in Odoo ERP.

Odoo India GST, E-Invoicing and E-Way Bill Guide

Indian businesses implementing Odoo need more than a standard accounting

odoo assets

How To Manage Assets Effectively With Odoo Erp

Introduction Efficient asset management is critical for every organization aiming

On-Demand Quotation Wizard in UAE: Custom Odoo Solution

On-Demand Quotation Wizard in UAE: Custom Odoo Solution

Introduction In today’s fast-paced business environment, efficiency is key, especially

Let’s Talk About Your Product

Get expert guidance on scope, architecture, timelines, and delivery approach so you can move forward with confidence.

What happens next?