WIP ReportsJune 2026 · 11 min read

How to Create a WIP Schedule in QuickBooks Online — Step-by-Step

QuickBooks Online doesn't have a built-in WIP schedule. But all the data you need is already in QBO — you just have to know which reports to pull and how to assemble them. Here's exactly how to do it.

What you need before you start

Each active job needs to exist as a sub-customer in QBO. Bills, expenses, and payroll must be coded to the correct job. Invoices must be linked to the right customer/job. If job coding is inconsistent, your WIP numbers will be wrong — fix that first.

What a WIP schedule actually is

A WIP (Work in Progress) schedule is a financial report that shows the status of every active construction project at a specific point in time. For each job it answers four questions:

  • How much of the contract has been earned (based on work completed)?
  • How much has been billed to the client?
  • Is the contractor ahead of or behind on billing relative to earnings?
  • What does it cost to finish the remaining work?

Banks, bonding companies, and CPAs use the WIP schedule to assess whether a contractor is financially healthy. It's also the most accurate way to recognize revenue on long-term construction contracts under GAAP and ASC 606.

Step 1 — Pull the Job Profitability Summary from QBO

In QuickBooks Online, go to Reports → Job Profitability Summary (under Business Overview or by searching). This gives you for each job:

  • Actual income (invoices billed)
  • Actual costs (bills, expenses, payroll coded to the job)

Set the date range to All Dates so you see totals from project start, not just the current period. Export this to a spreadsheet — you'll use it as the base of your WIP schedule.

Note: If you're on QBO Simple Start, you won't have Job Profitability reports. You'll need to use the Profit & Loss by Customer report instead, which is available on Essentials and above.

Step 2 — Pull contract values and estimated costs from Estimates

The Job Profitability report only shows what's been entered — not the total contract value or the estimated costs needed to finish. For that you need:

  • Contract value: Pull from QBO Estimates — the accepted estimate amount is the contract value. If there are change orders, add those manually.
  • Estimated total cost: This should be on the estimate as well — the total budgeted cost. If your contractor doesn't use QBO estimates, you'll need to get these numbers directly from the contractor.

Go to Reports → Estimates by Customer to pull all open estimates with their totals. Match each estimate to its corresponding job in your spreadsheet.

Step 3 — Calculate % complete using the cost-to-cost method

The cost-to-cost method is the industry standard and is required by most bonding companies and lenders. The formula:

% Complete = Costs Incurred to Date ÷ Estimated Total Costs

For example: A job with $180,000 in estimated total costs. If $72,000 has been spent so far, the job is 40% complete.

Do not use physical completion percentages ("we're 60% done with the framing"). Bonding companies reject these — they want a number that can be verified directly from the accounting records.

Step 4 — Calculate revenue earned

Revenue Earned = Contract Amount × % Complete

This is the amount of revenue the contractor has legitimately earned based on work completed — regardless of how much has been invoiced. This is the key number in the WIP schedule. It's what gets booked to the income statement under percentage-of-completion accounting.

Step 5 — Calculate over/under billings for each job

Compare revenue earned to billings to date (from the Job Profitability report):

Situation
What it means
Billings > Revenue Earned
Over-billed — contractor invoiced more than they've earned. This is a liability (Billings in Excess of Costs on the balance sheet).
Revenue Earned > Billings
Under-billed — contractor has earned more than they've invoiced. This is an asset (Costs in Excess of Billings on the balance sheet).

Step 6 — Add retainage

Retainage is the portion of each invoice withheld by the owner or GC until project completion — typically 5–10% of contract value. It needs to be tracked separately because:

  • It's still receivable but not collectable until the job is complete
  • Bonding companies and lenders want to see it broken out on the WIP schedule
  • It affects cash flow planning — a contractor with $200,000 in retainage receivable needs to know when it will be released

In QBO you can track retainage by creating a separate retainage receivable item on each invoice, or by using a separate retainage account. Pull the total retainage held per job and add it as a column on your WIP schedule.

The complete WIP schedule columns

Column
Source in QBO
Calculated
Contract Amount
Accepted Estimate
Estimated Total Costs
Estimate cost budget
Costs Incurred to Date
Job Profitability → Actual Costs
% Complete
Costs to Date ÷ Est. Total Costs
Revenue Earned
Contract Amount × % Complete
Billings to Date
Job Profitability → Actual Income
Over Billing
Billings − Revenue Earned (if positive)
Under Billing
Revenue Earned − Billings (if positive)
Retainage Held
Retainage receivable account
Cost to Complete
Est. Total Costs − Costs to Date
Gross Margin
(Contract − Est. Total Costs) ÷ Contract

Common mistakes to avoid

  • Using invoice date instead of all-dates for billings

    Always pull cumulative billings from project start — not just the current period. A WIP schedule shows the lifetime status of each job, not just what happened this month.

  • Forgetting change orders in contract value

    If a change order was approved and billed, the contract amount must be updated. A stale contract value makes the % complete and over/under billing calculations wrong.

  • Not updating estimated costs as jobs progress

    If estimated total costs change (due to scope creep, cost overruns), you must update them. Keeping stale estimates inflates % complete and hides losses.

  • Including completed jobs

    Once a job is complete (100% billed, retainage released), remove it from the WIP schedule. Completed jobs should move to a separate completed contracts schedule.

How long does this take manually?

For a contractor with 10–15 active jobs, building this schedule manually takes 2–4 hours every month. You have to export multiple QBO reports, clean the data, paste it into a spreadsheet, write or re-check the formulas, and format the output. And every month you do it again from scratch.

Build this WIP schedule in 30 seconds

ReconcileBook connects directly to QuickBooks Online and generates the complete WIP schedule automatically — every job, every column, using live QBO data. No spreadsheet. No manual exports. Ready to download as a PDF and send to bonding companies or clients.

Questions about WIP schedules in QBO? Email us or browse more guides.