Contractor Guide

Change orders eat margin when the books don't keep up

Change order accounting is how you keep contract value, estimates, billings, and job costs honest after the scope moves. Most margin leaks on construction jobs don't start as a bad bid — they start as work that left the trailer without a paper trail, sat as "pending," or hit the books under the wrong cost code. By the time the P&L looks wrong, the job is already half done.

Below: approved vs pending vs unapproved, updating contract value and estimates, billing COs, job-cost coding for CO work, and impact on the WIP schedule and percentage-of-completion (POC). Suspect unbilled COs? Start with a DIG Diagnostic.

Why change orders break the books

A change order isn't just a field event. On the books it touches five places at once:

SeatWhat should move when a CO is real
Contract valueUp (or down) for the approved price
Estimated cost at completionUp for the expected cost of the CO work
Job costsActual labor, materials, subs posted to the right job / code
BillingsPay apps that include the CO once it's billable
Earned revenue (POC)Recalculated from the new contract × new % complete

Miss any one and the WIP lies: contract up / estimate stale → fake profit; costs without approval → unbillable underbillings; billed before paper → collectability risk. The fix is matching paper to books every cycle — not a clever journal entry.

Blackline Financial is construction-only bookkeeping and advisory for contractors and specialty trades (roughly $1M–$30M). We do not prepare tax returns — tax treatment of long-term contracts is something we coordinate with your CPA. Job costing, monthly close, and WIP / CO hygiene for Frame-level work live on services. Every engagement starts with a DIG Diagnostic; every package is custom-quoted.

Approved vs pending vs unapproved

These three words get used interchangeably in the trailer. On the books they mean different things — and only one of them should change contract value.

StatusWhat it meansBooks treatment
ApprovedOwner (or GC) signed; price and scope agreedUpdate contract value and estimated cost; bill per contract / SOV; cost the work to the job
PendingSubmitted; waiting on signature or negotiationDo not raise contract value yet; track separately; may accrue costs if work already started (flag as risk)
UnapprovedWork done or directed with no paper (or paper rejected)Do not treat as contract; costs still hit the job; often the root of sticky underbillings

Approved is the only status that should increase the contract column on the WIP. Pending is a pipeline, not revenue. Unapproved is a claim or a giveaway until someone papers it — and "we'll catch it at the end" is how contractors finance the owner's project.

Owner-facing rule: if the work is happening, the paper should already be moving. If the paper isn't signed, the job is carrying cost without a matching contract bump — that shows up as margin fade or as underbillings that never clear.

Pending isn't worthless — it's a forecast. Track pending COs off to the side (or in a pending column) so cash planning and bonding conversations know what's in flight. Just don't let pending quietly become "we already booked it."

Updating contract value and estimates

When a CO is approved, update both sides of the estimate — price and cost — in the same close cycle. Updating only the contract value is how jobs look more profitable than they are.

Contract value. Add the approved CO amount to the job's current contract. The WIP "contract" column should always mean current price including approved change orders, not original bid. If you run a schedule of values, add a CO line (or revise the affected lines) so billing can follow.

Estimated cost at completion (EAC). Add the expected cost of the CO work — labor, materials, equipment, burden, subs — using the same cost codes you estimate with. If the CO is a credit / deductive change, reduce EAC as well as contract. Stale EACs poison percent complete; poisoned percent complete poisons earned revenue under POC.

Estimated gross profit. New contract − new EAC. Thin pricing or cost already spent above the CO price should drop estimated GP — that's information, not something to hide. Confusing markup vs margin at bid time is how "approved" COs still lose money.

Timing. Catch the books up in the same month the CO is signed (or the next close). Leaving approved COs off the WIP for "later" fakes the over/under position until a bank or surety asks for a current schedule.

UpdateDoDon't
ContractRaise (or lower) for approved COs onlyBook pending / unapproved as contract
EACRaise for expected CO cost in the same cycleLeave original estimate untouched after a big CO
GPRecalculate; face thin or negative CO marginAssume every CO is "extra profit"
HistoryKeep original bid + CO log auditableOverwrite the original contract with no trail

Billing change orders

Approved doesn't automatically mean billed. Billing COs is its own failure mode — and one of the most common sources of underbillings.

When you can bill. Follow the contract (on execution, in place, or next pay-app cycle). Put a hard internal deadline on it — treat a missed CO draw like a missed payroll.

On the pay app. Add the CO to the schedule of values, include it in the current application, and keep retainage rules consistent with the base contract unless the CO says otherwise.

What not to do.

  1. Bill before approval — creates AR the owner can dispute and a collectability mess.
  2. Do the work and wait for "one big CO at the end" — turns into unbillable cost or a claim.
  3. Approve on paper, forget the pay app — classic underbilling: earned (and spent) with nothing invoiced.
  4. Park CO billings in a generic income account — breaks job-level WIP and makes over/under meaningless.

If the portfolio under-bill is mostly "COs we haven't invoiced," that's a process fix, not a margin mystery. If the under-bill is "work we did that will never get a CO," that's fade — update EAC and let POC tell the truth.

Job-cost coding for CO work

Change-order work that posts to the wrong place is invisible until it's expensive.

Same job, clear codes. CO costs belong on the same job as the base contract. Use cost codes that match how you estimate — ideally a CO-specific code, a CO suffix on existing codes, or a phase that your job costing in QuickBooks Online setup can report. The goal: you can answer "what did CO #7 actually cost?" without a forensic rebuild.

Labor, burden, subs, materials. Same burden rules as base work; vendor bills and POs should reference the job and the CO (or CO code). Dump codes and untagged materials make the CO look fine until closeout while base codes eat the overrun.

Unapproved work already in motion. Still post costs to the job (so WIP/EAC stay honest), flag pending/unapproved exposure, and push the paper. Parking those costs in overhead just moves the lie.

Coding habitResult
CO costs on job + CO codeCO margin visible; WIP/EAC updateable
CO costs on job, no CO tagBase codes absorb overruns; CO looks fake-profitable
CO costs in overhead / dumpJob and company both lie; underbillings harder to explain
CO revenue without CO cost codesInflated CO GP; surprise at closeout

Clean coding is what makes the next section — WIP and POC — trustworthy. Pretty CO logs on top of mushy job costs are still mush.

Impact on WIP and POC

Change orders are not a side schedule. They rewrite the inputs that drive the WIP schedule and percentage-of-completion.

WIP columns that move

WIP columnCO effect
Contract value+ approved CO price (only)
Estimated total cost+ expected CO cost (EAC)
Costs to dateActual CO costs as posted via job costing
Percent completeUsually costs to date ÷ new EAC — moves when either side changes
Earned revenueNew contract × new % complete
Billed to date+ CO billings once pay apps include them
Over / under billingRecast after contract, earned, and billed all update — see over / under billing

POC. Under cost-to-cost, earned follows percent complete. A proportional CO (price and EAC up together) may barely move % complete, but earned still steps up with the larger contract as work progresses. Cost ahead of price — or cost spent before approval — can drop % complete and expose fade. That's the system working.

Underbillings linked to COs. Sticky underbillings usually mean approved-but-unbilled COs, pending/unapproved work already costed, or EAC up with no contract bump. Don't "bill harder" until you know which — over / under billing walks that fork. Thin COs also fade estimated GP; that read lives on the same WIP that drives POC, not a separate magic report.

Labeled example (illustrative only)

Example only — not a client case, not a quote. Round placeholder figures to show the books path.

Starting position (Job D, before CO):

ItemAmount
Original contract$1,000,000
Original EAC$800,000
Costs to date$400,000
Percent complete50%
Earned revenue$500,000
Billed to date$480,000
Position$20,000 under

Approved CO #1: +$100,000 price, expected cost +$70,000. Same month, $40,000 of CO cost is already posted; CO not yet billed.

ItemAfter CO books catch-up (illustrative)
Contract$1,100,000
EAC$870,000
Costs to date$440,000
Percent complete~50.6% ($440K ÷ $870K)
Earned revenue~$556,600
Billed to date$480,000 (CO not on pay app yet)
Position~$76,600 under

Illustrative only. Not a client case, not a quote.

How to read it:

Stack CO catch-up every month as part of close (how we close), not the week a pay app or bonding packet is due.

What "good" looks like month to month

  1. Paper before (or with) the work — approved COs update contract and EAC in the same close; pending stays pending.
  2. Bill COs on the next eligible pay app — no "we'll catch CO billing at the end."
  3. Cost CO work to the job with CO-aware codes — so CO margin is visible (job costing).
  4. Rebuild WIP after CO updates — contract, EAC, costs, billed, over/under (WIP schedule).
  5. Face thin COs — estimated GP after COs is allowed to get worse; hiding it in a stale estimate only delays the confession (POC).
  6. Separate unbillable from unbilled — unapproved work is a paperwork or margin problem; approved-unbilled is a billing calendar problem (over / under billing).

This only works on construction books: complete job costing, a current WIP, and a disciplined close. A tidy CO log on top of unreconciled accounts is still fiction.

FAQ

What is change order accounting in construction?

Change order accounting is how contractors update contract value, cost estimates, job-cost coding, and billings when scope changes — so the WIP schedule and percentage-of-completion stay honest. Approved COs change the books; pending and unapproved COs need tracking without pretending they're contract revenue.

When should we update contract value for a change order?

When the CO is approved (signed / executed). Pending submissions and unapproved field work should not raise the WIP contract column. Update estimated cost at completion in the same cycle as the contract bump.

How do change orders affect WIP and percentage-of-completion?

Approved COs raise contract value and usually raise EAC. Percent complete (often cost-to-cost) and earned revenue recalculate from those new inputs; billings catch up when the CO hits a pay app. The over/under column on the WIP moves as a result — see WIP schedule, POC, and over / under billing.

Why do unapproved change orders show up as underbillings?

Costs hit the job (and can inflate earned revenue if EAC isn't faced), but you can't invoice without paper. That gap looks like underbilling. Fix the paper — or, if the work will never be approved, update EAC and recognize the margin hit instead of chasing an invoice that isn't coming.

How should we job-cost change order work?

Post CO labor, materials, and subs to the same job with codes that isolate CO cost (CO code, suffix, or phase). That is what makes CO margin and EAC updates real. Setup patterns for QBO: job costing in QuickBooks Online.

Can Blackline help find unbilled change orders?

Yes — the DIG Diagnostic is where we review books, job costing, WIP, and close for contractors (roughly $1M–$30M). Ongoing close and WIP hygiene sit in Foundation / Frame; fractional CFO planning in Blueprint — all custom-quoted on services / contact. We don't prepare tax returns; we coordinate with your CPA when tax questions come up.

Ready to stop financing unbilled change orders?

Tell us about your construction business and we'll put together a custom quote — usually within one business day. DIG first; no invented rate card.

Book the DIG Diagnostic →

Get a custom quote →

See services and packages →

Call (480) 617-2664

Blackline Financial · 4320 E Brown Rd, Suite 103, Mesa, AZ 85205