The WIP Schedule: A Walkthrough With Real Numbers
Updated 2026-10

What this walkthrough builds
A WIP schedule is one row per open job and a handful of columns. Every column is either a number from the contract, a number from QuickBooks, a number from the person running the job, or arithmetic on those three. This page builds one for a contractor with three open jobs at the end of a month, then reads it the way a surety underwriter would.
The figures are invented and round so the arithmetic is easy to follow.
The three jobs
Job A, a commercial tenant fit-out
The contract is $400,000. The current estimate of total cost is $320,000, so the expected gross profit is $80,000, a 20 percent margin. Cost to date is $160,000. Billed to date is $200,000.
Job B, a warehouse addition
The contract is $250,000 and the estimated total cost is $200,000, also a 20 percent margin. Cost to date is $60,000. Billed to date is $110,000, because the first two pay applications front-loaded mobilisation and site work.
Job C, a medical office remodel
The contract is $180,000, including one approved change order. The estimated total cost is $150,000, a margin of about 16.7 percent. Cost to date is $120,000. Billed to date is $100,000, because a large equipment package was delivered and paid for late in the month and has not yet appeared on a pay application.
Building each row
The method most small contractors use is cost-to-cost. Percent complete is cost to date divided by estimated total cost. Earned revenue is percent complete times the contract. The billing position is billed to date minus earned revenue. A positive answer is an over-billing; a negative one is an under-billing.
Job A comes out on track
$160,000 of $320,000 is 50 percent complete. Half of $400,000 is $200,000 earned. Billed to date is $200,000, so the job is neither over nor under. Cost to complete is $160,000.
Job B comes out over-billed
$60,000 of $200,000 is 30 percent complete. Thirty percent of $250,000 is $75,000 earned. The customer has been billed $110,000, so the job is over-billed by $35,000. Cost to complete is $140,000. The customer has paid for work that has not been done, and that $35,000 is owed back to the job in labour and material.
Job C comes out under-billed
$120,000 of $150,000 is 80 percent complete. Eighty percent of $180,000 is $144,000 earned. Billed to date is $100,000, so the job is under-billed by $44,000. Cost to complete is $30,000. The company has spent money on this job that it has not yet asked for.
The totals line
Add the columns down. Contract value is $830,000. Estimated total cost is $670,000, for an expected gross profit of $160,000. Cost to date is $340,000. Earned revenue is $419,000. Billed to date is $410,000.
Over-billings total $35,000 and under-billings total $44,000. They are not netted inside the schedule. Each is reported on its own line because they go to different places on the balance sheet. The over-billing is a current liability, usually labelled billings in excess of costs and estimated earnings. The under-billing is a current asset, usually labelled costs and estimated earnings in excess of billings.
Two more totals matter to anyone reading the schedule. Backlog, the revenue still to be earned on signed work, is $830,000 minus $419,000, or $411,000. Gross profit left in that backlog is $411,000 minus the $330,000 of cost to complete, or $81,000. Gross profit already earned is $419,000 minus $340,000, or $79,000. The two add back to the $160,000 expected at the start, which is the check that the rows were built consistently.
The schedule also changes the income statement. If the books recognise revenue as invoices go out, this month's revenue is $410,000. The schedule says $419,000 has been earned. The $9,000 net difference is the adjustment that moves the profit and loss from billings to earnings. That entry is made to the two WIP accounts on the balance sheet, then reversed or updated the following month.
Where each number comes from in QuickBooks
Contract value comes from the accepted estimate plus approved change orders
If the job is set up as a project and invoiced from its estimate with progress invoicing, the estimate total is the starting contract. Approved change orders should be added to that estimate or entered as their own estimates on the same project. Pending change orders stay out until they are signed. A change order still under discussion inflates the contract and makes the job look more complete in revenue than it is.
Cost to date comes from the project's actual costs through month end
In QuickBooks Online this is the project's profitability view or a profit and loss filtered to the project, run on an accrual basis with the end date set to the last day of the month. The number is only right if every bill, every receipt and every payroll run has been coded to the project, and if bills for work done in the month have been entered even when they are not yet paid. A supplier invoice sitting in someone's truck is cost the schedule cannot see.
Billed to date comes from invoices, gross of retainage
Run sales by customer or the project's income through month end. The figure should be the full amount billed, including retainage withheld, because retainage is billed revenue that has not been collected yet. If retainage is netted off, every job will look under-billed by the retainage amount.
Estimated total cost comes from the person running the job, not from QuickBooks
QuickBooks holds the original budget if the estimate carried costs, and QuickBooks Online Advanced has an estimates versus actuals report under each project's reports. That report shows the original budget. The WIP schedule needs the current estimate, revised every month by the project manager or the owner, including known overruns and savings. Using the original budget on a job that is running over makes percent complete too high and earned revenue too high, and the schedule reports profit the job will never produce.
QuickBooks Desktop has a job estimates versus actuals summary that gives the same starting point. Neither version produces a finished WIP schedule, so the schedule is usually built in a spreadsheet each month from these exports.
What a surety reads into the totals
Sureties and bank credit officers generally read the WIP schedule alongside the balance sheet and the previous schedule. Several things stand out on this one.
The over-billing on Job B is cash the company is holding for future work
Over-billing is common and is not a problem by itself. The question an underwriter generally asks is whether the cash is still there. If the bank balance is comfortably above total over-billings, the company is funding its jobs with customer money, which is normal. If cash is lower than over-billings, the money has likely gone to overhead or to another job, and Job B will need cash the company does not have when its remaining $140,000 of cost arrives.
The under-billing on Job C is the number that gets questioned first
An under-billing is an asset, but it is an asset that depends on the cost estimate being right. Underwriters tend to treat large under-billings with suspicion, because a common cause is a cost overrun that has not yet been admitted in the estimate. In this example there is an innocent explanation, a delivered equipment package not yet on a pay application. That explanation belongs in a note on the schedule, and the next pay application should clear most of the $44,000. If it is still there next month, it looks like an overrun.
Margin fade shows up between schedules, not inside one
A single schedule says Job C is expected to make 16.7 percent. If last quarter's schedule said 22 percent on the same job, the gross profit has faded, and the reader will assume the other jobs could fade too. A schedule that shows estimated margins drifting down across several months says more about the estimating than any one month does.
Net under-billing reduces working capital in practice
On paper the $9,000 net under-billing adds to current assets. Many sureties discount under-billings when they calculate working capital, and some exclude them, because they are not collectible until billed. A contractor whose working capital depends on under-billings has less room for new bonded work than the balance sheet suggests.
Where to go next
- Job Costing and WIP Reports for Contractors
- Job Costing in QuickBooks Online, Step by Step
- Progress Billing, Retainage and Deposits: Where Contractor Cash Goes
- Bookkeeping for General Contractors
Common questions
How often should a WIP schedule be prepared?
Monthly is the useful rhythm, because over- and under-billings change with every pay application and the revenue adjustment belongs in each month's books. Sureties and banks usually ask for one quarterly or with year-end statements. A schedule built only when someone asks for it tends to have stale cost estimates.
Should completed jobs appear on the WIP schedule?
Open jobs go on the main schedule. Many sureties also ask for a list of jobs completed during the year with their final contract, cost and margin, because it shows how the estimates held up at the finish. Keep that as a separate schedule.
Can QuickBooks produce the WIP schedule by itself?
Not as a finished report. QuickBooks supplies contract value, cost to date and billed to date if jobs are coded to projects consistently. The current estimate of total cost has to come from whoever is running the job, and the calculation is usually done in a spreadsheet.
Is it bad to be over-billed?
Not on its own. Over-billing means the customer has paid ahead of the work, which helps cash. It becomes a problem when the cash has been spent elsewhere and the remaining work has to be paid for out of money the company no longer has.
Does retainage change the WIP calculation?
Billed to date should include retainage withheld, since it was billed. Retainage receivable is then carried separately on the balance sheet. Leaving it out of billed to date makes every job with retainage look under-billed.