A job looks profitable every month until the final account, when unpriced variations, forgotten retention and late subcontractor bills land together. Construction ERP software for a UAE contractor should show cost against budget per project every week, raise progress invoices from certified values and track retention until it is paid.
Devvista is a software development and growth agency and an official Odoo partner that sets up Odoo as a construction ERP for UAE contractors, fit-out companies and MEP subcontractors. Below: why margins vanish, five fix steps in Odoo, the e-invoicing angle, how to measure progress and where Odoo is the wrong choice.
Why contractor margins vanish between tender and final account
Margins leak in small amounts that nobody sees until the project closes, because the numbers sit in different places: the QS valuation in Excel, purchase orders in email, timesheets on paper and the ledger in an accounting package.
Find your own cause:
- If project reports only show costs once bills are posted, you are missing committed cost.
- If finance and the QS disagree on what was billed, claims are typed from a spreadsheet, not generated from the contract.
- If retention is a column in someone's workbook, releases get missed at practical completion and again at the end of the defects period.
- If labour and plant sit in overheads, every project looks better than it is, and the next tender is priced on wrong data.
- If variations are agreed on site by phone, some are never invoiced.
What construction ERP software must do that accounting software cannot
Accounting packages such as Tally, QuickBooks or Zoho Books record what happened. A construction ERP links each cost and invoice to a contract, a cost code and a budget while the job is still running.
| Need on a UAE project | Typical accounting package | Odoo set up as a construction ERP |
|---|---|---|
| Cost per project and cost head | Cost centres, added after posting | Analytic account per project, analytic plan for cost heads, defaulted on purchase lines |
| Committed cost | Not tracked | Budget report adds confirmed, unbilled purchase orders to actual cost |
| Progress claims | Manual invoice from the QS sheet | Milestone invoicing by percentage against the contract value |
| Retention receivable and payable | Spreadsheet | Configured retention lines and accounts, with a release report |
Step 1: Give every project a cost structure the system can report on
- Create one analytic account per project (or per contract if a project has several), named with the project code your site teams already use.
- Add a second analytic plan for cost heads: materials, labour, subcontract, plant, preliminaries. Keep it short enough that site teams fill it in correctly.
- Load the tender budget per project and cost head. In Odoo 19, analytic budgets show an Achieved column from posted entries and a Committed column that adds confirmed purchase orders not yet billed, and a purchase line that exceeds the budget is highlighted in red (Odoo budget documentation).
- Make the analytic distribution mandatory on purchase and bill lines, so nothing reaches the ledger without a project.
- Review the budget report weekly with each project manager.
Committed cost tells you a package is over budget when the order is placed, not months later when the bill arrives.
Step 2: Raise progress claims from the contract, not from a spreadsheet
Odoo bills by percentage through milestone invoicing: a service product set to Based on Milestones, with project milestones that each carry a percentage of the order value. Reaching a milestone updates the delivered quantity, and the invoice is created from the sales order (Odoo milestone invoicing).
- Enter the contract as a sales order, split into the sections your client certifies.
- Bill the advance payment as a down payment, which Odoo supports as a percentage or a fixed amount (Odoo down payments), and agree how it is recovered from each claim.
- Invoice the certified value, not the claimed value, with the certificate number on the invoice.
- Add each approved variation as its own order line; keep unapproved ones on a list that someone chases.
Step 3: Treat retention as money owed, not a note in Excel
We did not find a dedicated retention feature in Odoo's standard documentation, so retention is configured: a retention receivable account, a negative retention line on each progress invoice, and a report by project showing the amount held, the release trigger and the expected date. Subcontractor retention works the same way on the payable side.
Worked example (assumptions, not a client figure): a AED 4,000,000 subcontract with 10% retention in the contract terms. When 60% of the work is certified, AED 2,400,000 has been billed and AED 240,000 is held back. If half is released at practical completion and half after a 12-month defects period, finance has two dates to chase long after the site team has moved on.
One decision belongs to your tax adviser, not your ERP partner: when VAT becomes due on the amount held back. Settle it before the invoice lines are configured, because it decides whether the retention line carries VAT on each claim or only on release.
Step 4: Control subcontractors and site purchasing
- Approval limits by amount and project, from site engineer to commercial manager.
- Subcontracts as purchase orders with their own milestones, so each subcontractor application is checked against the certified percentage before it is paid.
- Back-charges as credit lines on the subcontract, plus retention payable on the same terms as your own.
- Site store receipts recorded on delivery, so supplier bills are matched to what arrived.
Running contracting and trading as separate companies in one database needs Odoo's Custom plan (Odoo pricing); see our Odoo pricing guide.
Step 5: Put labour and plant costs on the job
Labour often ends up in overheads because payroll runs monthly through WPS while work happens on several sites. Daily timesheets per project, entered by the foreman on a phone, post an hourly cost to each project. Payroll stays where it is; only the allocation changes.
Give each machine an internal daily rate and charge it to the project using it; allocate camp accommodation and transport by headcount. Payroll and WPS setup itself is covered on our Odoo implementation page for UAE businesses.
VAT, corporate tax and e-invoicing for UAE contractors
VAT in the UAE has applied at a standard rate of 5% since 1 January 2018 (Ministry of Finance). Corporate tax is 9% on taxable income above AED 375,000 (Ministry of Finance), which makes accurate project profit a tax question as well as a management one.
E-invoicing is the deadline contractors should plan around now. Businesses with revenue of AED 50 million or more must go live by 1 January 2027, with the deadline to appoint an Accredited Service Provider moved to 30 October 2026 (Ministry of Finance); businesses below that threshold appoint one by 31 March 2027 and go live by 1 July 2027 (KPMG). Every progress invoice and credit note becomes structured data your ASP must accept.
- Test a progress claim with advance recovery and retention lines in the ASP sandbox early; these are the invoices most likely to fail validation.
- Invoices inside one VAT tax group are excluded for 24 months from 1 January 2027 (Ministry of Finance).
- Odoo's own UAE e-invoicing module is not released at the time of writing; read how Odoo connects to a UAE ASP and check your dates in the e-invoicing deadline guide.
Odoo or a dedicated construction ERP: an honest comparison
Search results for construction ERP software in the UAE are mostly vendor pages for construction-only products. They make sense if your main pain is estimating, bills of quantities or planning.
Odoo suits contractors whose pain is the back office: cost control, billing, purchasing, stock, HR and finance in one database, including any trading or facility management division. Its core is open source, so you are not tied to one reseller. Its standard documentation does not describe a bill of quantities or estimating tool, so keep estimating where it is and import the awarded budget.
- Choose Odoo if you run several entities and need purchasing, stock and HR next to project cost.
- Choose a construction-only product if estimating is the core problem and finance is under control.
- Either way, use our guide to choosing an ERP provider in Dubai.
How to measure whether your construction ERP is working
| Measure | Where to read it | What good looks like after 3 months |
|---|---|---|
| Days from month end to a project cost report | Budget report per analytic account | Under 5 working days |
| Days from certificate to invoice | Certificate date against invoice date | Same week |
| Retention receivable past its release date | Retention report by project | Zero items unchased |
| E-invoice first-time acceptance | ASP status per invoice | Rejections traced to a fixed cause |
The targets are Devvista's working goals, not industry benchmarks. Record your starting figures at kick-off.
Mistakes contractors make when moving to an ERP
- Designing a cost code list for accountants that site teams will never fill in.
- Leaving retention to be "sorted later".
- Going live on a project that is already in its final account stage, where every number is disputed.
- Skipping an ASP sandbox test for progress invoices until weeks before the e-invoicing date.
Where Devvista fits for UAE contractors
Devvista is an official Odoo partner that configures Odoo for UAE contractors: project job costing with committed cost, milestone progress claims, retention on both sides, subcontract control, WPS-linked labour costing and PINT-AE e-invoicing through your chosen ASP. The team works remotely, in hours that overlap the UAE business day. Our Odoo projects are under NDA, so calls use sanitised configurations, not client names.
A good fit: contractors and fit-out firms with 15 to 300 users, several live projects and a commercial manager who will own the cost structure. Not a fit: firms needing weekly site visits or mainly estimating software. See our Odoo implementation service, Odoo customisation, the real estate ERP guide for developers and landlords, or go back to the UAE hub.
Sources
- www.odoo.com/documentation/19.0/applications/finance/accounting/reporting/budget.html
- www.odoo.com/documentation/19.0/applications/sales/sales/invoicing/milestone.html
- www.odoo.com/documentation/19.0/applications/sales/sales/invoicing/down_payment.html
- www.odoo.com/pricing
- mof.gov.ae/en/public-finance/tax/vat/
- mof.gov.ae/en/news/ministry-of-finance-confirms-applicable-taxable-income-threshold-for...
- mof.gov.ae/en/news/ministry-of-finance-announces-targeted-amendments-to-einvoicing-syst...
- kpmg.com/us/en/taxnewsflash/news/2025/10/uae-framework-scope-implementation-e-invoicing...
- mof.gov.ae/en/news/ministry-of-finance-amends-electronic-invoicing-regulations-to-ease-...