Back to Selected Work
ConstructionRescue & extensionUSD 20M+/yr through ERPMulti-month engagement, ongoing

Odoo Progress Billing & Cashflow Extension

Odoo already ran procurement and invoicing, but progress claims to the property developer and cashflow estimates on RM 20 million projects still lived in spreadsheets next to the ERP

1

The Problem

Standard Odoo Invoicing, but Progress Billing Still Lived in a Spreadsheet

This construction contractor already ran procurement and invoicing through Odoo, on the platform's standard modules. What Odoo had no off-the-shelf answer for was progress billing: claiming payment from the property developer as work completed, on projects running around RM 20 million each, and keeping a live cashflow estimate across all of them. Both lived in spreadsheets alongside the ERP instead of inside it.

Original Workflow

  • 1. Procurement and invoicing already run inside Odoo, on the standard modules
  • 2. Progress claims to the property developer, tied to percentage of work completed, are calculated in a separate spreadsheet
  • 3. Once a claim is agreed, the figures are re-entered into Odoo to raise the invoice
  • 4. Cashflow estimates per project are built by pulling procurement and invoicing numbers out of Odoo into another spreadsheet
  • 5. Any change to a purchase order or invoice means updating the spreadsheet by hand to keep the estimate current
  • 6. Nothing forces the spreadsheet and the ERP to agree with each other
2

Our Approach

Keep the Standard Workflow, Extend Only What Construction Actually Needs

Odoo's standard procurement and invoicing modules stayed exactly as they were; there was no case for touching them. Progress billing and cashflow estimation for construction-style claims are the genuine gap, since vanilla Odoo has no native concept of percentage-of-completion billing to a property developer, so that is where custom modules were built rather than forcing a workaround onto the standard flow.

Caveats & Considerations

  • Odoo's standard procurement and invoicing modules were left as-is; nothing about the core accounting flow was replaced
  • Progress billing and cashflow estimation are not standard Odoo modules for construction-style claims, so this is the one area where custom development was the right call
  • Scope stayed at four areas: procurement, invoicing, progress billing, and cashflow estimation. Nothing else in the business was touched
  • Claims still go to the developer on the developer's own paperwork; the module generates the figures, people still sign
3

The Solution

Custom Modules for Progress Billing and Cashflow, Native Odoo for Everything Else

A custom module ties progress claims to the confirmed job record and its percentage of completion, so the claim is generated rather than rebuilt from scratch each time. A second module reads live procurement and invoicing data to keep a running cashflow estimate. Once a claim is approved, the invoice to the developer is generated directly on Odoo's standard invoicing objects.

Custom Odoo module linking confirmed job records to generated progress claims
Claims tied to percentage of completion rather than re-typed from the original quotation each time
Cashflow estimation module reading live procurement and invoicing data instead of a manually maintained spreadsheet
Invoice to the property developer generated directly from the approved claim, on Odoo's standard invoicing objects
Procurement kept on Odoo's native purchase order flow, with no custom fork
Upgrade path preserved: the custom modules sit beside the standard ones, not inside them
4

Results

One Source of Truth for Claims and Cashflow

Progress claim creation
Rebuilt by hand for each submissionGenerated from the confirmed job record
Cashflow estimate
Manually pulled into a separate spreadsheetReads live Odoo procurement and invoicing data
Invoice to developer
Re-entered after the claim was agreedGenerated directly from the approved claim
Core procurement and invoicing workflow
Standard OdooUnchanged, standard Odoo
Spreadsheet and ERP agreement
Nothing enforced itOne record, no parallel copy

Related Reading

Have a Similar Challenge?

Let's discuss how we can build something similar for your business.

Book The Blueprint