US Progress Billing Lite — schedule of values, periodic progress billing with manually entered retainage, lien waiver register and payment application printout. No keys or external services required.
Overview
US Construction Pay Applications Lite — DYONYSOS
The free version of the US progress payment application for Odoo 19 Community. Free for good: no time limit, no record cap, no advertising banner in the work screens.
It is sufficient for a company that tracks a few projects and prepares its progress billings by hand.
The problem it addresses
A US pay application is not an invoice. It is a chain of nine lines, each carried to the next: original contract sum, change orders, contract sum to date, completed and stored to date, retainage, total earned less retainage, previous certificates, current payment due, balance to finish. Copy just one of those lines wrong and the payment due is wrong — usually in the second month, discovered at closeout.
Spreadsheets handle this poorly. The previous cumulative total is copied from one sheet to the next, a typo carries through to the end, and nothing flags that an item has been billed beyond its scheduled value.
What it does
Construction projects — contract, owner, architect, location, state of performance, contract type, original amount. This information is copied onto each progress statement rather than being re-entered.
Schedule of values — the breakdown of the contract into line items, each with its scheduled value, and the variance from the contract amount displayed rather than silently corrected.
Change orders — proposed, approved or rejected. Only approved ones count toward the contract amount to date.
Pay applications — the nine lines of the payment application, calculated. Previous totals and previous certificates are not entered manually: they are derived from earlier non-cancelled pay applications.
Retainage — a rate on work and a rate on stored materials, kept separate, entered manually, with a line-specific rate when the contract provides for one.
Lien waivers — the four named forms, never merged (conditional or unconditional, progress or final), the register of who must sign what, and a record of what is missing before payment.
Payment application printout — a report that reproduces the nine-line sequence and the detailed schedule of values, to be signed by hand.
Regulatory values are not guessed
This module sets no retainage rate, and that is not an oversight. Retainage is governed by the law of each state of the United States: the maximum rate, the release deadline, the distinction between public and private contracts and the conditions for substituting security all vary from one state to another. There are fifty possible answers, plus the federal district and the territories. Setting ten percent “because that is customary” would be a false confirmation — and a false confirmation is worse than nothing: it dulls the vigilance of someone who would otherwise have checked.
The rate therefore starts at zero, the project displays a finding that says so, and the module's VERIFICATION.md states, state by state, what was checked against a primary source and what was not.
No waiver form is provided either. A minority of states require wording set by statute, and a waiver that departs from it may have no effect at all. A statutory form copied from memory would be worse than no form at all.
The module records findings; it does not draw conclusions
It says that an expected lien waiver was not received before payment. It does not say whether the payment is due: that depends on the contract, the law of the state where the work is performed and facts it does not know. It therefore does not block the switch to “paid”; it records the finding, dated, in the chatter.
What it does not do
Linking to Odoo sales orders, projects and timesheets, and automatic import of progress.
Retainage tables by state, with their cited source and their caveat.
The full waiver cycle: batch requests to subcontractors, dated reminders, dashboard of what is missing before each payment.
Import of the value table from a spreadsheet, reading amounts in both decimal conventions.
Generation of a customer invoice from the progress statement.
All of this belongs to the full edition, US Progress Billing. The two modules install on top of each other: nothing needs to be re-entered.
What this module does not duplicate
Odoo Community already ships project for organizing tasks and, with sale_project, milestone billing. A milestone is either reached or not; a line in the schedule of values is advanced by a percentage, carries materials stored but not yet installed, and is subject to retainage. These are two different things. The full edition plugs into Odoo's project and sales order instead of rebuilding them; the free version does without them so as to depend only on the barest standard.
Not proven in production
This module has not been tested against a payment application actually submitted to an owner or an architect, or against a filing portal. The printed statement is not an official form: the American Institute of Architects G702 and G703 forms are copyrighted documents, available from the AIA and not reproduced here. Start with a trial pay application and compare it with what your owner expects.
Specifications
| Price | Free |
|---|---|
| License | LGPL-3 |
| Odoo series | 19.0: published on the Odoo Apps Store; 20.0: published on the Odoo Apps Store |
| Version | 1.0.0 |
| Edition | Odoo Community / on-premise |
| Technical name | dyo_situation_travaux_us_lite |
| Domain | Construction and real estate |
| Premium version | dyo_situation_travaux_us |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.