Progress Billing (Mustakhlasat) in Odoo: Owner and Subcontractor Invoices

Short answer: A progress invoice (مستخلص) bills the owner for work executed to date, item by item from the BOQ, minus what was billed before, minus retention and advance-payment recovery, plus VAT. Subcontractor progress invoices follow the same logic in reverse. In Odoo, when this is set up properly, the engineer enters cumulative quantities and the system does the rest, so the invoice, the accounting entry and the project cost are always consistent.
Progress billing is where most contractors' Excel files become fragile: one wrong formula, one copied sheet from last month, and the invoice is wrong. This article explains how progress invoices are built and how a construction ERP should handle them.
How is a progress invoice calculated?
- Cumulative executed quantity for each BOQ item, measured on site.
- Cumulative value = cumulative quantity × contract unit rate.
- Previous billing = total value of all earlier progress invoices.
- Current gross value = cumulative value − previous billing.
- Retention = an agreed percentage held back until handover or the end of the maintenance period.
- Advance recovery = the part of the advance payment deducted from this invoice, usually in proportion to work done.
- Other deductions = penalties, materials supplied by the owner, etc.
- VAT on the taxable amount, at your country's rate.
A worked example
An illustrative contract with two items, a 10% retention and a 20% advance payment recovered in proportion to work done:
| Item | Contract qty | Rate | Cumulative qty | Cumulative value | Previous | Current |
|---|---|---|---|---|---|---|
| Concrete works (m³) | 1,000 | 2,500 | 600 | 1,500,000 | 1,000,000 | 500,000 |
| Block works (m²) | 4,000 | 300 | 1,500 | 450,000 | 150,000 | 300,000 |
| Current gross value | 800,000 | |||||
| Retention 10% | − 80,000 | |||||
| Advance recovery 20% | − 160,000 | |||||
| Net before VAT | 560,000 |
VAT is then applied according to your country's rules and the contract terms. Any errors in this chain, such as a wrong previous total or a missed recovery, flow straight into your receivables and cash forecast.
Subcontractor progress invoices
The same structure applies when you pay subcontractors: their measured quantities, their rates, your retention from them, and recovery of any advance you paid. In a good system, the subcontractor's quantities are linked to the same BOQ items, so you can compare what you billed the owner with what you pay for the same work.
How does it work in Odoo?
- Contract and BOQ: items, quantities and rates are stored on the project, including variation orders.
- Progress entry: the site engineer enters cumulative quantities; the system calculates the rest.
- Approval: the progress invoice goes through review before it becomes an accounting invoice.
- Accounting: retention and advance recovery post to their own accounts, so balances owed to you and by you are always visible.
- E-invoicing: the final invoice is sent to the ETA in Egypt or ZATCA in Saudi Arabia like any other invoice.
Standard Odoo does not include progress billing with retention and advance recovery out of the box. It is delivered by a construction-specific module or a custom development, which is why this is the part to test hardest in any demo.
Frequently asked questions
Can the system handle variation orders?
Yes. New items or changed quantities are added to the contract, and progress billing continues on the updated BOQ.
How is retention released?
At handover or the end of the maintenance period, a release invoice bills the retained amount, and the retention balance goes to zero.
Can we print the progress invoice in our usual format?
Yes. The printed layout can follow your current format, in Arabic, English or both.
See progress billing in action
ExtraMile's construction solution on Odoo handles owner and subcontractor progress invoices from BOQ to payment. Book a demo with one of your real contracts.
Book a progress billing demo or message us on WhatsApp: Egypt · Gulf
This article was drafted with AI assistance and reviewed and edited by the ExtraMile implementation team.
