Odoo for Saudi Arabia: VAT, Arabic, E-Invoicing and Local Setup
Odoo documents a Saudi localisation with VAT taxes, Arabic invoice support and ZATCA e-invoicing modules. See what each part does, what to set on the company, where data can be hosted and what to ask a partner.
DEBy DevMarket Editorial·Published: ·9 min read
On this page
Odoo Saudi Arabia support comes in three parts: a country package with a Saudi chart of accounts and 15% VAT taxes, Arabic with right-to-left layouts, and the ZATCA e-invoicing modules for Phase 1 and Phase 2. This guide describes the Odoo KSA localization as Odoo's 19.0 documentation presents it, as of October 2026, and shows what to configure and what to ask a partner. It is general information, not legal or tax advice. Your business remains responsible for compliance, so confirm the current requirements with ZATCA and your accountant.
In short
Odoo documents a Saudi Arabia localisation with a chart of accounts, standard 15% VAT plus zero-rated and exempt taxes, fiscal positions, withholding taxes and a VAT and Withholding Return.
Odoo's page says Saudi tax invoices must be in Arabic, with English allowed alongside. A self-hosted server needs the rtlcss package for right-to-left screens.
Phase 1 comes with the l10n_sa module and Phase 2 with l10n_sa_edi. The documentation states no edition for them, so confirm with a partner.
Odoo's privacy policy lists Saudi Arabia as a production location of its Middle East region, with backups in Europe and Canada.
A module is not compliance: you still test, configure the company and follow ZATCA's current rules.
What does the Odoo KSA localization include?
You set Odoo up for Saudi Arabia in layers, in the order shown below, and its Saudi Arabia page lists the modules:
Set Odoo up in this order: country package, company data, language, then ZATCA testing before any live invoice.
Module
Technical name
What the documentation says
Saudi Arabia - Accounting
l10n_sa
Default package, with Phase 1 QR code support
Saudi Arabia - Accounting Reports
l10n_sa_reports
Accounting reports
Saudi Arabia - E-invoicing
l10n_sa_edi
ZATCA Phase 2 API integration
Saudi Arabia - E-invoicing (Simplified)
l10n_sa_edi_pos
E-invoicing through Point of Sale
Saudi Arabia - Point of Sale
l10n_sa_pos
Compliance fields for PoS invoices
Saudi Arabia - Withholding Tax
l10n_sa_withholding_tax
Installs Withholding Tax on Payment
The core modules install with the localisation, and you add the others from Apps. The package provides a Saudi chart of accounts, preconfigured taxes (standard 15% VAT, zero-rated and exempt), fiscal positions based on registration status, withholding taxes, and a VAT and Withholding Return that exports to Excel or PDF.
Which edition? The page does not say. In Odoo's public Community source on GitHub (19.0 branch, checked on 21 October 2026) we found l10n_sa, l10n_sa_edi, l10n_sa_pos, l10n_sa_edi_pos and l10n_sa_withholding_tax under the LGPL-3 licence, but not l10n_sa_reports. Odoo's editions page lists localisations and reports in its Enterprise-only Accounting row, so the sources do not line up neatly: ask a partner what your plan includes. Our Community vs Enterprise guide has the wider edition picture.
What must you configure on the company?
ZATCA onboarding can be rejected when company data is incomplete. Odoo lists these fields for the company record, and the same applies to the relevant contact forms, so check your customers too:
Company Name, at most 63 characters.
Every address field, including District, Building Number and Plot Identification.
The Identification Scheme (Tax Identification Number, Commercial Registration Number, Momra License, MLSD License, 700 Number or Sagia License) and the VAT Number.
Currency set to SAR.
For a branch, enter the parent's VAT Number on the branch contact and the branch's Commercial Registration Number in Identification Scheme. Bill through the parent's sales journal, or onboard a journal per branch.
Does Odoo support Arabic and right-to-left layouts?
Largely yes, but check the result yourself. Odoo's documentation covers three points:
Language. Add Arabic in the Settings app (Languages > Add Languages), then set the Language field on the customer form (Accounting > Customers > Customers): Odoo generates that customer's documents in it.
Arabic on invoices. The Saudi page says VAT rules require tax invoices, simplified tax invoices and their credit and debit notes to be in Arabic, and allows bilingual invoices with English. To add Arabic as a second language, enable Gulf Cooperation Council Format in Accounting > Configuration > Settings (Customer Invoices), and in Point of Sale > Configuration > Settings (Bills & Receipts) for receipts.
Right-to-left layout. On your own server, the source-install guide says Arabic needs the rtlcss package. Our Ubuntu guide shows where it fits.
The documentation does not promise that every screen, report or third-party module looks right in Arabic, so print a real invoice, credit note and point-of-sale receipt and check direction, numbers, fonts and the QR code. Our right-to-left checklist helps.
How does ZATCA e-invoicing work in Odoo?
Phase 1, compliant invoices with a QR code, comes with l10n_sa. Phase 2, the integration with ZATCA's platform, comes with l10n_sa_edi, and l10n_sa_edi_pos covers Point of Sale. ZATCA sets the dates and the waves, as our Phase 2 guide explains. In Odoo's description, a business-to-business sale produces a Tax Invoice that ZATCA clears, and a business-to-consumer sale produces a Simplified Tax Invoice with a QR code, reported to ZATCA's Fatoora endpoint.
Odoo onboards in three modes, set in Accounting > Configuration > Settings (Saudi Arabia Electronic Invoicing, ZATCA API mode):
Mode
Purpose
Legally valid
Sandbox
Shared, pre-configured test environment
No
Simulation (Pre-Production)
Your own test, on a duplicate of the live database
No
Production
Live environment
Yes
Onboard every sales journal separately: Accounting > Configuration > Journals, Sales journal, ZATCA tab, Onboard, then enter the 6-digit one-time password (OTP) from ZATCA's Fatoora portal (it expires after 60 minutes; the sandbox pre-fills it). After confirming an invoice, click Process now and check for Action Successful. In the chatter, green means accepted, yellow accepted with warnings (fix them, as warnings may become rejections) and red rejected, which is not legally valid until you correct the cause and click Retry. Once a Production database has submitted an invoice, it cannot return to Sandbox or Simulation. For point of sale, install l10n_sa_edi_pos, onboard the PoS's default invoice journal and assign a customer to every order.
A module is not compliance. The documentation cannot tell you your wave or whether your setup meets ZATCA's current rules. Test your real invoice flows, and have your accountant confirm your position against ZATCA's e-invoicing page.
Where can your Odoo data be hosted?
Route
What Odoo says
Notes
Odoo Online
Private databases hosted and managed by Odoo
The SLA page lists five regions, including a Middle East one. No custom or Apps Store modules
Odoo.sh
Odoo's cloud platform, with a Hosting location chosen when you create the project
Needs an Enterprise subscription that includes Odoo.sh
Your own server
You install and run Odoo
Any location you choose. You handle security, backups and updates
Odoo's privacy policy says a database is hosted in the cloud region closest to the customer and can be moved on request, subject to availability. It lists India and Saudi Arabia as production locations for its Middle East & Southern Asia region, with backups in Europe and Canada that you cannot choose or restrict. These can change, so confirm them with Odoo. Whether that suits your data, or whether ZATCA or other rules say where invoice records must be kept, is a question for your lawyer and accountant.
What should you ask an Odoo partner in Saudi Arabia?
Odoo lists implementation partners by country on its partners page. Ask each one, and get the answers in writing:
Which Odoo version and edition do you propose, and what does it include for Saudi reports and e-invoicing?
Which Saudi companies are live on ZATCA Phase 2 with that version, and can I speak to one?
Who handles onboarding and certificate renewals, and who updates the modules when ZATCA changes a specification?
How will you test in Sandbox and Simulation, using my invoice types, credit notes and refunds, and where will the database and backups be hosted?
Setup checklist for a Saudi company
Ask your accountant to confirm your VAT status, invoice types and e-invoicing wave, and choose the Odoo version, edition, app and hosting. The accounting guide shows how Invoicing and Accounting differ.
Create the database with Saudi Arabia as the country, check the Package and set the currency to SAR.
Complete the company record: name, address fields, Identification Scheme, VAT Number and branches.
Add Arabic, set customer languages, enable Gulf Cooperation Council Format and print test invoices.
Activate the taxes you use, set them on products and, as Odoo's page advises, apply a 15% tax to any global discount line.
Check that l10n_sa_edi is installed, then test in Sandbox and in Simulation on a duplicate database.
Onboard each sales journal in Production only when your partner and accountant agree, then watch the responses.
Teach staff to correct issued invoices with credit and debit notes, choosing the ZATCA Reason, not by editing them.
Frequently asked questions
Does Odoo support ZATCA Phase 2?
Odoo's documentation describes a Phase 2 integration module, l10n_sa_edi, with Sandbox, Simulation and Production modes. Compliance also depends on your wave, data, setup and ZATCA's current rules, so test and confirm with ZATCA and your accountant.
Can Odoo print invoices in Arabic?
According to Odoo's page, tax invoices must be in Arabic, with bilingual invoices allowed. Use the customer Language field and the Gulf Cooperation Council Format option, then print a real invoice and check it.
Which Odoo version should I use?
Odoo's version table lists 20.0 as released in September 2026, with 19.0 in standard support until September 2028 (planned). On 21 October 2026 the Saudi Arabia page was identical in the 20.0 documentation. Ask your partner to confirm ZATCA support for your version.
What if ZATCA rejects an invoice from Odoo?
Odoo shows ZATCA's response in the invoice's chatter. A rejected invoice is not legally valid, so correct the cause and click Retry.
Compare the three Odoo hosting options from Odoo documentation: what each allows, who runs what, which editions fit, where data sits, what costs to expect and how to move between them.
An Odoo implementation is a project, not an installation. Follow the phases from scope to go-live, see who does what, decide between a partner and doing it yourself, and use a go-live checklist.
Odoo Studio changes Odoo without code; custom modules add code. See what each can do, which edition and hosting allow them, what upgrades mean for both, and how to decide by need.
·9 min read
Find the right software for the job
Every item on DevMarket has a human-reviewed release, an instant licence key and clear update and support terms.