New: Odoo and Dynamics 365 cost calculators.Estimate your costs

ERP for contractors: job costing, WIP and retainage

If you are choosing an ERP for contractors in the United States, judge the ledger by job cost, work in progress, retainage, and owner billings.

FlecticUpdated 21 min read

If you are choosing an ERP for contractors in the United States, judge the ledger by job cost, work in progress, retainage, and owner billings. Business Central includes five WIP methods, and Percentage of Completion divides actual total cost by budget total cost, as of October 2026. Those project pages describe cost and sales recognition, and they do not describe retainage or AIA G702 and G703 forms. Odoo can collect job cost on analytic accounts, and the official page does not describe a WIP schedule, retainage, or AIA forms. On Odoo 18, an open subcontract hits project profitability only after the vendor bill is posted.

Business Central Essentials is USD 80 per user per month and Premium is USD 110, both paid yearly, as of October 2026. ProjectPro lists Standard through Enterprise at USD 60 to USD 80 per user per month on top of that license. FAR 52.232-5 pays a federal progress payment in full when progress is satisfactory. California public work and private contracts entered on or after 1 January 2026 generally cap retention at 5 percent of the payment. Price the subscriptions from those pages, then scope configuration against your own pay applications.

What the job ledger has to produce

General accounting can hold a company profit and loss. A contractor still needs each job to explain itself while it is open. Controllers on QuickBooks Online say the same thing in public: "WIP schedules and job costing usually end up living in spreadsheets because QBO doesn't handle it very cleanly out of the box." The cost-to-cost percent is the piece they call out as the manual work. Another puts the timing problem in one line: "Its not over until the project closes."

A construction-shaped ledger produces, from the same records, job cost by cost code, a WIP schedule, an application for payment, retainage aging, and (on covered work) certified payroll. Construction ERP versus project-management software draws that line between QuickBooks-class books, a field tool such as Procore, and a system that posts all of those from one database. Business Central and Odoo can be that ledger for a specialty or general contractor that wants the whole company on one set of books. Several of the construction-only documents are a named app, not a screen in the base product. Our guide to ERP for construction companies sets the wider operating picture. This page stays on the US accounting jobs: WIP posting, retainage, AIA data, 1099s, and certified payroll.

  • Cost and sales on a job (Business Central: Projects, on Essentials and Premium · Odoo: Analytic accounts, by project or department)
  • WIP percent and recognition (Business Central: Five methods, then a separate post to the ledger · Odoo: No construction WIP schedule on the official accounting page)
  • Retainage subledger (Business Central: Not described on Microsoft's project and WIP pages · Odoo: Not described on the official accounting page)
  • AIA G702 and G703 (Business Central: Not in the base project docs; a construction app can prepare the data · Odoo: Not on an official Odoo page; store apps print retention certificates)
  • Open subcontract in job profit (Business Central: ProjectPro lists subcontract management. Ask the app to show an open subcontract on job profit before the vendor bill is posted · Odoo: Odoo 18 shows purchase cost after the vendor bill is posted)
  • Weekly certified payroll (Business Central: Have the payroll vendor show the signed Statement of Compliance · Odoo: Have the payroll vendor show the signed Statement of Compliance)

How Business Central calculates WIP

Microsoft's WIP methods page lists five methods: Cost Value, Cost of Sales, Sales Value, Percentage of Completion, and Completed Contract. Completed Contract recognizes revenue and cost only when the project is complete. Percentage of Completion is the one that matches a cost-to-cost reading of the job while it is open. Completion percent is actual total cost divided by budget total cost. Recognized sales are the lesser of billable total price times that percent, and billable total price. Microsoft says the method needs billable total price and budget total costs entered for the whole project.

WIP is calculated with the Project Calculate WIP batch job. It is not in the general ledger until someone posts it. Before that post, the method can be changed and WIP recalculated. A project task can be left out of WIP or grouped with other tasks. After a method has been used to create WIP entries, it cannot be modified or deleted. Pick the method with your CPA before the first posting, and keep the budget total cost current, because the percent reads that budget. Business Central jobs and projects walks through the project structure those entries sit on. Business Central for growing companies is the product path if the rest of the company, not only the jobs, is moving off QuickBooks.

What a stale budget does to recognized profit

Assume one fixed-price job. Billable total price is USD 1,000,000. Budget total cost is USD 800,000. Actual cost to date is USD 400,000. Percentage of Completion divides 400,000 by 800,000, so the percent is 50. Recognized sales are the lesser of USD 500,000 and USD 1,000,000, so USD 500,000. The percent and the recognized sales are the parts Microsoft's method defines. Recognized sales minus actual cost, on these assumptions, is USD 100,000, and that difference is the profit the job is carrying at this cut.

Now assume the field knows the job will cost USD 900,000, and nobody has changed budget total cost. At USD 450,000 of actual cost the system still divides by 800,000. The percent is 56.25. Recognized sales are USD 562,500. Recognized sales minus cost, on the same assumptions, is USD 112,500. If the budget had been revised to USD 900,000, the percent would be 50, recognized sales would be USD 500,000, and the difference would be USD 50,000. The stale budget carries USD 62,500 more profit than the revised budget would. The difference does not wait for the final invoice. It is in the WIP calculation as soon as someone runs it. QuickBooks users describe the same blindness in the tool they have now: project profitability that is "decent for basic P&L but not great for real-time visibility" once change orders enter the job.

Post the revised budget, rerun Calculate WIP, and review the batch before it hits the ledger. If the method has already created WIP entries, you cannot switch methods to make the fade disappear. The budget and the estimate to complete have to move first.

Which retainage percent the contract allows

People still ask whether a side account is normal: "Is it standard to track retainage as a separate AR/AP account in QuickBooks, or is a supplemental spreadsheet still common?" One working answer on that thread is to keep it in the books: "we keep retainage as a separate account. Full revenue to contract income, and then the % retainage allocation to its separate receivable account." The percent in that allocation is a contract and a statute question. It is not a national default of 10 percent.

On a federal fixed-price construction contract, FAR 52.232-5 says the government pays the progress payment in full when the contracting officer finds satisfactory progress. When progress is not satisfactory, the officer may retain a maximum of 10 percent of that payment until progress is satisfactory. Retainage is not the default on every federal construction progress payment. FAR 32.904 sets the due date for those progress payments at 14 days after the designated billing office receives a proper request. If the contract does not set a date for release of amounts retained under FAR 52.232-5, the due date is 30 days after the contracting officer approves the release.

California is tighter, and public and private jobs are different statutes. Public Contract Code section 7201 says retention withheld on a covered public work by the public entity, the original contractor, or a subcontractor shall not exceed 5 percent of the payment, and total retention shall not exceed 5 percent of the contract price. A subcontract cannot withhold a higher percentage than the public contract. Exceptions include a written finding that the project is substantially complex, and a subcontractor who was told a bond was required and then does not furnish one. Civil Code section 8811 covers private works contracts entered on or after 1 January 2026. It caps a retention payment at 5 percent of the payment and total retention at 5 percent of the contract price. It does not apply to a residential project that is not mixed-use and does not exceed four stories, or where a required performance and payment bond was not furnished after notice.

Read the contract, then the state rule that covers that owner. Put the percent on the job. Do not copy 10 percent onto a California public pay application, and do not assume a federal contracting officer will hold 10 percent when progress is satisfactory.

Where AIA billing and holdbacks sit on Business Central

Microsoft's project and WIP pages stop at cost and sales recognition. Apps sell the holdback and the pay application. ProjectPro, from Netsmartz, lists percentage-of-completion, job costing, WIP reporting, AIA G702 and G703 progress billing, retention and holdbacks, change orders, subcontract management, union labor and prevailing wage, pay-when-paid, and lien and insurance tracking. The North America listing supports Essentials and Premium in the United States and Canada.

ProjectPro's pricing page lists Standard at USD 60, Advanced at USD 70, and Enterprise at USD 80 per user per month, plus a Team User at USD 10 per user per month, as of October 2026. Users are billed annually and are 1:1 with Business Central users. An Essentials, Premium, or Team Members license is required and is not included. ProjectPro says it can produce G702 and G703 data, and the licensee must enter an AIA subscription code and expiration dates. Budget the AIA subscription as its own line. The ERP license does not include the forms.

A narrower add-on is possible when the gap is only the holdback. Rand Group lists Retainage Manager at USD 150 per month per tenant, for the United States and Canada, on Essentials and Premium. The same vendor lists a nine-app Construction Bundle at USD 500 per month per tenant. Rand Group states that standard Business Central does not include construction retainage workflows. Confirm on a trial company that the app holds retainage on both the customer side and the subcontractor side, releases it on the schedule the contract names, and ages what is still held.

What Odoo posts for a job before you add an app

Odoo analytic accounting tracks costs and revenue on analytic accounts, grouped by plans such as project or department. Distribution can be set on each invoice or bill. That is enough to stop re-keying a simple job's cost into a workbook, once every bill carries the right analytic split. It is not a WIP schedule, a retainage subledger, or an AIA application. The official page does not describe those three.

Odoo 18 project profitability lists timesheets, purchase orders, materials, expenses, vendor bills, and manufacturing orders. The purchase-order cost line appears only after the vendor bill is posted. An open subcontract commitment is absent from that profitability view until the bill exists. Have the same screen opened on the version you would buy. A later version may move that line. The 18.0 page is the one that states this rule.

Construction progress billing and retention come from third-party modules on the Odoo Apps Store, not from the core apps. On Odoo 19, examples include BOQ invoicing with retention release, and a Construction Projects app that prints interim certificates with retention held and released. That is a certificate with a retention line. It is not a statement that Odoo includes AIA G702 and G703. If the owner requires those forms, ask the app vendor to show the output and ask who holds the AIA subscription. Odoo project billing covers progress invoices in the core service apps, which is a different document from a US construction pay application.

What the licenses cost for a small crew

Assume 12 people who need a full user and 15 people who only approve, enter time, or look up a job. Prices are list prices as of October 2026, paid on the yearly basis each vendor states. They exclude implementation, data migration, payroll, and the AIA subscription.

  • Business Central Essentials (List price: USD 80 per user / month, paid yearly · 12 full users, per month: USD 960)
  • Business Central Premium (List price: USD 110 per user / month, paid yearly · 12 full users, per month: USD 1,320)
  • Business Central Team Members (List price: USD 8 per user / month, paid yearly · 12 full users, per month: USD 120 for the 15)
  • ProjectPro Standard, on top of Business Central (List price: USD 60 per user / month · 12 full users, per month: USD 720 if each full user takes it)
  • ProjectPro Advanced (List price: USD 70 per user / month · 12 full users, per month: USD 840 on the same 12)
  • ProjectPro Enterprise (List price: USD 80 per user / month · 12 full users, per month: USD 960 on the same 12)
  • ProjectPro Team User (List price: USD 10 per user / month · 12 full users, per month: Confirm who needs it)
  • Rand Retainage Manager (List price: USD 150 per tenant / month · 12 full users, per month: USD 150)
  • Rand Construction Bundle (List price: USD 500 per tenant / month · 12 full users, per month: USD 500)

List prices as of October 2026: Business Central, ProjectPro, Retainage Manager, and the Construction Bundle. The 12-user column assumes each full user takes that seat. It does not assume a Team Members user takes a full ProjectPro seat.

Essentials plus ProjectPro Standard is USD 140 per full user per month before team seats: USD 80 plus USD 60. For 12 full users that subscription line is USD 1,680 per month, USD 20,160 per year, before the 15 Team Members seats at USD 8 (USD 1,440 per year) and before any ProjectPro Team User. Premium plus Advanced is USD 180 per full user per month. Essentials plus the Rand retainage app is a different shape: USD 960 per month for 12 Essentials users, plus USD 150 per month for the tenant, and you still need a path for AIA data if owners require G702 and G703. Ask ProjectPro whether a Business Central Team Members user consumes a full ProjectPro user at USD 60 to USD 80 or the USD 10 Team User. The pages state both a 1:1 rule and a separate Team User price.

As of October 2026, the Odoo US pricing page shows Standard at a yearly promotional USD 24.90 per user per month, with USD 31.10 also displayed, and monthly figures of USD 31.10 and USD 38.90. Custom shows a yearly promotional USD 37.40 per user per month, with USD 46.80 also displayed, and monthly figures of USD 46.70 and USD 58.40. The page says the discount lasts 12 months for the initial users ordered. Standard is Odoo Online and all apps. Custom adds Odoo.sh or on-premise, Studio, multi-company, and the external API. Odoo.sh hosting is extra. One app free is USD 0 for a single app with unlimited users on Odoo Online, which does not cover accounting, purchasing, and projects together.

For these 12 full users, Standard at the promotional USD 24.90 is USD 298.80 per month during the discount window, and USD 373.20 per month at the USD 31.10 figure also shown. Custom at USD 37.40 is USD 448.80 per month promotional, or USD 561.60 at USD 46.80, before hosting. On 24 September 2026 Odoo said it was raising the Custom plan rate by 20 percent, leaving the Standard version price and the one-app-free plan unchanged, and adding a Light User quoted at EUR 7.90. Re-read the US page on the day you order. The subscription does not include implementation or Odoo.sh hosting, so the license table is only part of the budget. Bring your pay applications to a free discovery call, and have the first phase scoped against the construction implementation package, which covers Odoo and Business Central for contractors of this size.

How 1099s and certified payroll sit next to the job

For payments made in 2026, the IRS threshold for Form 1099-NEC nonemployee compensation is USD 2,000. For payments made before 2026 it was USD 600. A 1099-NEC is still required for any amount if federal income tax was withheld under backup withholding. The instructions for Forms 1099-MISC and 1099-NEC (revision 12/2026) say that for tax years beginning after 2025 the minimum threshold for reporting certain payments, and for backup withholding on those payments, increased to USD 2,000 and may be adjusted for inflation beginning in calendar year 2027. A sub you paid USD 1,500 in 2026 with no backup withholding is under that threshold. The vendor record still needs a legal name, address, and taxpayer identification number before the payment, because next year's total may cross USD 2,000 and the file is built from those records.

Certified payroll is a separate weekly duty on covered work. Department of Labor instructions for WH-347 say that on Davis-Bacon and Related Acts work, covered contractors and subcontractors must submit weekly certified payrolls. Form WH-347 itself is optional. Each payroll must include a signed Statement of Compliance with the wording DOL requires. Payrolls are due within seven days after the regular payment date of the payroll period. ProjectPro lists union labor and prevailing wage. That listing is not a tested WH-347 file from Business Central payroll or from Odoo payroll. Keep certified payroll in the payroll product that already produces the statement, and have that vendor show a signed compliance page for one of your wage determinations. A controller who has used a construction accounting product for this job said "Foundation is amazing when it comes to certified payroll and cost coding when you have multiple active projects." Have your payroll vendor show that same weekly file before you move labor into a new ledger.

When the book method and the tax method differ

Business Central's Completed Contract and Percentage of Completion settings are system methods for recording project progress. They are not the tax return. IRC section 460 requires percentage of completion for long-term contracts, then drops that requirement for a home construction contract, and for another construction contract if the contractor estimates at signing that the job will finish within two years and the contractor meets the section 448(c) gross receipts test. Revenue Procedure 2025-32, section 4.30 of Internal Revenue Bulletin 2025-45, sets that gross receipts test at USD 32,000,000 of average annual gross receipts for the three prior tax years, for taxable years beginning in 2026. The same bulletin lists USD 31,000,000 for taxable years beginning in 2025.

A contractor under that receipts test, with jobs estimated at signing to finish inside two years, can have a tax method that does not match the Percentage of Completion entries on the books. A home construction contract has its own exception. Your CPA picks the tax method. The books still need a WIP method you can explain to a surety and a bank, and that method should be chosen before the first posted WIP entries, because Business Central will not let you modify a method after it has created those entries.

When a construction-built product fits better, and how a first phase is scoped

Acumatica Construction Edition, Trimble Viewpoint, Sage 300 CRE, Sage Intacct Construction, Foundation, and CMiC dominate roundups of construction ERP because they were built around pay applications, holdbacks, and job cost. They are the better buy when weekly certified payroll and union fringes are the center of the system, when owners expect multi-tier lien waivers as a standard packet, or when the company already runs Viewpoint or Foundation and the cost of leaving is the history in that database. Business Central plus a construction app, or Odoo plus a retention and progress-billing app, fits a firm that wants one ledger for the whole company and will add the app for billing and holdbacks. For a single-entity specialty contractor whose hard problem is percent complete and retainage, that stack is usually the shorter list. It is a weak fit if the payroll compliance file is the product you are shopping for.

Ask each bidder to price data migration, open jobs, and pay-application setup as their own lines. Our target for a first usable phase is 8 to 12 weeks. That target is ours, and it assumes the first phase is the ledger, job cost, and the billing documents you use every month, with field extras and historical jobs sequenced after the books are trustworthy.

Construction implementation is how we phase that work for specialty and general contractors: discovery against your pay applications, configuration, data migration, training, and support after go-live. Bring the fit-check answers, one AIA or owner form, and a job whose budget has already slipped.

How Flectic can help

Flectic implements Odoo for US contractors of 20 to 100 people who need job costs and billing visible during the job. Our Odoo Construction package connects quotations, job budgets, procurement, labour and milestone billing, and we review recorded costs, purchase commitments and approved revenue against agreed cost codes. Core is proposed at 18 to 22 weeks and Growth at 22 to 28 weeks. Book a free discovery call with Flectic to compare the Odoo job ledger with your contract terms.

Sources

Frequently asked questions

Can we change the Business Central WIP method after the first posting?

After a method has been used to create WIP entries, Business Central does not allow that method to be modified or deleted. Before anyone posts the batch, the method can be changed and WIP recalculated. Choose Percentage of Completion or Completed Contract with your CPA before the first posting, and keep budget total cost current so the percent stays tied to the latest estimate.

Do I issue a 1099-NEC if I paid a subcontractor under USD 2,000 in 2026?

For payments made in 2026, the reporting threshold for Form 1099-NEC nonemployee compensation is USD 2,000. A subcontractor under that amount, with no backup withholding, does not get a 1099-NEC for those payments. If you withheld federal income tax under backup withholding, a 1099-NEC is still required for any amount. Keep the legal name and taxpayer identification number on the vendor before you pay, because a later payment can cross the threshold.

Does the ERP have to print Form WH-347 for Davis-Bacon work?

Covered contractors and subcontractors must submit weekly certified payrolls. Form WH-347 itself is optional. Each payroll still needs a signed Statement of Compliance with the wording the Department of Labor requires, and the payroll is due within seven days after the regular payment date of that period. Ask the payroll product you already use to show that statement for one of your wage determinations.

What retainage percent applies on a California private job that starts in 2026?

For private works contracts entered on or after 1 January 2026, California generally caps a retention payment at 5 percent of the payment and total retention at 5 percent of the contract price. The cap does not apply to a residential project that is not mixed-use and does not exceed four stories. It also does not apply where a required performance and payment bond was not furnished after notice. Load the percent from the contract and from that statute, not from a company-wide default.

Does a federal contracting officer hold 10 percent on every progress payment?

No. On a fixed-price construction contract, the government pays the progress payment in full when the contracting officer finds satisfactory progress. The officer may retain a maximum of 10 percent of that payment only when progress is not satisfactory. The due date for the progress payment is 14 days after the designated billing office receives a proper request. If the contract is silent on when retained amounts are released, the due date is 30 days after the contracting officer approves the release.

Does Odoo Standard include hosting on Odoo.sh and implementation?

Standard is Odoo Online and the apps on that plan. Custom adds Odoo.sh or on-premise, and Odoo.sh hosting is billed separately from the user price. The subscription does not include implementation, so scope the rollout against your own pay applications before you sign. The yearly promotional rate on the US page is stated to last 12 months for the initial users ordered.

Why can a job look profitable for months and then lose margin before close?

Percentage of Completion divides actual cost by the budget total cost still on the job. If the field expects a higher final cost and the budget is left unchanged, the percent stays high and recognized profit stays high. Updating the budget and rerunning the WIP batch drops recognized sales to the revised percent before the job is closed. The fade feels sudden when the workbook is corrected at the end, because the stale budget was carrying the profit the whole time.