Job Costing for Fencing, Deck, and Hardscape Contractors

Fencing, decks, and hardscape are three different trades that share one big problem: the materials you bid in March cost something different in May, and the crew you scheduled to roll Monday through Friday on a single job is finishing Wednesday at 2pm with nowhere to go for the rest of the week. Both of those leak margin in ways most owners only notice at year-end.

I’m Erin Andrews, owner of Level Accounting & Advisory. We’re a construction-only firm and we work with fence builders, deck builders, paver and travertine installers, retaining wall crews, and outdoor living contractors that do all of it. This post covers what makes job costing for fencing, deck, and hardscape contractors different from every other trade — and how to set it up in QuickBooks Online and JobTread so the slow-day problem and the lumber-price problem stop eating your margin quietly.

For the framework underneath all of this, start with our pillar guide on job costing for contractors.

Why Your Job Costing Is Wrong in QuickBooks Online (Fix This First)

What’s different about job costing for fencing, deck, and hardscape contractors?

These trades are unusual because three things drive the math more than labor: materials are 50–65% of total job cost (much higher than HVAC or electrical), weather is a planning input (not just a delay risk — you can’t pour concrete or set posts in saturated ground), and crew utilization is the silent killer (jobs that end mid-week leave 1.5 days of paid labor with no revenue attached). The shop that prices around all three and tracks them tightly is the shop that survives a 20% material spike or a wet spring.

Material-heavy jobs — the lumber and stone variability problem

The hard truth: your bid is mostly a materials bid plus a labor adder. And materials prices move.

What we see drift inside a single estimating cycle:

  • PT lumber: moved 100%+ in the 2020–2022 stretch and still swings 10–15% within a season
  • Composite decking (Trex, TimberTech): 6–12% manufacturer pricing changes per year, sometimes mid-year
  • Pavers and natural stone: regional variability is huge — Belgard vs. Pavestone vs. quarry-direct stone all move differently
  • Cedar fence pickets: seasonal availability creates real price swings
  • Aluminum fence panels: tied to commodity aluminum pricing

If your bid is 60% materials and the materials moved 8% between bid and build, you ate the entire 8% margin on the materials line — which is probably 4–5 points of total job margin. That’s the difference between a 28% margin job and a 23% margin job.

How to handle it for job costing for fencing:

  • Material price valid for 30 days max on the proposal. Past 30 days requires re-quote.
  • Check supplier pricing the week of the build against what you bid. If lumber moved 10%, eat it once and update the next bid.
  • Track actual material cost vs. bid material cost on every job at close-out. Pattern recognition: which suppliers are coming in over their quote consistently? Which products?

Weather as a planning input — not just a delay

For fence post setting, hardscape excavation and base prep, and concrete deck footings, weather isn’t an excuse — it’s a determinant. Saturated ground means you can’t compact base. A windy day means you can’t unload aluminum panels safely. A wet week means you can’t set 60 fence posts in concrete.

The cost-coding discipline:

  • Weather contingency in the bid for projects scheduled in shoulder seasons. If you’re booking April starts in Florida or October starts in the Northeast, the chance of a 1–2 day wet delay is real.
  • “Crew Standby — Weather” cost code for the days the crew showed up and got sent home. That cost belongs on the job that pushed.
  • “Material Wait” cost code for days the crew couldn’t work because the lumber, stone, or fence panels didn’t deliver on time.

These are small per-job costs that add up across a year. A fence shop that loses 6 crew-days a year to weather and material delays is losing $4,800–$7,200 in burdened labor that has to come out of someone’s profit. Track it and you can price it.

JobTread accounting setup

Crew utilization — the slow-day problem when jobs end mid-week

This is the one most outdoor-trade contractors don’t see. Your crew is paid for 40 hours. Your jobs don’t end on 40-hour intervals.

What that looks like in practice:

  • Fence install bid for 3 days. Finishes Wednesday at 1pm.
  • Crew has 1.5 days of payroll with no revenue attached.
  • Next job doesn’t start until Friday because the customer needs a Thursday utility locate.
  • Thursday becomes a “shop day” — guys reload trucks, sweep, maybe go to the supply house.
  • That Thursday cost shows up as “Shop Labor” if you have that code, or worse, gets buried in shop overhead.

The leak: across a year, even a well-scheduled crew has 30–50 of these half-days. That’s $25K–$60K of fully burdened crew cost that’s not on any job.

How to track and shrink it:

  • “Crew Utilization — Non-Billable” cost code for hours where the crew is on payroll but not on a job
  • Weekly utilization report showing target (80%+) vs. actual
  • Schedule the next job’s mobilization for the slow-day half — material pickup, site walk, anything that reduces Day-1 friction on the next job

Cost code structure for fencing, decks, and hardscape job costing

Each sub-trade has slightly different codes, but here’s the structure we use as a starting point. Adapt by which work mix dominates your shop.

Fencing cost codes:

  • 10-100 Materials — Wood Pickets / Rails
  • 10-110 Materials — Posts (wood, steel, aluminum)
  • 10-120 Materials — Aluminum / Vinyl Panels
  • 10-130 Materials — Hardware (gates, latches, screws)
  • 10-200 Materials — Post Concrete
  • 20-100 Labor — Layout / Locates
  • 20-110 Labor — Post Setting
  • 20-120 Labor — Picket / Panel Install
  • 20-130 Labor — Gate Install
  • 30-100 Permits & Inspections
  • 40-100 Sub — Trenching / Boring

Deck cost codes:

  • 10-100 Materials — Lumber (PT, framing)
  • 10-110 Materials — Decking (composite, hardwood, PT)
  • 10-120 Materials — Hardware (joist hangers, hidden fasteners, lag bolts)
  • 10-130 Materials — Railing System
  • 10-140 Materials — Footings (concrete, helical piers)
  • 20-100 Labor — Demo (existing deck removal)
  • 20-110 Labor — Footings / Posts
  • 20-120 Labor — Framing
  • 20-130 Labor — Decking Install
  • 20-140 Labor — Railing
  • 30-100 Permits & Inspections

Hardscape cost codes:

  • 10-100 Materials — Pavers / Stone
  • 10-110 Materials — Base (gravel, sand, polymeric sand)
  • 10-120 Materials — Edging / Restraints
  • 10-130 Materials — Retaining Wall Block
  • 10-140 Materials — Drainage / Fabric
  • 20-100 Labor — Excavation / Site Prep
  • 20-110 Labor — Base Install
  • 20-120 Labor — Paver Set
  • 20-130 Labor — Cutting / Edging
  • 20-140 Labor — Polymeric Sand / Sealing
  • 30-100 Sub — Equipment Rental (skid steer, plate compactor)
job costing for fencing

Three things matter across all three trades: materials always separated from labor, sub-trade rental equipment coded as its own line (not absorbed into shop overhead), and the “Crew Utilization — Non-Billable” code applied weekly. For the full breakdown, read our guide to construction cost codes.

Estimate-vs-actual job costing on material-driven projects

This is the report every fencing, deck, and hardscape contractor should run weekly. Because materials are 50%+ of cost on these jobs, even a 10% material variance moves total job margin 5+ points.

What to look for in JobTread’s estimate vs. actual report:

  • Material codes more than 8% over bid — supplier pricing moved or your takeoff was off
  • Labor codes more than 15% over bid — productivity issue, scope creep, or weather impact
  • Sub codes over by ANY amount without a paired change order — the sub did extra work and didn’t get a CO papered
  • Concrete / footing codes consistently under bid — you’re over-estimating, which means your bids are higher than they need to be (and you’re losing some bids on price you didn’t need to lose)

The shop that runs this report every Friday for 30 minutes catches problems while there’s still time to fix them. Walk through the labor side specifically in our labor burden calculation guide.

Frequently asked questions about job costing for fencing, pool and hardscape contractors

How do I handle leftover materials from a finished job?

Track them as inventory at the lower of cost or market, and credit the originating job for the salvage value. If 12 deck boards came back to the shop and end up on the next job, that next job should carry the cost of those boards. Otherwise the first job looks worse than it was and the second job looks better than it is.

What’s the right gross margin target for these trades?

Fencing: 28–38% gross is realistic, higher on smaller residential, lower on commercial bid work. Decks: 30–42% (composite work earns the higher end because the materials are more expensive and the install is similar). Hardscape: 32–45% (paver and natural stone work has the highest margin potential because the labor skill commands more).

Should I track different fence styles separately (chain link vs. wood vs. aluminum)?

Yes. Each style has different material profiles, different install productivity, and very different margin. Your wood privacy fence is probably 30% gross. Your aluminum pool code fence is probably 40%+. Your chain link is probably 22%. Tracked together you can’t see which style is actually paying the rent.

How do I price a slow-day or weather contingency without losing bids?

Build it into the labor rate, not as a visible line item. Your fully burdened labor rate should already include some allocation for non-billable crew time. The shop bidding without it is bidding lower than you — and going broke faster. Don’t try to compete with the contractor who doesn’t know his real costs.

The bottom line for fencing, deck, and hardscape contractors

These trades live and die by three things: tracking material cost variance against bid (because materials are most of the job), capturing weather and material-wait days as real cost on the affected jobs (so you can price the shoulder seasons honestly), and watching crew utilization weekly (because the slow days are eating $25K–$60K a year nobody sees). Add an honest labor burden and your shop stops bleeding margin in the places it’s been bleeding it the whole time.

If you’re running a $1M–$15M outdoor trade shop and your QBO file isn’t showing you material variance by job or your crew utilization rate, that’s the cleanup we do.

Want us to set up your fencing, deck, or hardscape job costing in JobTread + QBO?

Book a Discovery Call

Run a related trade? Read our companion guide on job costing for pool contractors — pool decking and hardscape share a lot of the same material-heavy and weather-sensitive problems.


Erin Andrews is the owner of Level Accounting & Advisory, a construction-only accounting firm based in Vero Beach, FL serving contractors nationwide. Level has 20 years of experience in construction accounting and serves specialty trades — including fencing, deck, and hardscape contractors, HVAC, plumbing, electrical, concrete, and pool builders — doing $1M–$15M in annual revenue.

subcontractor packet for contractors. collect W9s, workman's comp insurance, general liability insurance

FREE RESOURCE

The Subcontractor Packet That Protects You From a $30K Audit Surprise

-> The complete done-for-you packet — setup form, W-9, and sample subcontractor agreement ready to hand to every sub before their first check

-> The one missing document that lets your insurance company add a sub’s entire payment to YOUR workers comp premium — and how this packet prevents it

-> The insurance minimums, COI requirements, and indemnification language most contractors don’t have in writing until it’s too late

Free Resource

Our “Subcontractor Checklist Packet” makes it easy. Inside, you’ll find exactly what you need for 1099s, workers’ comp, and liability audits.