Odoo for Construction: BOQ, Progress Billing and Cost Control
How contractors run BOQ quotes, progress billing, retention and project cost control in Odoo 19 and 20, what is standard, what needs a module, and the cost.
Most contractors who look at Odoo ask the same first question: where is the construction module? There is none, and that matters less than it sounds. Our Odoo ERP for the construction industry setups use standard apps for most of the job and a thin, upgrade-safe layer for the rest.
This guide is for owners, project controllers and finance heads of contracting, civil, MEP and fit-out firms that run BOQs in Excel and bill from Word. If you are earlier in the journey, start with our Odoo implementation checklist and return here for the construction specifics.
Does Odoo have a construction module or BOQ app?
No, Odoo does not ship a construction or BOQ app in Odoo 19 or Odoo 20; construction flows are built from standard apps plus a few additions. The table maps each contractor need to Odoo and shows where a gap remains.
| Contractor need | Standard Odoo app and record | Gap to close |
|---|---|---|
| Bill of quantities and estimate | Sales quotation with sections, products and quantities | BOQ hierarchy and item codes need configuration |
| Project budget and cost heads | Accounting analytic plans, accounts and analytic budgets | Cost codes per BOQ item need an analytic sub-plan |
| Progress or RA billing | Sales invoicing policy "Based on Milestones", down payments | Cumulative certificate format, retention lines |
| Site purchasing and approvals | Purchase with Purchase Order Approval, blanket orders, 3-way matching | Multi-level approval by amount needs Approvals or Studio |
| Labour and plant cost | Timesheets, Attendances, Planning, Maintenance, Fleet | Daily labour rates by trade need product setup |
| Site stock and transfers | Inventory with one location per site and internal transfers | Consumption against BOQ items needs a routine |
| Drawings, permits, sign-off | Documents workspace per project, Sign for change orders | None for most firms |
The Odoo forum confirms it: a user asking for an Odoo 18 progress billing module was told that no single listing matched the full spec out of the box.
How do you build a BOQ in Odoo?
You build an Odoo construction BOQ as a structured sales quotation whose lines feed a project, an analytic account and a budget, so the same quantities drive billing and cost control. This is our sequence on every contracting rollout.
- Create the cost library. Each BOQ item (excavation per cubic metre, RCC per cubic metre, brickwork per square metre) becomes a product with a unit of measure, a sales price and a standard cost.
- Quote with sections. Group lines by BOQ heading (earthwork, structure, finishes) using sections. Odoo 20 shows the total of each section, which reads like a client-facing BOQ summary.
- Set the invoicing policy. Mark service items as "Based on Milestones" for stage billing, or keep goods on delivered quantities when the client pays per measured quantity.
- Create the project on confirmation. The milestone product's "Create on Order" setting creates the project and its analytic account when the order is confirmed, so every later cost lands on it.
- Open the budget. In Accounting, create an analytic budget for the project with one line per cost head (materials, labour, subcontract, plant, site overhead) and the BOQ cost as Budgeted.
- Sign the contract. Send the quotation for e-signature through Sign and use the same route for change orders.
Odoo's milestone invoicing documentation uses a pool installation with four 25 percent milestones as its example. Rename them mobilisation, substructure, superstructure and finishing and you have a billing schedule.
How does progress billing work in Odoo?
Odoo progress billing works through milestones: when a stage is marked reached, the Delivered quantity on the sales order updates and you click Create Invoice for that portion. Reaching a milestone does not create the invoice by itself, which suits contractors who certify before they bill.
| Billing method | How Odoo handles it | Best for |
|---|---|---|
| Stage or milestone billing | "Based on Milestones" invoicing policy; each milestone carries a Quantity (%) | Lump-sum contracts with defined stages |
| Measured quantity billing | Goods or services invoiced on delivered quantities, updated per measurement | Item-rate BOQ contracts |
| Mobilisation advance | Down payment (percentage or fixed) on the sales order, deducted on later invoices | Any contract with an advance |
| Retention | Payment term with a second installment due months later; or a separate retention line | Contracts with 5 to 10 percent retention |
| Cumulative certificate (RA bill) | Not standard; needs a report or a module that shows previous, current and cumulative | Government and large private clients |
Advances are standard. Odoo creates percentage or fixed-amount down payments from the Create Invoice pop-up and deducts them on later invoices for the same order.
Cumulative certificates are the real gap. A partner on the Odoo forum explained that invoicing by progress certifications is common in construction but not a standard flow in Odoo, and listed workarounds such as duplicating the first invoice with a negative line.
Avoid that workaround beyond a pilot, because those invoices lose their link to the sales order. A small report that prints previous, current and cumulative columns from the order lines is the clean fix.
Can Odoo handle retention money, advances and variation orders?
Yes, Odoo handles retention with payment terms or a retention line, advances with down payments, and variation orders with amended order lines or a linked sales order, though each needs a decision at setup. Here is how we configure the three.
- Retention by payment term: an Odoo expert on the forum suggests a payment term of 90 percent on normal terms and the balance 6 or 12 months later, which creates two installments and keeps the retained amount open as a receivable.
- Retention as a line: when the client wants retention on the invoice, a negative "Retention 5%" service line posts to a retention receivable account, and a release invoice reverses it after the defect period.
- Advance recovery: Odoo deducts the down payment on each later invoice; agree the recovery schedule with the client and reflect it in the percentage.
- Variation orders: add lines or sections after an e-signed change order, or raise a linked order for large variations so the original BOQ total stays untouched.
- Subcontractor side: the same patterns run on purchase orders and vendor bills: a retention payment term, 3-way matching before payment, and in India the TDS alert on contractor bills.
Odoo's India localization includes a TDS and TCS threshold alert that flags when a bill crosses the section limit, which matters for subcontractor payments under Indian law.
How does Odoo construction project cost control actually work?
Odoo construction project cost control runs on analytic budgets: every purchase, timesheet, stock move and bill carries the project's analytic account, and the budget shows Budgeted, Committed and Achieved in one view. This is the engine behind cost-to-complete.
The analytic budget documentation defines the three columns. Achieved is the result of confirmed journal entries. Committed adds confirmed purchase orders that are not yet billed. If a purchase order line exceeds the open budget, that line is highlighted in red before anyone confirms it.
That red line is the most useful control on a site: the engineer raising a cement order against an exhausted "Materials: Block A" budget sees the warning before the truck leaves, not at month-end.
On the labour side, Timesheets post employee cost per hour to the project, and the same entries can feed work entries for payroll. That gives a daily labour cost per site without a second spreadsheet.
Material consumption needs one setting. Stock moves only count as project costs if Analytic Costs is enabled on the operation type, as the project profitability documentation explains. Enable it on site deliveries and consumption, or the margin report will miss materials.
How do you close the construction ERP site to office gap with Odoo?

You close the construction ERP site to office gap by giving every site event an Odoo record that the office sees the same day, instead of a phone call, a WhatsApp photo or a weekly sheet. The table maps the six events that leak the most margin.
| Site event | What the office needs | Odoo app and record |
|---|---|---|
| Cement runs low on Block A | Approved request against the budget | Purchase RFQ with analytic account, Purchase Order Approval |
| Crew works a Saturday | Labour hours and cost posted today | Timesheets or Attendances from a phone, cost to project |
| Subcontractor claims 60 percent | Measured progress before payment | Vendor bill matched to PO, 3-way matching, retention term |
| Steel delivered to site | Stock on site and consumption | Inventory location per site, receipt, internal transfer |
| Client asks for a change | Signed change order before work starts | Sign on the variation order, new order lines |
| Slab cast, stage complete | Invoice the stage this week | Milestone marked reached, Create Invoice |
Odoo 20 helps on the mobile side: the Project app reworks the task header on phones and lets portal users such as client engineers be assigned tasks. Our Odoo 20 Project release notes list all eight changes.
What changes between Odoo 19 and Odoo 20 for construction companies?
The biggest Odoo 20 change for contractors is that the project profitability panel is gone, replaced by Margins and Forecast Margins reports under Project Reporting.
| Area | Odoo 19 | Odoo 20 |
|---|---|---|
| Project margin view | Profitability panel on the project dashboard | Margins and Forecast Margins reports; budget overview in Enterprise |
| Purchase order sections | Sections and notes on orders | Sections show their total amount; agreements get sections too |
| Vendor bill matching | Manual check against PO | Auto-Complete matches lines, warns on price and quantity, Unmatch action |
| Withholding on bills | Tax configured, single due amount | Amount Due, Withhold Due and Net Due shown; pay each separately |
| Timesheets | Timer in the Timesheets app | Timer in the top bar from any app; optional ActivityWatch assistant (Enterprise) |
| Field Service | Separate Field Service app on Odoo.sh and on-premise | Merged into Planning at the Odoo 20 upgrade |
If you are on Odoo 19 and plan to upgrade, test every custom dashboard that read the old profitability panel; those components are removed.
Standard, Studio or custom module: how do you add BOQ features without hardcoding?
Add construction features in a fixed order: standard setting first, then configuration, then Studio, then a custom module, and keep the module separate from Odoo core. This order keeps upgrades affordable and stops the "construction module" from becoming a copy of one client's spreadsheets.
- Standard: sections, milestones, down payments, analytic budgets, Purchase Order Approval and 3-way matching.
- Configuration: cost codes as an analytic sub-plan, site locations, retention payment terms, approval amounts, product categories per trade.
- Studio: fields such as BOQ item code, drawing reference or measured quantity, plus a reminder when a milestone deadline passes.
- Custom module: cumulative RA bill report, measurement sheets, retention release and subcontractor certificates, kept small and built only on standard models.
You can also buy a layer. On the Odoo Apps Store, Invoicing using BOQ lists at US$58.30 for Odoo 19 with progress claims, variation orders, advance, retention and penalty deductions.
Two cautions. Odoo Online is incompatible with custom modules or modules from the Odoo Apps Store, so any BOQ add-on means Odoo.sh or on-premise on the Custom plan. And every third-party module costs money at each upgrade, as our guide to third-party Odoo module costs explains.
For the build-or-configure decision, read our comparison of Odoo Studio vs custom development: Studio for fields and views, code for new documents like an RA bill.
What does Odoo for construction cost?
An Odoo construction rollout costs the per-user license plus an implementation that usually lands in our mid-size range of $9k to $27k over 8 to 14 weeks, with the BOQ and billing layer as the main variable. Here is how the pieces add up.
On the Odoo pricing page, the US price billed yearly is US$31.10 per user a month for Standard and US$61.00 for Custom; in India it is Rs 725 and Rs 1,350, with first-year discounts. Custom is the plan you need: it includes Studio, multi-company and Odoo.sh or on-premise hosting.
Site staff who only log attendance, timesheets and expenses can often be Light Users at US$8.90 or Rs 195 a month, so field crews do not need full licenses. Our Odoo pricing guide covers the rules.
Implementation follows the ranges on our Odoo implementation cost page: small $3k to $9k over 4 to 8 weeks, mid-size $9k to $27k over 8 to 14 weeks, large $27k to $150k+ over 12 to 24 weeks. Data migration adds $1.2k to $9k by source system and history. These are ranges, not quotes.
A contractor with 5 to 15 live sites, subcontractors and retention typically sits in the mid-size band; the RA bill report and measurement sheets push it toward the top. For a first number, run the free Odoo project estimate tool.
Which construction businesses fit Odoo best?
Odoo fits contractors and builders whose pain is cost visibility and billing speed, and it fits less well where heavy scheduling software is the core system. The table shows where each segment usually lands.
| Segment | Pain or cost driver | Odoo approach | How iVentureTeam helps |
|---|---|---|---|
| General contracting | BOQ in Excel, margin known at close-out | BOQ quote, analytic budget, milestone billing | Cost library, budget design, RA bill report |
| MEP and fit-out | Many small variations, fast billing cycles | Sections per system, change orders via Sign | Variation workflow, client portal setup |
| Civil and infrastructure | Measured quantities, retention, TDS | Delivered-quantity billing, retention terms, India localization | Measurement sheet module, GST and TDS setup |
| Real estate developers | Unit-level progress, many buyers | Project per tower, milestone plans, portal access | Unit and buyer billing layer, Primavera import |
| Plant and equipment hire | Idle machines, missed maintenance | Maintenance, Fleet, Planning materials | Asset register, utilisation reports |
| Specialist subcontractors | Certifying work to main contractors | Milestones, timesheets, documents | Fast quote-to-certificate flow |
Scheduling-heavy firms keep Primavera or MS Project for the programme and let Odoo own cost, procurement and billing; our Odoo integration services handle that import.
How iVentureTeam helps with Odoo construction BOQ and cost control

iVentureTeam sets up the standard apps around one analytic account per project, then builds only the construction layer that configuration cannot reach. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.
- BOQ and cost library: products, units, cost heads and analytic plans designed from your last three tenders.
- Billing design: milestones or measured quantities, advances, retention and the RA bill report your clients will accept.
- Site to office rollout: mobile timesheets, site stock locations, purchase approvals and document workspaces, delivered through our Odoo implementation services.
- Construction layer: measurement sheets, certificates and retention release built as a small module under our Odoo customization services, with upgrade testing included.
- Training by role: site engineers, procurement, accounts and management each get their own two-hour session.
Odoo progress billing case study: Enabl Health
Enabl Health is not a contractor, but its problem is the one every site accountant knows: hours delivered in the field were billed weeks later, at the wrong rate. The Australian health-tech company serves independent health professionals, and billing had to follow weekday, weekend and holiday rates.
Timesheet capture was manual, with start and stop times typed in, and the doctor and patient portals were not built for mobile.
iVentureTeam cleaned five data sets (sales, timesheets, invoices, payslips and users), then automated timesheet classification by day type so each entry drove the correct billing rate. Start and stop timers calculate time from timestamps, and the invoice flow maps times and rates onto invoice lines.
Delivery took 10 weeks plus ongoing support, on Odoo.sh with staging and production branches. Three billing rate types are automated and two portals were rebuilt mobile-first. Read the full Enabl Health timesheet-to-invoice billing case study.
The bottom line on Odoo for construction BOQ and cost control
Odoo gives contractors BOQ quoting, milestone or measured billing and live budget control from standard apps, and the missing pieces (RA bills, retention, cost codes) are small, well-understood additions. The risk is not the software; it is hardcoding one site's habits into code you cannot upgrade.
Start with one project, one analytic account and one budget. Get the red over-budget line working on purchases and the milestone invoice on sales, then add the construction layer once both have run on a real site for a month.
Ready to run your next project from BOQ to final bill in Odoo?

Bring one live BOQ and we will map it to Odoo with you in 30 minutes. Request a construction BOQ fit check, call +91-90235-15208, or email business@iventureteam.com.
Frequently Asked Questions
Does Odoo have a construction module?
+
No. Odoo 19 and Odoo 20 have no construction or BOQ app. Contractors combine Sales, Project, Purchase, Inventory, Timesheets and Accounting around one analytic account per project, and add retention, certificates and cost codes by configuration or a small module.
How do you create a BOQ in Odoo?
+
Set up each BOQ item as a product with a unit and cost, quote with sections per BOQ heading, set service lines to "Based on Milestones", and let the confirmed order create the project. Then open an analytic budget with one line per cost head.
Can Odoo do progress billing for construction?
+
Yes, through milestone invoicing: when a stage is marked reached, the delivered quantity updates and you create the invoice for that portion. Cumulative RA bill formats with previous, current and cumulative columns need a report or module.
How does Odoo handle retention money?
+
Two common ways: a payment term that keeps 5 to 10 percent due 6 or 12 months later, or a negative retention line posted to a retention receivable account and released by a later invoice. Subcontractor retention works the same way on vendor bills.
Can Odoo track project cost against budget in real time?
+
Yes. Analytic budgets show Budgeted, Committed and Achieved per project, with committed including confirmed purchase orders not yet billed. A purchase order line that exceeds the open budget is highlighted in red before confirmation.
Can site engineers use Odoo on a phone?
+
Yes. Timesheets, Attendances, Expenses, Purchase requests, Inventory transfers and Project tasks all work in the Odoo mobile app or browser. Odoo 20 improves the task header on mobile and adds a timesheet timer in the top bar.
Does Odoo work with Primavera or MS Project?
+
Not out of the box. Most contractors keep the programme in Primavera or MS Project and import milestones and dates into Odoo Project through the API, while Odoo owns cost, procurement and billing.
How much does Odoo cost for a construction company?
+
Licenses are US$31.10 (Standard) or US$61.00 (Custom) per user a month billed yearly, Rs 725 or Rs 1,350 in India, plus Light Users at US$8.90 or Rs 195. Implementation usually lands in our $9k to $27k mid-size range over 8 to 14 weeks.
Can I install a BOQ module on Odoo Online?
+
No. Odoo Online does not allow custom modules or Odoo Apps Store modules. Any BOQ, certificate or retention add-on needs Odoo.sh or on-premise hosting, which comes with the Custom plan.
Ready to put this into action?
Talk to iVentureTeam about Odoo, AI automation, or custom development — get a free, no-obligation consultation.
Free Odoo tools
All tools- Odoo Health CheckVersion, modules, findings and upgrade cost
- Odoo App SelectorWhich apps you need, by industry
- Odoo Project EstimateIndicative cost and timeline in minutes
- Odoo Implementation Cost CalculatorImplementation cost and timeline, in minutes
- Odoo Migration Cost CalculatorVersion jump or legacy ERP, priced in minutes
Continue reading
How Long Does Odoo Implementation Take? Timelines by Size and Scope
How long does Odoo implementation take? Real timelines by company size, phase lengths, data migration time, Odoo 20 choices and what delays a go-live.
Odoo License vs Implementation Cost: Line-by-Line Breakdown (Odoo 20)
Odoo license vs implementation cost split line by line: Odoo 20 user prices, partner fees, Success Packs and a worked three-year example for 50 staff.
Odoo Amazon Integration: Setup, Sync Scope, Limits and Cost
Odoo Amazon integration explained: what the Odoo Amazon connector syncs for FBA and FBM, its limits, eBay options, Odoo 20 marketplaces and real costs.
