You close out the month's measurements, the ITO flags a line item with a miscalculated quantity takeoff, and approval of the progress payment arrives weeks later. Only then do you invoice and the payment clock starts running, when you've already paid payroll, equipment and subcontractors.
If that cycle lives in spreadsheets, the problem is the progress payment workflow. In this guide you'll see how to design it, how to track retainage and job costs, which legal deadlines apply in Chile, and what Odoo for construction companies handles out of the box versus what requires custom development.
What a progress payment application is and why it gets delayed
A progress payment application (estado de pago, or EP, in Chile) is the document a contractor uses to bill the owner for the work completed in a period: it values the progress on each line item against the contracted budget, deducts the advance payment recoupment and the agreed retainage and, once approved by the owner or its technical inspector (ITO, inspección técnica de obra), allows the invoice to be issued.
Delays in construction progress payments usually come from quantity takeoffs (calculations of the quantities executed) that don't match between the site and the technical office, change orders without an approved price, conflicting versions between the ITO and finance, and invoices that differ from the approved EP and end up disputed.
The legal payment term runs from the moment the owner receives the invoice, not from the measurement: you finance the review days that come before it.
Designing the progress payment approval workflow: from measurement to collection
A progress payment approval workflow is the sequence of stages, owners and supporting documents that each EP goes through from measurement to collection:
- Site measurement: progress per line item as of the cutoff date, with quantity takeoffs and photos.
- Technical office review: values the progress against the itemized budget and applies change orders, advance recoupment, retainage and penalties.
- Submission to the owner or ITO: with number, version and supporting documents.
- Comments: every correction is a new version.
- Approval: date and approved amount, the only amount you can invoice.
- Invoice: a DTE (Chilean electronic tax document) for the approved amount, linked to the EP.
- Collection: dispute window, due date, reconciliation and retainage receivable.
Roles and approvals: site, technical office, owner and ITO
| Role | What must be recorded |
|---|---|
| Site manager | Quantity takeoffs, photos and cumulative progress per line item |
| Technical office | Valued EP cover sheet, version and supporting documents |
| Owner or ITO | Comments, date and approved amount |
| Finance | DTE linked to the EP, due date and payment |
| Project management | Approved change orders, with amount and reason |
Retainage, advance payments, change orders and guarantees in construction
Retainage in construction is the percentage the owner withholds from each progress payment as a guarantee of proper performance, up to a cap agreed in the contract or the bid terms, and returns after the project is accepted. Track it per project along with three other balances:
- Retainage: balance, cap and expected release date. In public works, the amendment to the MOP (Chile's Ministry of Public Works) contract regulations published in the Official Gazette on February 27, 2026 establishes that, if the contractor doesn't prove payment to its subcontractors or justify the lack of payment, retainage is returned only when the contract is settled or when the contractor proves it.
- Advance payments: amount received, recouped and outstanding.
- Change orders: status and amount; only approved ones go into the EP.
- Guarantees: bank guarantees (boletas de garantía) or surety policies, with amount and expiration date.
Job costing: analytics, purchasing, site warehouse and subcontracts
Job costing means charging each cost to the project that generates it and comparing it with its budget in time to act. In Odoo:
- One project and one analytic account per job, to which purchases, vendor bills, hours and expenses are charged.
- Analytic budget: in Odoo 19 it compares budgeted against committed (including confirmed purchase orders not yet billed) and actual, and flags in red the order that exceeds it.
- On-site warehouse: one location per job. In Odoo 19, materials from stock moves validated for the project flow into its profitability panel.
- Subcontracts: purchase orders charged to the job. Their EP is modeled with custom development, and matching their invoices is explained in finance and accounting automation.
Watch the version: according to the Odoo 20 release notes, the profitability report was removed from the project dashboard and replaced by dedicated budget and margin reports.
Payment terms and electronic invoicing in Chile: what a construction company must track
Law 19.983, as amended by Law 21.131 on 30-day payment, sets three rules that affect your cash flow (reviewed in October 2026):
- Payment term: 30 calendar days from receipt of the invoice, and any clause that counts it from a different date has no effect. A longer term requires, among other things, a written agreement and registration with the Ministry of Economy.
- SMB vs. large company: if your company is a smaller business and the owner is a large company, that longer term is allowed only in your favor and in cases such as installment or progress-based payments.
- Disputes: the owner has 8 calendar days to dispute the invoice, counted from when the SII receives it. If it isn't disputed, it's irrevocably accepted, which is key if you sell it through factoring.
Late payment accrues default interest and a fee of 1% of the outstanding balance. To issue DTEs from Odoo you need SII certification (the SII is Chile's tax authority); the details are in electronic invoicing with Odoo.
What Odoo handles out of the box and what requires custom development
When evaluating construction management software, what matters is whether it can model your workflow. Odoo doesn't include a module for Chilean progress payments, but it publishes an industry package for general contractors (General Contractor, which requires Odoo Enterprise; reviewed in October 2026) with milestone billing, down payments and retainage based on progress. It's a solid foundation, although its description doesn't mention the EP cover sheet or ITO approval.
| Need | Standard in Odoo | Custom |
|---|---|---|
| Jobs and milestones | Projects with tasks, milestones and Gantt | Not required |
| Progress billing | Milestones with % delivered | % calculated from the quantity takeoff |
| Advance payments | Down payment deducted when invoicing the balance | Proportional recoupment per EP |
| Cost per job | Analytics and budgets | Budget per line item |
| EP cover sheet and versions | Not included | Cumulative progress and comments |
| ITO approval | Activities and electronic signature (Sign) | EP stages with dates |
| Retainage and guarantees | Mentioned in the industry package | Balance, cap and release per job |
What's standard depends on your edition and version: the industry package is Enterprise-only, and the differences for everything else are covered in Odoo Community vs Enterprise.
Percentage-of-completion billing in Odoo
Percentage-of-completion billing means invoicing the contract according to the percentage completed in each period. In Odoo, milestone-based invoicing assigns each milestone a percentage of the sales order line; when you mark it as reached, it becomes available to invoice, although the invoice isn't created automatically. It's the same logic used by service companies, using the percentage from the approved measurement.
Alerts and KPIs: physical vs. financial progress, cost overruns, margin per job and EP cycle days
With the workflow in Odoo, these indicators come out without spreadsheets:
- Physical vs. financial progress: % completed according to the approved measurement versus % invoiced and % of the budget spent.
- Projected cost overrun: actual cost + committed − budget.
- Margin per job: invoiced revenue − charged costs.
- EP cycle days: from cutoff to payment, broken down by stage.
- Retainage receivable: balance per job and per owner.
Keep Checking adds alerts in Odoo. For construction jobs, useful ones include “Low-profitability projects,” “Project with excess hours logged,” “Spending over the expense budget” and “Customers with invoices overdue beyond X time.” Plans range from up to 10 to up to 100 alerts (3 to 10 UF + VAT per month; the UF is Chile's inflation-indexed unit of account), with setup in 7 days; you pick yours in the quote builder and request a quote. Alerts for unapproved EPs or retainage pending release are custom-built. To set thresholds, read automated threshold alerts.
Keep BI adds dashboards inside Odoo such as “Projects Status & Performance” and “Collections.” And KPB's custom AI assistants and agents can turn the ITO's comments into tasks, draft the EP submission and trigger follow-up with the owner, with a person reviewing before anything is sent.
Why work with KPB Solutions
We're an Odoo Gold Partner, with 40+ KPBeers (as we call our team) and 70+ active clients in 6 countries. In an Odoo implementation we design the progress payment workflow with you and model what Odoo doesn't include (cover sheet, approvals, retainage and advance recoupment) on top of Projects, analytic accounting, purchasing and milestone billing. We add SII certification, alerts, dashboards and integrations such as Fintoc, our partner for bank connectivity and automatic reconciliation.
Want to see your next job's progress payment in Odoo? Book a meeting and we'll review your workflow with a real EP.