QuickBooks Online does not generate a WIP schedule — you build it by pulling cost and billing data from QBO and completing the percentage-of-completion calculations in a spreadsheet outside the system. This works for a handful of jobs, but as your project count grows, the monthly export-and-rebuild cycle becomes its own full-time task with compounding error risk.
Key takeaways
What QBO can and can't do: QuickBooks Online tracks job costs and billings but has no native percentage-of-completion engine or over/under billing report, so a WIP schedule must be calculated outside it.
The four inputs: Every WIP schedule requires contract price, total estimated cost, cost-to-date, and progress billings — QBO supplies the last two; you supply the first two from your project budget.
The core formulas: Percent complete = cost-to-date ÷ total estimated cost; earned revenue = percent complete × contract price; over/under billing = earned revenue − progress billings.
Where the manual process breaks: Once you're managing more than a handful of jobs or multiple entities, the monthly export-and-rebuild cycle introduces errors and delays that compound across close.
The automated alternative: Flow ERP connects directly to project management tools like Buildertrend, Procore, and JobTread and computes the WIP schedule live, eliminating the monthly rebuild.
What is a WIP schedule and why does it matter in construction accounting?
A WIP (work in progress) schedule is a job-by-job report that shows how much revenue a contractor has earned versus how much has been billed on each open contract at a given point in time. It is the primary tool for identifying over-billing and under-billing positions, and it determines whether revenue recognition on active jobs is accurate under the percentage-of-completion method — the approach where revenue is recognized proportionally as work is performed, rather than all at once at project completion.
A WIP schedule is a balance-sheet-level document, not just a P&L report. When a job is under-billed (you've earned more than you've invoiced), the difference sits as costs in excess of billings — a current asset. When a job is over-billed, the difference sits as billings in excess of costs — a current liability. A simple job cost report in QBO shows you profit by job; a WIP schedule tells you whether your billing position is accurate and what your balance sheet should reflect. For a broader look at how these concepts fit into construction accounting for lean finance teams, our full guide covers the complete framework.
Over-billing vs. under-billing — what each position means
Over/under billing is the dollar difference between what you've earned on a job and what you've invoiced. A positive over/under billing number means you've billed more than you've earned — that's a liability, because you owe future work for cash already received. A negative number means you've earned more than you've billed — that's an asset, and it means you're financing the client's project out of your own cash flow.
Overbilling above approximately 20% of contract value is a common threshold that signals risk to a surety or lender. Both positions require monitoring; left untracked, overbilling creates future cash crunches and underbilling starves current operations.
What four inputs does a WIP schedule require?
Every WIP schedule requires four inputs: contract price, total estimated cost, cost-to-date, and progress billings. Here is where each one comes from in practice:
Contract price: The total agreed-upon value of the contract with the owner. QBO does not store this as an accounting-linked field — you pull it from the signed contract or your project budget and enter it manually in your spreadsheet.
Total estimated cost: The total cost you expect to incur to complete the job, including labor, materials, subcontractors, and overhead allocation. This comes from your project budget, not from QBO. Note that QBO's Estimates feature is not the same as a cost budget — estimates in QBO are sales documents used to generate invoices, not cost-tracking tools. Conflating them is a common error that produces incorrect percent-complete figures.
Cost-to-date: The actual costs posted to the job in QBO through the reporting period. QBO does track this, and you pull it from the Profit and Loss by Customer report. For a comprehensive walkthrough of setting up construction job costing in QuickBooks Online, see our dedicated guide.
Progress billings: The total amount invoiced to the owner through the reporting period. QBO tracks this via customer invoices, and you pull it from the Invoices report filtered by customer or project.
What are the formulas for calculating percent complete, earned revenue, and over/under billing?
The cost-to-cost method — where percent complete is determined by dividing costs incurred to date by total estimated costs — is the standard approach for computing percentage of completion in construction accounting, and it's what AICPA guidance on construction contracts recognizes as the most defensible measure of progress. Here are the three formulas in sequence:
Percent complete (cost-to-cost method):
Cost-to-date ÷ Total estimated cost
Excel: =D2/C2
This formula gives you a cost-based measure of progress, not a physical completion measure. If your estimated costs change mid-job, percent complete changes even if no additional physical work occurred — which is why keeping your cost estimates current is critical to accurate WIP reporting.
Earned revenue:
Percent complete × Contract price
Excel: =E2*B2
Earned revenue is the amount of contract value you've legitimately recognized based on the work performed. It's what your P&L should reflect for that job in the period, regardless of how much you've invoiced.
Over/under billing:
Earned revenue − Progress billings
Excel: =F2-D2 (where F2 is earned revenue and D2 is progress billings in your sheet layout)
A positive result means you've billed more than you've earned (overbilled, a liability). A negative result means you've earned more than you've billed (underbilled, an asset). This figure drives the month-end journal entry that keeps your balance sheet accurate.
How do you build a WIP schedule using QuickBooks Online and a spreadsheet?
Building a WIP schedule from QuickBooks Online requires five steps: set up your chart of accounts correctly, tag all job costs to sub-customers or projects, run a Profit and Loss by Customer report, export that data to a spreadsheet, and apply the formulas manually. If you're building homes rather than commercial projects, the process has a few differences — see our guide to WIP reporting for homebuilders for the specifics. For commercial and multi-site contractors, follow the steps below.
Step 1 — Set up WIP accounts in your chart of accounts
Navigate to Accounting → Chart of Accounts → New in QuickBooks Online. Create two accounts: "Costs in Excess of Billings" as an Other Current Asset (for underbilled jobs), and "Billings in Excess of Costs" as an Other Current Liability (for overbilled jobs). These accounts capture the WIP adjustment at month-end and ensure your balance sheet reflects the true earned/billed position across all jobs.
QBO Plus or Advanced is required for the class and project tracking you'll need at this level. Simple Start and Essentials don't support the dimensional reporting that makes per-job cost extraction reliable.
Step 2 — Structure jobs as sub-customers or projects
Each job should be set up as a sub-customer under the general contractor or owner account, so that costs and invoices can be reported by job. If you're on QBO Advanced, the Projects feature gives you P&L tracking by job in a dashboard view. However, QBO Projects tracks job profitability — it does not compute earned revenue versus billed revenue, and it produces no over/under billing report. For WIP purposes, sub-customer tracking gives you more flexibility for balance-sheet journal entries, which Projects doesn't handle cleanly.
Step 3 — Pull cost-to-date and progress billings from QBO
Run a Profit and Loss by Customer report, filtered to the current period, to extract cost-to-date by job. For progress billings, run the Invoices report filtered by customer or project and sum the total invoiced through period-end. One important caveat: retainage withheld by the owner is not separated automatically by QBO — it appears within the invoice total. If your contracts include 5–10% retainage (a common holdback in construction billing), you'll need a side schedule to track the retained portion separately, or your progress billings figure will be overstated and your over/under billing calculation will be off.
Step 4 — Build the spreadsheet and apply the formulas
Set up your WIP spreadsheet with these column headers in order: Job Name | Contract Price | Total Est. Cost | Cost-to-Date | Progress Billings | % Complete | Earned Revenue | Over/Under Billing. Enter contract price and total estimated cost manually from your project files — these values don't flow from QBO. Then apply the formulas: =D2/C2 for % complete, =E2*B2 for earned revenue, and =F2-E2 for over/under billing (adjusting column references to match your layout).
Step 5 — Post the month-end journal entry and reverse it
Once you've calculated the net over/under billing position across all jobs, record it as a journal entry in QBO. For underbilled jobs (net asset): debit Costs in Excess of Billings and credit a revenue or construction income account. For overbilled jobs (net liability): debit a revenue or construction income account and credit Billings in Excess of Costs. On day one of the next period, reverse this entry entirely so you start with a clean slate before rebuilding the WIP schedule from fresh QBO data. Without the reversal, prior-period WIP amounts carry forward and corrupt the next month's calculations. This reversal step is what makes the monthly rebuild cycle work as a system — skip it and you'll spend hours reconciling stale numbers.
What does a completed WIP schedule look like?
A complete WIP schedule shows, for each open job, the contract price, estimated cost, cost-to-date, billings to date, percent complete, earned revenue, and the over- or under-billing position. Here's a worked example using a $500,000 contract.
Contract price: $500,000. Total estimated cost: $400,000. Cost-to-date: $200,000. Progress billings: $280,000.
Step through the formulas: Percent complete = $200,000 ÷ $400,000 = 50%. Earned revenue = 50% × $500,000 = $250,000. Over/under billing = $250,000 − $280,000 = −$30,000. That negative number means this job is overbilled by $30,000 — you've invoiced $30,000 more than you've earned. At month-end, you debit a revenue account and credit Billings in Excess of Costs for $30,000 to reflect the liability on your balance sheet.
Job B tells a different story: 75% complete but only $150,000 billed against $225,000 earned. That $75,000 underbilled position sits as an asset on your balance sheet — Costs in Excess of Billings — and signals that you need to accelerate invoicing or you're effectively lending the client $75,000 interest-free. Your net WIP position across both jobs is +$45,000 (asset), which drives the period-end journal entry.
Why does this process break down as your job count grows?
When a construction company is running more than 10 to 15 active jobs simultaneously, the monthly export-rebuild-reconcile cycle for a WIP schedule introduces material risk of error and consumes hours that should go toward financial analysis. According to Forvis Mazars, construction companies face heightened audit scrutiny on WIP accuracy precisely because manual schedules are prone to inconsistency. The structural failure points are real and predictable:
Each month is a full rebuild with no carryforward of prior-period data. If estimated costs change mid-job, prior months must be restated manually — a time-consuming process with no audit trail unless you version-control the spreadsheet yourself.
QBO has no dedicated field for retainage withheld. Retainage must be tracked in a side schedule, creating a reconciliation dependency that breaks if someone forgets to update it.
Contractors operating through multiple LLCs or entities — a common structure in multi-entity construction accounting — have no consolidated WIP view in QBO. Each entity's data must be exported separately and merged, multiplying the rebuild effort.
Profit fade — the gradual erosion of margin as actual costs exceed estimates — is invisible in QBO until month-end when the WIP schedule is rebuilt from scratch.
ASC 606 compliance requires consistent, documented revenue recognition methodology. A spreadsheet-based approach creates audit risk if the calculation methodology varies month to month or between preparers.
LiveFlow's "Finance in the AI Era" report (March 2026) found that 78% of finance teams still move data primarily via manual spreadsheet exports. For construction controllers running WIP schedules this way, that statistic maps directly to a monthly rebuild that gets slower and riskier with every new job added to the backlog.
Is there a faster way to keep your WIP schedule current without rebuilding it every month?
Flow ERP connects directly to project management tools — including Buildertrend, Procore, and JobTread — and computes the WIP schedule automatically from live cost and contract data, so the schedule updates as jobs progress rather than once a month after a manual export. For contractors managing 20 or more active jobs, this eliminates the rebuild entirely and gives finance teams visibility into their over/under billing position at any point in the month, not only after close.
Here's what changes operationally when you move from the manual QBO + spreadsheet method to Flow:
Cost-to-date is always current because Flow reads directly from connected construction integrations — not a point-in-time export. Profit fade surfaces in real time, not at month-end.
The over/under billing position updates continuously as costs are posted and invoices are issued. You can review WIP any day of the month without waiting for a rebuild.
For multi-entity operators running separate entities per project type, geography, or ownership structure, Flow consolidates WIP across all entities natively. There's no manual merging of exported spreadsheets and no reconciliation step between entity-level data.
Flow's Account Harmonization — the process of standardizing chart of accounts naming conventions across entities using AI — ensures WIP accounts are consistent across all entities without manual mapping each time a new entity is added.
Migrating from QuickBooks Online to Flow takes under 2 minutes with all transaction-level data and dimensions carried over. Books are live in 11 days or less.
The manual method described in this guide is worth understanding and worth using when your job count is small. The limitation isn't the method — it's the ceiling. When you're running multiple entities, managing 20+ jobs, and your controller is spending two days a month on WIP alone, the rebuild cycle stops being an accounting process and starts being a bottleneck.
Ready to stop rebuilding your WIP schedule every month?
The manual QBO + spreadsheet method works, and now you have the complete process: chart of accounts setup, job structure, report pulls, formulas, journal entries, and reversals. But the process has a ceiling, and for contractors managing multiple jobs, entities, or locations, that ceiling arrives faster than expected. When the monthly rebuild is taking more time than the analysis it produces, it's time to look at a system built for the job count you're running today.
See Flow in action — book a demo
Frequently asked questions
How do I create a WIP schedule in QuickBooks Online?
QuickBooks Online doesn't generate a WIP schedule natively, so you build it in five steps: set up Costs in Excess of Billings (Other Current Asset) and Billings in Excess of Costs (Other Current Liability) in your chart of accounts; structure each job as a sub-customer or project; pull cost-to-date from a Profit and Loss by Customer report and progress billings from the Invoices report; export both to a spreadsheet and apply the percentage-of-completion formulas; then post and reverse a month-end journal entry. You must enter contract price and total estimated cost manually from your project budget — QBO doesn't store those fields.
Can QuickBooks Online calculate percentage of completion?
QuickBooks Online cannot calculate percentage of completion automatically. QBO has no field for contract price or total estimated cost, so it lacks the two inputs needed to run the cost-to-cost method. You pull cost-to-date and progress billings from QBO reports, then complete the calculation in a spreadsheet using the formula: cost-to-date ÷ total estimated cost. For contractors who need this calculation to run automatically from live project data, Flow ERP connects to project management tools and computes percent complete without a manual rebuild.
What data do I need for a WIP schedule?
A WIP schedule requires four inputs: contract price, total estimated cost, cost-to-date, and progress billings. QuickBooks Online supplies cost-to-date (from the Profit and Loss by Customer report) and progress billings (from the Invoices report). Contract price and total estimated cost come from your project budget or signed contract — these are not stored as accounting-linked fields in QBO and must be entered manually into your WIP spreadsheet each period.
How do I keep a WIP schedule current without rebuilding it every month?
The only way to eliminate the monthly rebuild is to use a platform that reads cost and billing data in real time from your project management tools. Flow ERP connects directly to Buildertrend, Procore, and JobTread and updates the WIP schedule automatically as costs are posted and invoices are issued, so the over/under billing position is current at any point in the month. For multi-entity contractors, Flow consolidates WIP across all entities natively — no exporting, merging, or manual reconciliation required.
How do you record a WIP in accounting?
Recording WIP in construction accounting requires a month-end journal entry based on the net over/under billing position calculated from your WIP schedule. For underbilled jobs (earned revenue exceeds progress billings), debit Costs in Excess of Billings — a current asset — and credit a revenue account. For overbilled jobs (progress billings exceed earned revenue), debit a revenue account and credit Billings in Excess of Costs — a current liability. On day one of the following period, reverse the entry entirely so the WIP schedule can be rebuilt clean from updated data. Financial Professionals and the AICPA construction accounting guide both support this reversal approach as standard practice for percentage-of-completion reporting.
