A 32-square re-side that lost 1.8 points before the crew packed up
You bid a re-side at $650 a square — 32 squares, $20,800. A square is 100 square feet of wall, and that's the unit your estimate, your material order, and your crew pay all run on. Then the supplier drops an extra two squares because the gables ate more than the takeoff said, and nobody codes it anywhere. Siding contractor bookkeeping is the difference between catching that on Thursday and finding it in March.
The job still made money. It just made less than you priced, and you had no way to know until the year closed.
What siding contractor bookkeeping has to track that generic bookkeeping misses
A standard bookkeeper records the supplier invoice as "Materials" and the crew check as "Subcontractors." Both entries are technically correct and completely useless.
What you need is cost coding — tagging every dollar to a specific job and a specific category, so the books answer "what did this house cost me" instead of "what did I spend in April." For siding, four codes carry most of the weight: tear-off, material, install labor, and trim/accessories.
Trim is the one contractors skip. J-channel, corner posts, starter strip, house wrap, and flashing get lumped into "material," and then you can't tell whether your siding price is off or your trim allowance is.
Before the job: price in squares, not in lump sums
If your estimate is a single number, your books can never grade it. Build the bid the way you'll buy: squares of field siding, linear feet of trim, squares of tear-off, dumpster, permit.
Set your waste factor in writing. A hypothetical straight ranch with two gables might carry 10%; a cut-up two-story with dormers earns 15% and you should say so on the estimate sheet.
Then decide how you pay the crew before they start. Per square is cleaner than hourly for siding, because the unit matches the unit you sold — but write the tear-off rate separately, or your crew will argue it and you'll eat it.
During the job: log the drops, the change orders, and the price moves
Every material drop gets coded to the job within 48 hours. Not at month-end. The supplier ticket is the only record of what actually landed on that lawn, and by month-end you won't remember which of three open jobs the extra corner posts went to.
Change orders are the second leak. Rotten sheathing found behind the old siding is a real cost with a real price, and if it isn't signed and coded before the crew installs it, you're donating plywood.
When vinyl or fiber-cement moves between bid and delivery
The third leak has nothing to do with your crew. You price field siding at a per-square number, the homeowner sits on the contract for a few weeks, and the ticket that finally shows up is above the number you bid. Fiber-cement and vinyl both do this, and neither one asks permission.
Two habits keep it from eating you. First, put a quote expiration date on the estimate and, on anything you expect to sit, an escalation clause naming the material — that's a contract fix, not a bookkeeping one. Second, in the books, never back-fill the bid number onto the actual invoice. Code what the supplier actually charged and keep the bid column beside it.
That separation is what tells you why a job missed. If you bought more squares than you bid, that's a quantity problem — your waste factor is wrong or the takeoff was. If you bought the same squares at a higher price, that's a price problem, and no amount of tighter cutting fixes it. Contractors who lump both into "material over" tighten the wrong screw for a year.
After the job: the closeout that computes
Here's the same 32-square job, closed out honestly. Say the bid assumed 34 squares of material at $190 a square, or $6,460, and the crew ran at $165 a square to install plus $55 a square for tear-off.
Crew: 32 × $165 = $5,280 for install. 32 × $55 = $1,760 for tear-off. Add those two lines — $5,280 + $1,760 — and total crew cost is $7,040.
Material actual: 32 squares × 1.10 waste = 35.2, rounded up to 36 squares ordered. 36 × $190 = $6,840. The bid covered 34 squares, so you bought two extra squares: 2 × $190 = $380. Actual material of $6,840 minus the $6,460 you bid is that same $380 over.
Add the dumpster at $475 and the permit at $150 — $625 of job costs that never show up on a crew invoice. Material and labor together run $6,840 + $7,040 = $13,880. Add the $625 and total direct cost is $14,505.
Gross profit: $20,800 − $14,505 = $6,295, or 30.3% of contract. At the bid material number, cost would have been $14,125 and profit $6,675 — 32.1%. Two squares of vinyl cost you 1.8 points of margin.
Run that on twenty houses a year and you can see whether your waste factor is a policy or a wish. That's the whole point of coding at the job level.
Money that isn't yours yet, and money that isn't in yet
Two mirror-image traps show up the moment your jobs get bigger than a single house.
Watch overbilling on your longer jobs — overbilling means you've collected more than the work you've actually completed. It feels like cash. It's a bill you haven't paid yet.
Retainage is the opposite problem. On commercial siding — apartment buildings, light industrial, anything under a general contractor — the GC holds back a slice of every pay application until closeout, and if your books only record cash received, that money simply disappears from your records. It shouldn't. Track retainage as its own line per job, aged by job and by GC, so at any moment you can say how much of your finished work is still sitting on somebody else's balance sheet. Two things follow from that. The job's margin doesn't change because payment is slow — code the full contract value and let the closeout math stand. And the retainage schedule tells you which punch lists to finish first, because that list is the only thing standing between you and the balance.
Storm work has its own version. Insurance jobs arrive with an original scope and then supplements — approved additions for damage the adjuster missed. If both land in one revenue line, you'll never know which claims you're underwriting for free. Bill them as separate lines, code the costs the same way, and reconcile the depreciation holdback when it releases. Otherwise a job that looks paid is short and nobody's chasing it.
Sub crews and the $2,000 line on Form 1099-NEC
If you pay install crews as subcontractors, the paperwork is not optional and the numbers are bigger than most contractors assume. In the example above, one crew earned $7,040 on a single house.
For tax year 2026, the reporting threshold for nonemployee compensation on Form 1099-NEC is $2,000. Your crew leads clear that in a week. Furnish the payee copy and file with the IRS by January 31 for tax year 2026 — the same date for both.
The failure I see most: no W-9 on file, because the crew showed up on a Tuesday and started working. Chase a W-9 in January and you'll find the crew has moved states. Collect it before the first check clears, every time, and keep the totals summarized on Form 1096 if you're filing on paper.
Employee crew vs. sub crew: which one your books should prefer
Sub crews look cheaper on paper. You pay per square, you skip workers' comp on those hours, and the cost lands in one clean line.
Employee crews cost more per hour once you load the burdened rate — the true hourly cost of a worker after payroll taxes, comp, liability, truck, and phone — but you control the schedule, the quality, and the callback exposure.
My verdict: if siding is your core product and you run year-round, put your best two installers on payroll and use sub crews for overflow. If siding is a bolt-on to windows or roofing, stay on sub crews and spend your energy on W-9 discipline instead. Either way, code them to the job.
Contractors who install siding, windows, and glass under one roof face all of this at once — that's what our bookkeeping and taxes for windows, siding and glass contractors page is built around.
If you want your jobs coded, your books current, and your 1099 records clean before January, ask us for pricing and tell us how many crews you run. Prefer to keep reading first? Subscribe to the newsletter and we'll send the practical stuff as it lands.