All guides

Guide

Mechanical and HVAC contractor accounting

Mechanical contractors carry more material and equipment per contract dollar than almost any other trade, often fabricate in their own shop, and usually run a service division with maintenance agreements. The accounting problems that follow are stored materials, shop cost allocation, deferred revenue, and keeping project and service margins from blurring into one number.

Updated October 2026

Equipment and material: the stored-materials question

Air handlers, chillers, boilers and rooftop units are ordered months ahead, delivered before the building is ready for them, and represent a large share of the contract. Whether you can bill them as stored materials, and on what documentation, is the first cash flow question on every mechanical job. The second is committed cost: equipment POs are the buyout, and the forecast should show the gain or loss the day the PO is issued.

  • Issue equipment POs through the system on submittal approval so committed cost is visible
  • Bill stored equipment where the contract allows, with invoices, insurance and the owner’s inspection rights documented
  • Keep retainage on stored materials at the contract rate, which may differ from work in place
  • Track equipment delivery dates against the schedule; late gear turns into overtime labor on a different cost code

Fabrication and shop cost

Duct and pipe fabricated in your own shop is job cost, but it is incurred in a shop with its own labor, equipment and overhead. The clean approach is to treat the shop as a cost center with a burdened rate per hour or per pound, charge jobs at that rate as fabrication is completed, and true up the shop’s over- or under-absorption at quarter end. Charging only direct shop labor to jobs understates job cost and makes the shop look like an overhead problem rather than a production asset.

  • A fabrication cost code on every job that uses the shop
  • A shop rate that covers labor, burden, equipment and shop overhead
  • Material issued from shop inventory to the job at the point of fabrication
  • Quarterly review of shop absorption against actual shop cost

Service agreements and deferred revenue

A maintenance agreement billed annually in advance is a liability on the day it is billed and revenue over the months it covers. Service calls under the agreement cost technician time and parts against that revenue. The margin on the agreement is only known when the term is over, which is why agreements need their own revenue and cost tracking, separate from project work and from one-off service calls.

Revenue typeBillingRecognitionCost
Project workPay applications, monthlyPercentage of completionJob cost by code
Service callsPer call, T&M or flat rateWhen performedTechnician time and parts to the call
Maintenance agreementsIn advance, annual or quarterlyOver the termTechnician time and parts to the agreement
Parts salesPer saleWhen deliveredInventory relieved at cost

The reports a mechanical contractor needs

  • Job cost with budget, committed, actual and cost to complete, with equipment buyout visible
  • Labor productivity by cost code: piping, sheet metal, equipment setting, insulation, controls
  • WIP schedule with over/under billing, stored materials shown separately
  • Shop absorption: charged to jobs vs. actual shop cost
  • Service margin by month and by agreement, with deferred revenue roll-forward
  • Inventory by warehouse, shop and truck
  • Retainage receivable by job with expected release

How Forge ERP fits a mechanical contractor

Forge’s Specialty Trades specialization lays out the chart of accounts for project and service work (warehouse and truck inventory, consigned material at job, deferred service contract revenue current and long-term, customer prepaid maintenance, service call, maintenance contract and project work revenue) with service, phase, location, customer and warehouse dimensions, and enables procurement, projects, project ledger, inventory, cost catalog, revenue and time. Pay applications carry materials presently stored per schedule-of-values line with retainage on stored materials at its own rate, and new applications seed the stored balance so equipment cannot be billed twice. Equipment purchase orders post as binding encumbrances, forecasts cannot understate them, and job cost shows budget, pre-encumbered, committed and actual side by side.

Forge ERP covers projects, purchasing, accounts payable, billing and receivables, job cost and WIP, reporting and close. Payroll runs in your payroll provider and lands in Forge as job-costed labor with burden. Forge is in beta with a 14-day free trial.

Frequently asked

Can I bill a chiller sitting in my warehouse?
Only if the contract permits off-site stored materials, which usually means a bonded warehouse, the owner’s approval, insurance naming the owner, and invoices showing title will pass on payment. Many contracts limit stored-material billing to the site.
How do I allocate shop overhead to jobs?
Set a burdened shop rate per hour or per pound that covers shop labor, burden, equipment and overhead, charge jobs at that rate as fabrication is completed, and review absorption quarterly. Direct labor alone understates job cost.
Does a maintenance agreement count as revenue when billed?
No. It is deferred revenue when billed and earned over the term of the agreement, usually straight-line monthly unless the service pattern is clearly uneven.

Related guides

See it on your own cost codes.

Start a 14-day trial, or send us your chart of accounts and cost-code list and we will walk you through Forge on them.

Request Early Access