Contact Info
How should a Saudi service company set up Odoo Projects?
A Saudi consultancy or IT integrator should design Odoo Projects around how its contracts are accepted and paid: deliverable milestones with client acceptance, advance payments, and timesheets on a Sunday to Thursday week. Every project invoice and credit note must still pass through the compliant ZATCA flow. I design this remotely and independently, with fully loaded staff costs for honest margins and a clear view of when contracting work needs other software.
Last reviewed by Vikas Saroj
In the Kingdom, a service project is rarely paid on hours alone. Consultancies, system integrators and engineering firms working for ministries, semi-government bodies and large private groups are paid against accepted deliverables, often after an advance, and the acceptance document matters as much as the invoice itself.
Odoo can tie the contract, the work and the e-invoice together, provided the billing triggers, the approval evidence and the ZATCA invoice flow are designed as one. Project managers then know what can be invoiced, finance knows what has been accepted, and nobody issues a tax invoice before the client has signed off.
I am an independent consultant and work with Saudi teams remotely, holding live sessions on Arabia Standard Time from Sunday to Thursday. I can guide your configuration directly or sit alongside the implementer you have chosen, reviewing their design against the contracts your business actually signs.
Each item is built around how Saudi clients accept work and how ZATCA expects the resulting invoices to be produced.
I read your contracts and payment schedules and convert each deliverable, advance and recurring service into Odoo milestones and service products that invoice only on the agreed trigger.
A project stage and document rule so a milestone cannot be marked reached until the client's acceptance certificate or signed minutes are attached and reviewed.
Down payment invoices, milestone invoices and credit notes generated from projects tested through your ZATCA setup, so customizations never route an invoice around compliance.
Hourly costs per employee that can include allowances, social insurance, residency and end-of-service provisions where finance wants them, so project margins reflect what staff really cost.
Timesheet weeks, working hours and public holidays set for a Sunday to Thursday pattern, with capacity planning that accounts for shorter working hours during Ramadan.
Project names, milestone descriptions and customer portal content in Arabic and English, so documents shared with government-linked clients read correctly in both languages.
Contracts, clients and compliance
Milestones, costs and calendar
Live billing with oversight
Payment terms in Saudi service contracts tend to follow deliverables: an inception report, a design package, a system go-live, a handover. Many contracts add an advance payment recovered across later invoices, and some hold back part of each payment until final acceptance. Government and semi-government clients usually pay only after their own acceptance procedure, which can involve committees and signed certificates.
Odoo models the commercial side well when it is set up deliberately:
The underlying billing types are described on the Odoo Projects page. Here the focus is on making them match how Saudi clients actually accept and pay for work. For sector context see my pages on engineering firms and IT services.
Every invoice a project produces is a tax invoice, which means it must come out of the same compliant e-invoicing process as the rest of your billing. In practice that includes down payment invoices, milestone invoices, time and materials invoices and the credit notes issued when a milestone is reversed or a rate is corrected.
Project setups are where compliance most often breaks quietly. A developer adds a custom button to invoice milestones in bulk, or an integration creates invoices from an external timesheet tool, and the documents bypass the clearance or reporting step your business is subject to. My checks before go-live cover:
I do not advise on VAT treatment or on which e-invoicing obligations apply to you; your tax advisor confirms those. ZATCA onboarding, the fiscal localization and the VAT return sit with the ledger and are covered on my Odoo Accounting page for Saudi Arabia.
Timesheet design in the Kingdom starts with the calendar. The working week runs Sunday to Thursday, public holidays follow the official calendar, and working hours are shorter during Ramadan for many staff. Capacity and resource planning built on a default calendar will overstate available hours, so I set working schedules and leave types to match how your people actually work.
Cost is the second issue. A project's margin is only meaningful if each hour is costed at what the person really costs. For many Saudi employers that goes well beyond basic salary: housing and transport allowances, social insurance contributions, residency and work permit costs for expatriate staff, and end-of-service provisions. Finance decides which of these belong in project cost; I load them into employee cost rates so the profitability view is honest.
Groups operating through several commercial registrations, or with branches in different cities, also need analytic plans that show margin by entity, region and client, with recharges where staff from one company deliver another's contract. Contracts are mostly in riyals, but some international clients pay in dollars or euros, and I agree the currency rule for margin reporting with finance.
Before designing a formal approval route, confirm that your edition includes timesheet validation, since Community setups are lighter here.
A large share of project-style work in Saudi Arabia continues after go-live as a support or operations contract: application support for a system integrator, maintenance for a facilities provider, or managed services for a technology firm. These are often governed by service levels written into the contract and reported to the client monthly.
Odoo can link that phase to the original project where your edition includes the right apps. Helpdesk can hold tickets with response and resolution targets and log time against a support contract. Field Service can schedule technician visits, capture worksheets and customer signatures, and pass hours and materials to invoicing. Recurring contract fees can be billed through Subscriptions or recurring lines. Features vary by version, so I verify them against your service level commitments before relying on them.
Where a government client requires reports in a particular template, or tickets must be raised in the client's own system, I plan an export or integration early rather than assume the standard Odoo report will be accepted. For the operations perspective on this problem, see ERP for service management.
Saudi contractors work under different mechanics. Larger contracts are often based on FIDIC-style conditions, with monthly progress payments certified by the engineer, retention held on each certificate, advance payments secured by bank guarantees and recovered over time, and variations that need their own approval trail. Subcontractor payments follow the same certified pattern. Odoo can manage the projects, procurement, equipment and timesheets around this, and milestones can mimic a very simple claim, but measured progress against a bill of quantities, retention tracking and variation management fall outside the standard apps; contractors typically rely on extra modules, tailored development or software designed for contracting.
If you are a contractor rather than a consultancy, read my construction ERP page for Saudi Arabia and compare options before committing, with retention and VAT questions confirmed by your advisor.
Where Odoo fits, I can design the project billing model, check an implementer's proposal against your contracts or recover a setup that no longer reconciles. Platform-level guidance is on my Odoo consulting page for Saudi Arabia, my Saudi ERP consulting page and the Saudi Arabia hub. Many engagements start with an ERP solution design.
Tell me about your business and current systems. I’ll suggest the most sensible first step.
Book a Consultation
Not sure which ERP you need?
Share your business requirements with me and I will help you understand the right process, architecture and platform before implementation.
Yes, with a deliberate setup. A project stage and a required acceptance document can control when a milestone is marked reached, which is what triggers the invoice. The exact method depends on your version and whether you allow small customizations. I design it so the rule is clear to project managers and auditable for finance.
They should, because they are tax invoices like any other. The risk lies in customizations or integrations that create invoices outside the standard flow. I test every project billing route, including down payments and credit notes, through your configured ZATCA setup before go-live. Your tax advisor confirms which obligations apply to you.
Through employee cost rates. Finance decides which costs belong in project cost, such as allowances, social insurance, residency and end-of-service provisions, and those are built into each person's hourly cost. Timesheets then carry that cost into project profitability automatically.
Yes. Working schedules, public holidays and leave types can be configured to match the Saudi week and calendar, including reduced hours during Ramadan. I set these early so capacity planning and missing-time reports are accurate from the first week.
Only after a careful comparison. Certified progress payments, retention, advance recovery and variations are not standard Odoo Project features in most setups. Add-ons or customization can help, but a construction-focused system may fit better. I review both independently.
Every business is different. Share where you are today and what you want to fix, and I’ll tell you honestly whether and how I can help.
Book a Consultation
Book a consultation to talk through your processes, systems and goals. I’ll reply with practical next steps - no obligation.