Construction Financial ReportsA two-guide course

Construction Financial Reports — Past & Present


Preface

What this guide covers

This guide covers historical financial reports — reports that represent transactions and months that have already occurred. They fall into three categories:

#CategoryReports it coversIn this guide
1Company levelBalance sheet, income statement, statement of cash flows, WIPChapters 2–6
2Job levelJobs, shown in summary or in detailChapters 7, 8
3Service levelWork orders, planned maintenance contractsChapter 9 (placeholder)

Future-looking reports (forecasted income statement, forecasted balance sheet, forecasted cash flows, backlog) are not historical reports, so they are covered under the Future Reports.

Why construction finance is its own subject

Ordinary accounting looks at a company. Construction accounting must look at a company and the jobs the company is doing. Each job is essentially a mini-company with its own balance sheet, income statement, budget, and cash flows. A job can run for months or even years, so we have to estimate what we think a job is going to cost in order to estimate how much profit it will make. Estimates are never accurate — they are always too high or too low — but we use these estimates in order to recognize revenue. These estimates can change from month to month, so we need to keep track of them over time to see whether the job is losing or making money. Understanding construction accounting means understanding how the jobs operate.

Work in Progress (WIP) is the bridge between what is happening on each job site and what shows up on the company's financial statements.


Chapter 1 — Why Construction Accounting Is Different

1.1 Two lenses on the same business

Ordinary financial reporting revolves around "did the company make money this month?" The answer is as easy as summing up the revenue accounts and deducting the expense accounts. A single SQL query can produce the answer.

In construction, the answer must first be calculated on a job-by-job basis. Billings must be converted into revenue by moving the excess or deficiency to the balance sheet as an overbilling or underbilling.

As an analogy, think of a layered cake. If every layer were the same size, only the number of layers would affect the height. But if the layers are different sizes, the height depends on the mix of layers. In construction, the layers are jobs, and they vary in size based on the profitability of each one — some high-profit jobs, some low-profit jobs. Sometimes one job represents 50% of a month's revenue; other times it's insignificant. The mix of the jobs determines how much revenue is recognized.

1.2 The four questions

The four questions and the report that answers each — Balance Sheet, Income Statement, Cash Flow Statement, WIP

The fourth is what makes construction complicated — and it's complicated because it essentially contains components of the other three. A job is a mini-company: it has a balance sheet (over/under billings and unpaid Accounts Receivable, or AR), an income statement (revenue and costs), and a cash flow — what the customer has paid (total AR − unpaid AR) minus what the company has paid out (total job costs − unpaid AP).


Chapter 2 — The Four Core Financial Reports

2.1 The Balance Sheet

A balance sheet is a snapshot of the company on a single day: everything it owns, everything it owes, and whatever is left over for the owners. Think of your own finances — total what you have (cash, car, house), subtract what you owe (loans, credit cards), and what remains is yours. A company works the same way:

Assets = Liabilities + Equity

In plain terms: what it owns = what it owes + the owners' share. The two sides always balance, because every dollar the company holds came from somewhere — someone lent it (a liability), or the owners put it in or earned it (equity).

Now the construction-specific accounts — the ones general accounting doesn't have — sit on top of the usual cash, AR, AP, debt, and equity:

Assets

  • Retention Receivable — amounts the customer withholds from your billings until the job is complete
  • Underbilling — completed work you haven't billed yet

Liabilities

  • Overbilling — billings ahead of the work completed
  • Retention Payable — amounts you withhold from your subcontractors until their work is complete

If it doesn't balance, something is missing — so the Balance Sheet doubles as a data-integrity check.

Order by liquidity

The order of the accounts on a balance sheet is not arbitrary — assets are listed from most liquid to least liquid. Liquidity is how quickly something can be turned into cash without losing value: the most liquid sits at the top, the hardest-to-sell at the bottom.

Think of your own assets, top to bottom:

  • Cash is already cash — the most liquid, so it goes first.
  • Stock can be sold for cash in a day or two, so it comes next.
  • Furniture would be a hassle to sell, but you could unload it to raise cash if you had to — so it sits lower.
  • The house comes last: worth the most, but the slowest to turn into cash.

A construction balance sheet follows the same rule — Cash, then Accounts Receivable, then the slower-to-collect items like Retention Receivable and Underbillings, then Prepaids, and finally Equipment and other fixed assets. Liabilities mirror it, with what's due soonest listed first.

Because the sequence carries this meaning, don't let it get scrambled. If your accounting software keeps re-grouping the accounts or won't hold the order you set when you save, that's worth fixing: a balance sheet sorted out of liquidity order misleads anyone reading it.

2.2 The Income Statement

Revenue − Direct Cost = Gross Profit
Gross Profit − Overhead/G&A = Net Income

The key construction twist: Revenue is earned, not invoiced. It follows progress, not the billing schedule.

One report, multiple flavors

The same Revenue − Cost − Expense logic gets presented several ways, and you'll see all of them:

  1. MTD and YTD — this month's activity next to the year-to-date total.
  2. Month-by-month columns — Jan, Feb, Mar … Dec, each as its own column, plus a YTD total column.
  3. Actual vs Budget — YTD actual beside YTD budget, with a Variance column. This is the company-level budgetary report.
  4. Divisional — the same statement with a subtotal per division (when the company has divisions), rolling up to a company total.

How a single month is calculated

The general ledger stores cumulative (YTD) balances, so one month's activity is a difference:

Month = YTD (this period) − YTD (prior period)

March, for example, is YTD-through-March minus YTD-through-February — and the months always tie back to the year:

Jan + Feb + Mar + … + Dec = YTD (full year)

A month-by-month statement (year-to-date through March, $000s) looks like this:

LineJanFebMarYTD
Revenue6005206801,800
Direct Cost5104405701,520
Gross Profit9080110280
Overhead / G&A707070210
Net Income20104070

The month columns sum across to the YTD column, and each was backed out of the cumulative ledger (March = YTD-March 1,800 − YTD-Feb 1,120 = 680).

Actual vs Budget

The budgetary report puts YTD actual next to YTD budget and shows the gap:

LineYTD ActualYTD BudgetVariance
Revenue1,8001,700+100
Direct Cost1,5201,400+120
Gross Profit280300−20
Overhead / G&A210200+10
Net Income70100−30

Variance is Actual − Budget, read line by line: the extra revenue is good, but the +120 on cost and +10 on overhead are overruns — which is why net income landed $30K under plan even though revenue beat budget.

2.3 The Cash Flow Statement

There are two ways to build it, and both land on the same answer:

  • Direct — look straight at the bank account: money coming in, money going out. Beginning cash + cash collected − cash paid = ending cash. It reconciles the beginning balance to the ending balance by listing the actual flows.
  • Indirect — explain the change in cash by looking at everything except cash. Start with net income and adjust for the movement in every other account. It is easier to calculate from the books and paints a broader picture of why cash moved.

The indirect logic is the counter-intuitive part, and it is worth internalizing:

  • AR goes up → cash goes down. Your customers owe you more than they did before — the revenue is booked, but the cash hasn't landed yet.
  • AP goes up → cash goes up. You owe your vendors more than before — you would have paid them, but you didn't, so the cash is still in your account.

Add up the change in every account besides cash, and what's left is the change in cash.

The lesson: ↑AR consumes cash, ↑AP temporarily provides cash, retention delays cash.

2.4 The WIP Report

The WIP report consists of every job a contractor is doing. Some jobs are more profitable than others, some haven't started yet, and others are finished or almost finished. It is the construction-specific fourth report, and its totals must tie to the income statement — the revenue and cost recognized across all the jobs on the WIP schedule are the company's revenue and direct cost for the period. Chapter 4 builds it column by column.


Chapter 3 — The Trial Balance: Where Every Report Comes From

Every report in this guide is a grouping of one list. The general ledger holds every account and its balance; the trial balance is that list at a point in time. Because every transaction posts an equal debit and credit, the trial balance must balance: total debits = total credits. The income statement, the balance sheet, and the WIP schedule are not separate data — they are just different groupings and subtotals of these same accounts.

The trial balance is cumulative. It shows account balances, not the activity of a single day — and two clocks run inside it. Balance-sheet accounts (1000s–3000s) accumulate over the entire life of the company: today's Cash, Accounts Receivable, and Retained Earnings carry forward from one period into the next. Income-statement accounts (4000s–9000s) accumulate only within the fiscal year — they build up month by month as year-to-date figures, then close into Retained Earnings at year-end and reset to zero for the new year. So every trial balance is read "as of" a date: life-to-date for the balance-sheet accounts, year-to-date for the income-statement accounts.

3.1 A sample trial balance

A small construction company, year-to-date. Account numbers follow a standard chart of accounts — 1000s assets, 2000s liabilities, 3000s equity, 4000s revenue, 5000s direct job cost, 6000s indirect job cost, 7000s overhead, 8000s other income, 9000s other expense:

AcctAccountDebitCreditGroups into
1000Cash200,000Balance Sheet — Asset
1100Accounts Receivable300,000Balance Sheet — Asset
1150Retention Receivable50,000Balance Sheet — Asset (WIP)
1200Underbillings100,000Balance Sheet — Asset (WIP)
1300Prepaid Expenses50,000Balance Sheet — Asset
1500Equipment400,000Balance Sheet — Asset
1510Accumulated Depreciation100,000Balance Sheet — Asset (contra)
2000Accounts Payable200,000Balance Sheet — Liability
2050Retention Payable50,000Balance Sheet — Liability (WIP)
2100Overbillings150,000Balance Sheet — Liability (WIP)
2200Line of Credit100,000Balance Sheet — Liability
2300Accrued Payroll & Taxes50,000Balance Sheet — Liability
3000Common Stock100,000Balance Sheet — Equity
3100Retained Earnings (beginning)300,000Balance Sheet — Equity
4000Contract Revenue (JTD)1,250,000Income Statement — Revenue (WIP)
5000Job Labor400,000Income Statement — Direct Cost (WIP)
5100Job Materials300,000Income Statement — Direct Cost (WIP)
5200Subcontractors250,000Income Statement — Direct Cost (WIP)
5300Other Job Costs50,000Income Statement — Direct Cost (WIP)
7000Overhead / G&A150,000Income Statement — Overhead
7100Depreciation Expense50,000Income Statement — Overhead
Total2,300,0002,300,000Debits = Credits

Three groupings come straight off that "Groups into" column.

3.2 Group the revenue and expense accounts → Income Statement

Revenue on the income statement is JTD revenue, not billings. The WIP true-up (Section 3.4) converts billings into JTD revenue by parking the difference on the balance sheet as an over/under-billing:

Billings                                         1,300,000
+ Underbilling (completed work, not yet billed)    100,000
− Overbilling (billed, not yet completed)        (150,000)
= JTD Revenue                                    1,250,000
− Direct Cost (labor + mat + sub + other)        1,000,000
= Gross Profit                                     250,000
− Overhead / G&A (incl. depreciation)              200,000
= Net Income                                        50,000

3.3 Group the asset, liability, and equity accounts → Balance Sheet

Net income from the income statement closes into equity, so the two statements share a number:

AssetsLiabilities & Equity
Cash200,000Accounts Payable200,000
Accounts Receivable300,000Retention Payable50,000
Retention Receivable50,000Overbillings150,000
Underbillings100,000Line of Credit100,000
Prepaid Expenses50,000Accrued Payroll & Taxes50,000
Equipment (net of depreciation)300,000Total Liabilities550,000
Common Stock100,000
Retained Earnings300,000
Current Net Income50,000
Total Assets1,000,000Total Liabilities + Equity1,000,000

Assets 1,000,000 = Liabilities 550,000 + Equity 450,000. It balances — the data-integrity check from Chapter 2 in action.

3.4 The WIP schedule explains the construction accounts

Four of those accounts — Contract Revenue, the job costs, Underbillings, and Overbillings — don't come from a single source. They come from the WIP schedule (Chapter 4), which recomputes each job's JTD revenue and compares it to billings:

JobContractEst. Costs at CompletionJTD Costs%JTD RevenueJTD BillingsOver / (Under)
A1,000,000800,000400,00050%500,000400,000(100,000)
B1,000,000800,000600,00075%750,000900,000150,000
Total2,000,0001,600,0001,000,0001,250,0001,300,000

Notice how the WIP totals land on the trial balance:

  • JTD revenue 1,250,000 → Contract Revenue (Income Statement).
  • JTD costs 1,000,000 → the job-cost accounts (Income Statement).
  • Job A is billed behind its earnings → Underbillings 100,000 (asset).
  • Job B is billed ahead of its earnings → Overbillings 150,000 (liability).

3.5 Why it all ties

Trial balance balances:     Debits 2,300,000 = Credits 2,300,000
Net income flows to equity: Income Statement 50,000 -> Balance Sheet equity
Balance sheet balances:     Assets 1,000,000 = Liabilities 550,000 + Equity 450,000
WIP feeds both:             JTD revenue & cost -> Income Statement
                            over / under billings -> Balance Sheet

One list of accounts; three reports. Once you can see the groupings, every report in this guide stops being a new thing to memorize and becomes a different view of the same ledger.


Chapter 4 — Work in Progress (WIP): The Bridge

4.1 What is a WIP report?

A WIP report summarizes each job into a single row, and includes all the key information in columns. This allows a user to quickly understand the important, bad, or good jobs a company has at a glance. Each job contains further detail, which is covered in Chapter 8.

4.2 A basic WIP report

Each row carries these columns (JTD = job-to-date — the cumulative figure for the job):

  1. Contract Amount
  2. Est. Costs at Completion
  3. Est. Gross Profit = Contract Amount − Est. Costs at Completion
  4. JTD Costs
  5. JTD Billings
  6. JTD Revenue = (JTD Costs / Est. Costs at Completion) × Contract Amount
  7. Overbilling — when JTD Revenue < JTD Billings
  8. Underbilling — when JTD Revenue > JTD Billings
  9. Billing Backlog = Contract Amount − JTD Billings
  10. Revenue Backlog = Contract Amount − JTD Revenue
  11. % Complete = JTD Costs / Est. Costs at Completion (never below 0% or above 100%)

4.3 Two terms people constantly confuse

The two terms people constantly confuse:

  • Revenue — recognized under accounting rules as work is performed on jobs over a period of time.
  • Billings — amounts billed to the customer on a job over a period of time.

4.4 Over- and under-billing, and the Balance Sheet

JTD Billings > JTD Revenue  -> Overbilling  -> LIABILITY (you owe future work)
JTD Revenue > JTD Billings  -> Underbilling -> ASSET (completed work, not yet billed)

Underbilling is an asset, but a low-quality one if it comes from unapproved change orders or optimistic estimates. It can also flag a problem with the job. If the cost ratio (JTD costs / Est. Costs at Completion) says a job is 90% complete, it should have billed roughly 90% of the contract too. If billings are trailing at 70%, the job may really be only 70% complete — meaning the denominator (Est. Costs at Completion) is understated and needs to rise, which lowers the job's estimated gross-profit %. The real question underbilling raises is: why can't you bill?

Overbilling is a liability, but a good thing. Taken to the extreme, a customer would pay you 100% upfront — you'd carry a liability until you'd worked it off, but at least the cash is in the bank.

4.5 How WIP connects to the three statements

JTD Revenue                -> Revenue (Income Statement)
JTD Costs                  -> Direct Cost (Income Statement)
Underbilling               -> asset on the Balance Sheet
Overbilling                -> liability on the Balance Sheet
JTD Billings − Collections -> Accounts Receivable (Balance Sheet)
Cash Collected − Cash Paid -> Operating cash flow (Cash Flow Statement)

This is why WIP is the core basis for revenue recognition and balance-sheet classification.

4.6 Profit Fade / Profit Gain

Contract 1,000,000 | Original budget 800,000 | New Est. Costs at Completion 950,000
Original expected profit = 1,000,000 − 800,000 = 200,000
Current estimated profit = 1,000,000 − 950,000 =  50,000
Margin lost = 150,000

The job hasn't "lost money" on paper yet — but $150K of expected profit has quietly evaporated. That is exactly what WIP exists to surface.

And it can strike at any stage of a job. Barely started and discover the equipment will cost $200K more than planned? Profit fade. Almost done and realize it will take three more months to fix problems? Profit fade. The moment the estimated final cost rises, the expected margin drops.

How much of the hit lands on this period depends on how far along the job is. A rough rule of thumb: recognized loss ≈ percent complete × overrun. A job that's 5% complete takes about 5% × $200K ≈ $10,000 now; a job that's 90% complete takes nearly all of it. It isn't exactly the percent complete, because the overrun also lands in the denominator of % complete = JTD costs / Est. Costs at Completion and nudges that percentage down — but the rule of thumb captures the shape: the further along the job, the bigger the immediate hit.

This is the cruel asymmetry of timing: the best time to catch fade is early. At 5% complete, only a sliver of an overrun lands in this period; at 95% complete, almost the whole loss must be booked at once, because everything not yet recognized comes due as the job closes. The later fade surfaces, the harder it hits.

It runs in reverse, too — profit gain. If the estimated final cost drops — a subcontractor buyout beats budget, a feared risk never shows up, the crew outperforms the plan — the estimated margin rises, and the extra profit is recognized the same way, proportional to percent complete. WIP surfaces good news on the same clock as bad: a little at a time early on, and the rest as the job finishes.


Chapter 5 — Understanding Job Cash Flow

5.1 Profit is worthless, cash is king

A contractor can show strong revenue, healthy profit, and solid project margin — and still go bankrupt. Revenue is not the same as cash: revenue recognized is not cash received, and vendor bills can fall due before the customer's cash arrives. Cash is king — a company that can't make payroll doesn't survive, no matter how profitable it looks on paper.

5.2 AR aging — older means lower quality

Split ordinary AR from retention: Open Ordinary AR = Invoice − Collections − Retention. Then read the tiers: Current/1–30 are healthy; 61–90 is a risk zone needing an owner; 90+ may need an allowance or a dispute reason. Old AR is often a compliance problem — missing documentation, approvals, or change-order paperwork — not just a slow customer.

5.3 AP aging — financing you can't stretch forever

AP is short-term financing from vendors, but stretching it past 60–90 days risks work stoppages, lien rights, and unhappy vendors. Payment priority is about vendor criticality and execution risk, not simply paying the oldest bill.

5.4 Retention — contractual cash delay

Net Retention Cash Delay = Retention Receivable − Retention Payable

Retention isn't a profit problem; it's restricted cash. When it releases (final acceptance, punch list, warranty) matters more than the balance.

5.5 Pay-when-paid — AP chained to AR

On many jobs your payable to a subcontractor isn't due on a fixed date — it's due when you get paid for that work. A pay-when-paid clause says you'll pay the sub within a set time after the owner pays you; a stricter pay-if-paid clause makes the owner's payment an actual condition — if the owner never pays, you never owe the sub. Either way your AP is chained to your AR: the cash to pay subcontractors shows up only after the customer's cash does.

This is why AP and AR can't be read apart. A late owner payment doesn't just stall your AR — it legitimately defers the matching AP, and that is what protects your cash. The danger is paying subs ahead of collecting from the owner, which turns someone else's financing problem into yours.

Lien waivers are the paperwork that keeps it safe. When you pay a sub, you collect a lien waiver releasing their right to lien the project for that amount; when you bill the owner, you hand over your own waivers to get paid. Treat them as part of the cash cycle — an unsigned waiver can hold up a collection (and become old AR) or expose you to a double-payment claim. Pay-when-paid terms plus clean lien waivers are how a contractor keeps AP and AR moving in step instead of draining cash.


Chapter 6 — Change Orders

6.1 What a change order is

You were hired to do a job, so you bid it. But now the customer wants more or less work — or maybe a different material or piece of equipment that costs more. The change order is what makes up the cost difference, adjusting the contract accordingly.

6.2 Status matters

Approved -> becomes part of the contract
Pending  -> sometimes included on the WIP if the contractor believes they'll get it
Rejected -> included only for reference
Internal -> moves cost budget from one code to another; no change to the contract

6.3 Amount is only half the story

The change order amount is what gets billed to the customer. But a change order also carries its own cost budget — and the gap between the two is the change order's estimated gross profit:

Change Order Amount − Change Order Cost Budget = Change Order Est. Gross Profit

A change order can add gross profit to the job and still hurt it. Here's how. JTD revenue is % complete × contract, where % complete = JTD costs / Est. Costs at Completion. Suppose the job is expected to earn a 30% gross margin and the change order comes in at only 20%. Blending that lower-margin work in drags the job's overall margin below 30%. And JTD revenue is really your costs-to-date plus the profit earned on them — so when the margin % drops, the profit earned on the costs you've already spent shrinks, and JTD revenue falls with it — even though the contract just got bigger. That decline is profit fade.

Stacked bar — JTD Revenue = JTD Costs + JTD Profit; the profit layer is the gross-profit % of revenue, so when the margin fades the profit layer thins and revenue falls with it

Worked example — here it is in numbers (using a break-even change order to make the fade unmistakable):

Before the CO:
  Contract                          1,000,000
  Est. Costs at Completion            800,000   (20% margin)
  JTD Costs                           600,000   -> 75% complete
  JTD Revenue                         750,000   (1,000,000 × 75%)

Add a CO: Amount 200,000, Cost Budget 200,000  (0% margin — below the job's 20%):
  Revised Contract                  1,200,000
  Revised Est. Costs at Completion  1,000,000
  JTD Costs                           600,000   -> 60% complete  (more cost still to go)
  JTD Revenue                         720,000   (1,200,000 × 60%)

The contract grew by 200,000, yet JTD revenue fell from 750,000 to 720,000 — a 30,000 profit fade. The lower the change order's margin relative to the job, the worse the fade. (A negative-margin CO is worse still — it dilutes margin and books an outright loss.)

And it gets sharper: a change order can raise your total estimated profit in dollars and still pull JTD revenue and JTD profit down, purely because it lowers the margin.

Before and after a low-margin change order: estimated total profit rises from 250,000 to 300,000, but because the blended margin falls from 25% to 20%, JTD revenue falls from 800,000 to 750,000 and JTD profit falls from 200,000 to 150,000

Look at the orange: JTD costs are identical in both bars (600,000) — no new work has been done. All that changed is the deal. Yet adding $50,000 of estimated profit at a low margin shrinks the green: JTD revenue falls 800,000 → 750,000 and JTD profit falls 200,000 → 150,000. More profit on paper, less profit recognized today.


Chapter 7 — Construction Project Economics

7.1 The key components

Key components of a job: Contract, Budget, Cost, Estimate, Revenue, Billings, Backlog

7.2 Worked example — one project end to end

ItemAmountHow
Original Contract1,000,000
Approved Change Orders120,000
Revised Contract1,120,000Original + Change Orders
JTD Costs420,000
Est. Cost-to-Complete380,000
Est. Costs at Completion800,000JTD Costs + ETC
Estimated Gross Profit320,000Revised Contract − Est. Costs at Completion
% Complete52.5%JTD Costs ÷ Est. Costs at Completion
JTD Revenue588,000Revised Contract × % Complete
JTD Billings620,000
Overbilling32,000JTD Billings − JTD Revenue
Backlog532,000Revised Contract − JTD Revenue
Collections540,000
Retention50,000
Accounts Receivable30,000JTD Billings − Collections − Retention

Read it as a sentence: a $1.12M job, 52.5% done, expected to earn $320K, currently billed slightly ahead of what it has earned, with $30K of ordinary AR, $50K locked in retention, and $532K of work still to go.


Chapter 8 — Job Detail Reports

8.1 The reports at a glance

  • WIP — a summary job overview.
  • Job Cost Detail — shows all the costs on a job that add up to the JTD costs, typically broken out by cost code.
  • Job Billing Detail — shows all the customer billings that add up to the JTD billings, typically broken out by customer billing.
  • Job Budget / CTC — shows budget, JTD cost, committed cost, actual hours, budget hours, and variance. Sometimes has more columns — projected cost, original budget, approved change orders, and so on — and often contains notes. Its total is the projected cost used on the WIP report.
  • Labor Report — shows the field how many hours they have left to go and their actual hourly labor rate (the rate can vary from job to job, depending on who is charging to the job).

8.2 Job Cost Detail

The lowest-level evidence — every transaction by Job, Cost Code, Cost Type, vendor/employee, date, amount, hours, and source document. Every JTD cost on WIP must trace back here. If it can't be traced, it can't be explained.

8.3 Job Budget Variance

Don't judge a cost code by actual cost alone. Include what's already committed and what's still expected:

Remaining Committed = max(Committed − Actual, 0)
Projected Cost      = Actual + Remaining Committed + Estimated Uncommitted
Projected Variance  = Budget − Projected Cost   (negative = overrun)

Worked example:

Budget 100,000 | Actual 50,000 | Remaining committed 35,000 | Est. uncommitted 25,000
Actual variance    = 100,000 − 50,000                   = 50,000  (looks fine)
Committed variance = 100,000 − 50,000 − 35,000           = 15,000  (tighter)
Projected variance = 100,000 − 50,000 − 35,000 − 25,000  = −10,000 (already over!)

Same cost code, three very different stories. Always read variance by cost code — a total can hide a concrete saving masking an electrical overrun.

8.4 Job Labor Report

Labor goes wrong two ways — too many hours, or too high a rate:

Cost per Hour       = Actual Labor Cost / Actual Hours
Hour Variance       = Budget Hours − Actual Hours          (productivity)
Labor Cost Variance = Budget Labor Cost − Actual Labor Cost (rate / mix / overtime)

8.5 Job Cost-to-Complete

The hardest report, because it is a forecast: the project manager's honest estimate of remaining scope, subcontract cost, rework, escalation, and unposted bills.

Est. Costs at Completion = JTD Costs + Estimated Cost to Complete
Projected Variance = Budget − Est. Costs at Completion

Cost-to-Complete is the core input to WIP quality. Garbage here means garbage revenue and profit everywhere upstream — and it is the hinge between this guide's actuals and Guide 2's forecasts.


Chapter 9 — Service Reports

Beyond construction projects, many contractors also run a service business — short repair jobs and recurring maintenance. It reports differently from project work, because the jobs are small and fast.

9.1 Work Orders

A work order is a job — just a small one, typically finished in days or weeks instead of the months or years a construction project runs. Because they are so short, work orders have no cost-to-complete projection and no WIP — there is nothing to forecast. The job is done when it's done, and that's it. This kind of work is often called pull-through work (it pulls through from a service relationship) or start-up work.

A work-order report typically carries: WO # · customer/site · service type · status · technician · open/scheduled/completed dates · labor hours · parts · billable vs. non-billable · linked PM agreement.

9.2 Planned Maintenance (PM) Agreements

A planned maintenance agreement is a contract to maintain a customer's equipment — HVAC, boiler, and the like — on an annual basis, typically with a technician visiting quarterly. PM agreements are usually loss leaders, designed to make only a small profit. Their real purpose is to keep customers happy and the relationship warm, so the contractor wins the profitable work when equipment needs repair or replacement.

A PM report typically carries: agreement # · customer/site · contract value · billing frequency · covered scope · visit schedule · visits completed vs. due · deferred revenue over the term · renewal date.

9.3 Work orders vs. PM — the pull-through ratio

The key service metric is the ratio of work orders (pull-through work) to planned maintenance. A ratio around 3 to 1 is considered good — it means the maintenance base is doing its job, generating roughly three times as much pull-through repair and replacement work as the maintenance itself.


Appendix A — Reports in This Guide, by Category

ReportCategoryChapter
Income Statement1 — Company level2
Balance Sheet1 — Company level2
Cash Flow Statement1 — Company level2
Actual-vs-Budget (budgetary)1 — Company level2
Summary WIP1 — Company level4
Trial Balance1 — Company level3
AR Aging1 — Company level5
AP Aging1 — Company level5
Retention Summary1 — Company level5
Change Order Report (roll-up)1 — Company level6
Project Economics2 — Job level7
Job Cost Detail2 — Job level8
Job Budget Variance2 — Job level8
Job Labor Report2 — Job level8
Job Cost-to-Complete2 — Job level8
Change Order Detail2 — Job level6
Work Orders3 — Service level9 (not in source)
PM Agreements3 — Service level9 (not in source)

The forecasting reports live in Guide 2: Future Reports.


Appendix B — Master Glossary

TermMeaning
Assets = Liabilities + EquityThe balance-sheet identity
RevenueValue earned by performing work (≠ billings, ≠ cash)
JTD (job-to-date)A job's cumulative total since it began (costs, billings, revenue)
JTD RevenueRevenue recognized from progress: Contract × % Complete
BillingsAmounts invoiced to the customer
CollectionsCash actually received
Direct CostCost attributable to a job (labor, material, sub, equipment)
Gross ProfitRevenue − Direct Cost
Overhead / G&ACompany costs not tied to one job
Net IncomeProfit after all costs and expenses
AR / APReceivables owed to us / Payables we owe
RetentionContractual amount withheld and released later
Revised ContractOriginal Contract + Approved Change Orders
Committed CostCost locked by PO/subcontract, not necessarily posted
JTD / ETCJTD Costs / Estimated Cost to Complete
Est. Costs at CompletionJTD Costs + Estimated Cost to Complete (the expected final cost)
% CompleteJTD Costs / Est. Costs at Completion (cost-to-cost method)
OverbillingJTD Billings − JTD Revenue → liability
UnderbillingJTD Revenue − JTD Billings → asset
BacklogRevised Contract − JTD Revenue
Days Past DueAs-Of Date − Due Date
Margin ImpactCO Amount − CO Cost Impact

Appendix C — The Engineer's View: Reports Are Queries

Don't memorize layouts — model the data, then treat each report as a view over it.

Tables:  jobs, contracts, change_orders, budgets, cost_codes, cost_transactions,
         commitments, billings, collections, vendor_bills, vendor_payments,
         payroll, gl_entries

Balance Sheet     = GL balances as of a date
Income Statement  = GL activity over a date range
Cash Flow         = cash movement + working-capital changes
WIP               = job-level JTD revenue and cost forecast
Job Cost Detail   = cost-transaction drilldown
AR / AP Aging     = unpaid invoices / bills by age

End of Guide 1. Continue with Guide 2: Future Reports for backlog, the forecasted income statement, the 13-week cash flow, and the forecasted balance sheet. For unabridged detail behind every chapter, see the companion reference reports-by-category.en.md.