Accounting and E-Invoicing Software in Saudi Arabia: Build, Odoo or Buy
What a ZATCA-ready accounting setup needs, which path fits your business, and when a ready-made product is enough. We quote by what you need.
A ZATCA-ready accounting setup has to issue Arabic tax invoices and connect to ZATCA's Fatoora platform. You can get there by keeping your current system if the vendor confirms phase two in writing, moving to Odoo accounting, or building the connection into your own system. This page compares the three, shows what Odoo already includes and says plainly when a ready-made product is enough.
Devvista is a software development company and an official Odoo partner. Ready to talk? Contact us.
What a ZATCA-ready accounting setup has to do
ZATCA's roll-out page splits e-invoicing into two phases. Phase one, generation, has been enforceable since 4 December 2021: taxpayers must create and keep e-invoices and related notes with an electronic solution. Phase two, integration, has been enforceable since 1 January 2023 and is rolled out in waves by taxpayer group, so your accounting software must connect to ZATCA's systems, not just print a PDF. ZATCA says it notifies taxpayers of their wave at least six months in advance. Source: ZATCA roll-out phases.
For wave 25, ZATCA's notice of 24 July 2026 includes every taxpayer whose revenue subject to VAT exceeded SAR 187,500 in 2022, 2023, 2024 or 2025, and the integration date is no later than 1 February 2027 (ZATCA Wave 25 notice). Our own guides cover the date in detail: ZATCA Wave 25: what to do before 1 February 2027 and the Wave 25 checker.
In practice, a Saudi accounting system that is ready for phase two does five jobs. In the table, the first column is the job and the second is what to ask of any system, ours or anyone else's.
| Job | What to ask the system |
|---|---|
| Issue tax invoices and simplified invoices | Does it produce both types, in Arabic, with the QR code? |
| Connect to Fatoora | Is there a module or integration that submits invoices to ZATCA, and from which date does your version support it? |
| Handle B2B and B2C differently | Odoo's documentation describes B2B sales going through clearance and B2C sales being reported. Ask how your system treats each. |
| Deal with rejection | A rejected invoice is not legally valid. Who sees the rejection, and how is it corrected and resubmitted? |
| Credit and debit notes | Each note needs a ZATCA-approved reason. Can the system record it and link the note to the original invoice? |
Evidence label: the phases and dates are Fact (ZATCA pages above); the five jobs are our own summary of what those pages and Odoo's documentation describe.
Three ways to get there: existing system, Odoo, or a custom build
There is no single right answer, and we would rather say so than sell you a rebuild. Which path fits depends on what issues your invoices today and how much your process differs from a standard one.
| Path | Fits when | Watch out for |
|---|---|---|
| Keep your current system and ask the vendor to confirm phase two | One company, one or a few branches, standard invoicing, and the vendor confirms phase-two support and its date in writing | A verbal "we are ready". Test with real invoices on a copy before the deadline. We do not recommend vendors by name here because we have not verified any of them |
| Move to Odoo accounting | You also want inventory, sales, purchasing and reporting in one system, or your current tool cannot connect to Fatoora | Data migration and the per-journal onboarding. See Odoo ZATCA e-invoicing and Odoo implementation in Saudi Arabia |
| Build the connection into your own system | You already have a custom or older system that fits your business, and replacing it would cost more than connecting it | You own the Fatoora connection: onboarding, rejection handling and ZATCA changes. See custom software in Saudi Arabia |
Devvista is an official Odoo partner and a software development company. That is why the second and third rows are work we do. It is also why we say the first row can be the right answer: if your vendor is ready, you may not need us.
What Odoo already includes for Saudi accounting
Odoo's Saudi documentation (version 19) lists a set of localisation modules. Source: Odoo Saudi Arabia documentation.
| Module | What the documentation says it does |
|---|---|
| l10n_sa | Default fiscal localisation package for Saudi Arabia with phase-one QR code support, with a chart of accounts aligned with Saudi regulations |
| l10n_sa_reports | Accounting reports |
| l10n_sa_edi | Enables ZATCA phase-two API integration for e-invoicing compliance |
| l10n_sa_edi_pos / l10n_sa_pos | Simplified e-invoicing through the point of sale, and compliance fields for point-of-sale invoices |
| l10n_sa_withholding_tax | Withholding tax on payments |
The documentation also states that standard VAT is 15%, that the company needs a VAT number, that the currency must be SAR and that the company name is limited to 63 characters. Tax invoices, simplified tax invoices and their credit and debit notes must be issued in Arabic, and English can be added to make the invoice bilingual.
Three behaviours matter for planning. Each sales journal is onboarded separately, with a one-time password from the Fatoora portal that expires after 60 minutes. Invoices made in simulation (pre-production) mode are not legally valid. And once an invoice is submitted in production, the mode cannot be switched back to sandbox or simulation, so rehearsal on a copy of your database comes first.
Where a SaaS tool is enough, and where it is not
A ready-made accounting or invoicing product is the right choice for many small Saudi businesses, and we will say so on a first call. It is enough when all of these are true:
- one legal entity and a handful of users;
- your invoices are standard: no unusual numbering, approvals, multi-currency or project billing;
- the vendor confirms phase-two support in writing, with the date it applies to your plan;
- you do not need the accounts to talk to stock, delivery, payroll or an online store.
It stops being enough when invoices come from several systems (a point of sale, an online store and a spreadsheet at once), when branches each issue their own invoices, when you need approvals or rules a product will not bend to, or when ZATCA data has to flow into other software. Then the question is no longer which accounting product, but where invoices are born and how each source reaches Fatoora. That is the project we quote.
On 7 November 2026 a Google search in Saudi Arabia, in Arabic, for "برنامج محاسبة" showed only ready-made accounting products on the first page (Alostaz, Odoo, Wafeq, Qaema, Madara, Aliphia, Asl.sa and an app listing). That is a useful signal: if a product fits you, buy it; we write for the buyer whose case does not fit one.
A readiness checklist you can use today
Whichever path you take, these are the questions that decide the work. Answer them before you ask anyone for a quote, including us.
- Which systems issue invoices today: an accounting product, an ERP, a point of sale, an online store, a spreadsheet?
- How many branches, sales journals or tills issue invoices? In Odoo, each sales journal is onboarded on its own.
- Are your customers' VAT numbers, names and addresses complete and correct? Odoo's documentation says all fields must be completed accurately to avoid rejection, and cleaning data takes time.
- Do you issue invoices in Arabic, with English added where needed?
- Who in your company holds the Fatoora portal login that produces the one-time password?
- Which wave are you in, and what does the notice from ZATCA say? Only that notice decides your date.
- Can you rehearse on a copy of your data before anything goes live?
Then run the Wave 25 checker to compare your revenue with ZATCA's published criterion. It is a Devvista tool, not an official one.
How we work on an accounting project
The process is the same whether the system is Odoo or your own. It is how we already work, not a package.
| Step | What happens | What you see |
|---|---|---|
| 1. Scoping call | We list the systems that issue invoices, branches, journals, versions and data problems | A written scope and an estimate |
| 2. Staging copy | We work on a copy of your system or database, never on live invoices first | A staging site you can open |
| 3. Configure or build | Modules, onboarding, Arabic invoice layout, rules for credit and debit notes, rejection handling | A demo every week |
| 4. Data clean-up and rehearsal | Missing VAT numbers and names fixed; test invoices across B2B, B2C, credit notes and rejection cases | A list of what was fixed and what still fails |
| 5. Go live and hand over | Production switch with you present; documentation and code handed over | Documentation, access and the code that is yours |
Tell us your case and we will say honestly whether we are the right fit.
What changes the cost
Each quote is written for the need after a short scoping call, so we do not publish packages. These are the drivers, in the order they usually matter:
| Driver | Why it moves the estimate |
|---|---|
| Number of journals, branches and tills | Each sales journal is onboarded and tested separately |
| Starting system | Our view: Odoo with native Saudi modules is mostly setup; an older or custom system needs the connection built |
| Data quality | Odoo's documentation says all fields must be completed accurately to avoid rejection, so incomplete customer and tax data can cause rejected invoices |
| Arabic layout and custom invoice rules | Layout, approvals and numbering rules need design and testing |
| Other systems that must feed or read invoices | Each integration is its own piece of work |
Our published ranges are a fixed price from $500 to $100,000 depending on complexity, or $10 to $100 per hour depending on the developer's type and level, in US dollars. As an illustration only, at $40 an hour every 10 hours of work is $400. That is an estimate, not a quote. For the Odoo side of the budget see ERP implementation cost in Saudi Arabia.
Where Devvista fits
Devvista is a software development company and an official Odoo partner, working in English and Arabic. For the wider Odoo project see our Odoo ERP implementation page; for older and custom systems, software development in Saudi Arabia; and in English only, our global Odoo implementation service and work pages.
Ready to talk? Contact us with the system that issues your invoices and the number of journals. We will reply to you.
Contact Devvista
Our address, phone and opening hours.
Amna Bint Wahb St, road, Jeddah 23622, Saudi Arabia
- SundayOpen 24 hours
- MondayOpen 24 hours
- TuesdayOpen 24 hours
- WednesdayOpen 24 hours
- ThursdayOpen 24 hours
- FridayClosed
- SaturdayClosed
Tell us the system that issues your invoices and the number of journals and we will send an estimate. Get an estimate.
Straight Answers.
Services
Custom Software DevelopmentAI & AutomationSaaS DevelopmentCRM DevelopmentOdoo Implementation & DevelopmenteCommerce DevelopmentDedicated Development TeamsWordPress DevelopmentUI/UX DesignSEO ServicesIT Staff AugmentationWhite Label DevelopmentGuides
ZATCA e-invoicing for OdooSoftware development for Saudi ArabiaZATCA Wave 25Wave 25 CheckerContact and bookingOdoo ERPERP Cost GuideAccounting and e-invoicingLogistics softwareWebsite DevelopmentMobile App DevelopmentHire developers for Saudi ArabiaHire .NET developers for Saudi ArabiaAI Chatbots and AutomationOnline Store DevelopmentContracting softwareManufacturing ERPWholesale and distributionHire Odoo developers for Saudi Arabia Case Studies Devvista BlogTell us the system behind your invoices
Tell us what issues your invoices and how many journals or branches you have. We will say honestly whether you need us, and quote the work in writing.
- 30-minute consultation
- No commitment required
- Response within 24 hours
- Book a call30 minutes with the team.
- Get a clear planSteps, timeline and a cost range for your setup.
- DecideGo ahead with us, or take the plan with you.