Skip to main content
iVentureTeam
Construction ERP

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.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
October 26, 2026Updated October 25, 202615 min read1 view
Odoo for Construction: BOQ, Progress Billing and Cost Control cover

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 needStandard Odoo app and recordGap to close
Bill of quantities and estimateSales quotation with sections, products and quantitiesBOQ hierarchy and item codes need configuration
Project budget and cost headsAccounting analytic plans, accounts and analytic budgetsCost codes per BOQ item need an analytic sub-plan
Progress or RA billingSales invoicing policy "Based on Milestones", down paymentsCumulative certificate format, retention lines
Site purchasing and approvalsPurchase with Purchase Order Approval, blanket orders, 3-way matchingMulti-level approval by amount needs Approvals or Studio
Labour and plant costTimesheets, Attendances, Planning, Maintenance, FleetDaily labour rates by trade need product setup
Site stock and transfersInventory with one location per site and internal transfersConsumption against BOQ items needs a routine
Drawings, permits, sign-offDocuments workspace per project, Sign for change ordersNone 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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 methodHow Odoo handles itBest for
Stage or milestone billing"Based on Milestones" invoicing policy; each milestone carries a Quantity (%)Lump-sum contracts with defined stages
Measured quantity billingGoods or services invoiced on delivered quantities, updated per measurementItem-rate BOQ contracts
Mobilisation advanceDown payment (percentage or fixed) on the sales order, deducted on later invoicesAny contract with an advance
RetentionPayment term with a second installment due months later; or a separate retention lineContracts with 5 to 10 percent retention
Cumulative certificate (RA bill)Not standard; needs a report or a module that shows previous, current and cumulativeGovernment 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?

Construction site to office gap: Where site events reach the office

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 eventWhat the office needsOdoo app and record
Cement runs low on Block AApproved request against the budgetPurchase RFQ with analytic account, Purchase Order Approval
Crew works a SaturdayLabour hours and cost posted todayTimesheets or Attendances from a phone, cost to project
Subcontractor claims 60 percentMeasured progress before paymentVendor bill matched to PO, 3-way matching, retention term
Steel delivered to siteStock on site and consumptionInventory location per site, receipt, internal transfer
Client asks for a changeSigned change order before work startsSign on the variation order, new order lines
Slab cast, stage completeInvoice the stage this weekMilestone 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.

AreaOdoo 19Odoo 20
Project margin viewProfitability panel on the project dashboardMargins and Forecast Margins reports; budget overview in Enterprise
Purchase order sectionsSections and notes on ordersSections show their total amount; agreements get sections too
Vendor bill matchingManual check against POAuto-Complete matches lines, warns on price and quantity, Unmatch action
Withholding on billsTax configured, single due amountAmount Due, Withhold Due and Net Due shown; pay each separately
TimesheetsTimer in the Timesheets appTimer in the top bar from any app; optional ActivityWatch assistant (Enterprise)
Field ServiceSeparate Field Service app on Odoo.sh and on-premiseMerged 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.

SegmentPain or cost driverOdoo approachHow iVentureTeam helps
General contractingBOQ in Excel, margin known at close-outBOQ quote, analytic budget, milestone billingCost library, budget design, RA bill report
MEP and fit-outMany small variations, fast billing cyclesSections per system, change orders via SignVariation workflow, client portal setup
Civil and infrastructureMeasured quantities, retention, TDSDelivered-quantity billing, retention terms, India localizationMeasurement sheet module, GST and TDS setup
Real estate developersUnit-level progress, many buyersProject per tower, milestone plans, portal accessUnit and buyer billing layer, Primavera import
Plant and equipment hireIdle machines, missed maintenanceMaintenance, Fleet, Planning materialsAsset register, utilisation reports
Specialist subcontractorsCertifying work to main contractorsMilestones, timesheets, documentsFast 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

Costing an Odoo rollout? Get a number first

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?

Book a construction fit check

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.