Skip to content
← Back to Blog
Trades

Roofing Chart of Accounts: A Complete Template for Roofing Contractors

Austin Semple12 min read

Roofing books fail in a specific way. The default small-business chart of accounts has one Sales account and one Materials account, and a roofing company sells at least four different things at four different margins, pays most of its labor to sub crews per square, and collects a meaningful share of its revenue from insurance carriers on a clock it does not control. Blend all of that into two accounts and the P&L reports one number that is the average of businesses that have nothing in common.

This is a working chart of accounts for a roofing contractor, account by account, with the reason each one exists.

Free download: Roofing chart of accounts template (CSV), the structure in this guide as 57 numbered accounts with types, subtypes, and a one-line note on why each exists. Imports into QuickBooks Online, Xero, and most accounting software. No email required.

Why the default template fails roofers

Three things are true of roofing that are not true of a generic service business.

Sub crews are the biggest cost. Most residential roofers pay crews per square, not per hour on payroll. That is a direct job cost, and in the default template it lands in operating expenses where it never touches gross margin.

A large share of revenue is insurance work, which arrives as an initial claim, then supplements, then a depreciation holdback that pays on completion. Booked as plain sales, you cannot see your claims mix, your supplement rate, or how much the carriers owe you.

Money arrives before the work. Deposits, and on commercial jobs retainage in both directions. Booked as revenue the day they land, your months are wrong and a cancelled job leaves income on the books for a roof that was never installed.

Income accounts

AccountWhat belongs in it
Replacement revenue, residentialFull residential re-roofs; your largest line
Replacement revenue, commercialCommercial and low-slope work, if you do enough to matter
Repair revenueLeak repairs, flashing, storm patches
Insurance claim revenueJobs paid by a carrier, tracked apart so you can see the claims mix
Supplement revenueApproved supplements above the original claim
Gutters, siding, and accessoriesAdd-on trades sold with the roof
Storm and emergency tarpingEmergency dry-in, often billed separately
Other incomeRebates, referral fees, scrap metal

The split that matters most is insurance claim revenue from supplement revenue. Supplements are the number that decides whether storm work paid. A shop that runs a 15 percent supplement rate and a shop that runs 35 percent are different businesses, and one income account hides which one you are.

Cost of goods sold

COGS is for costs that vary with the job. In roofing that list is longer than most shops think.

AccountWhy it is separate
Roofing materials, shingles and tilePrimary material, priced by the square
Roofing materials, underlayment and accessoriesIce-and-water, flashing, vents, ridge, drip edge
Lumber and deckingSheathing replacement; the most common change order, so it needs its own line
Direct labor, crewsBurdened cost of employed roofers on jobs
Subcontract laborSub crews per square; usually your largest COGS line
Dumpsters and haul-offTear-off disposal; a real per-job cost most shops bury in expenses
Permits and inspectionsMunicipal permits per job
Equipment rentalLifts and conveyors rented for a specific job
Warranty and callback costLeak callbacks on completed roofs; your quality signal
Financing and dealer feesFees on financed jobs, costed to the job that carried them
Freight and deliveryRooftop delivery and supply-house freight

Two of these change how your margins look the moment you add them. Dumpsters and haul-off can run several hundred dollars a job and almost every roofer has them in operating expenses, which quietly inflates every job's margin by that amount. And financing fees on a dealer-financed roof are a cost of that roof, not a bank fee; a financed job that looked like a 40 percent job may have been 33 once the fee is where it belongs.

Balance sheet accounts roofers are missing

AccountWhy it exists
Insurance claims receivableApproved claim amounts not yet paid by the carrier, kept apart from homeowner A/R because it collects on a different clock
Retainage receivableHeld-back portion of commercial contracts, not due until completion
Customer depositsMoney collected before the job starts; not revenue until the roof is on
Retainage payableAmounts you hold back from subs until their work is accepted

The deposits account is the one to set up today. A deposit is a liability until the job is done, and it is released to revenue on completion. If a job cancels, the deposit is refunded or forfeited as a recorded decision, not silently left in income.

Operating expenses

Standard, with two roofing-specific splits: sales commissions apart from office salaries, so you can see cost per closed job, and canvassing and lead fees apart from general marketing, so you can see cost per lead. Workers' compensation gets its own line because in roofing it is a large fixed cost worth watching on its own.

Setting it up without breaking your history

  1. Change at a period boundary, the start of a quarter or year.
  2. Rename before you create. If "Sales" becomes "Replacement revenue, residential," renaming keeps the history. Creating a new account splits it.
  3. Merge rather than delete. Deleting an account with transactions either fails or orphans data.
  4. Map old to new in writing before you touch anything, so you can restate the prior year.
  5. Tell whoever codes transactions. If your crew leads pick categories on supply-house runs, they need the new list.

And if you use bank rules to keep the new accounts filled, write them narrowly and check quarterly what they actually caught. A rule that files every supply-house charge to shingles will file the underlayment and the dumpster there too. What that costs is a post of its own.

What good looks like

Once the structure is right, your P&L answers these without a spreadsheet:

  • What was replacement gross margin last month, residential and commercial separately?
  • What was our supplement rate on insurance work, and what does the carrier still owe us?
  • What did haul-off cost as a share of replacement revenue?
  • What did callbacks cost, and which crews generated them?
  • What is our cost per closed job, commissions included, and cost per lead?

If your books cannot answer those, the chart of accounts is the problem, not the bookkeeper. Once it can, the next step is per-job costing, so those numbers exist for each roof and not just the month.

The roofing chart of accounts template (CSV) has all 57 accounts numbered and ready to import. For the HVAC and plumbing versions, see the HVAC chart of accounts and plumbing chart of accounts.

*Written by Austin Semple, a former controller: three years in audit, seven running the books for small businesses, and the founder of Poof. Poof holds customer deposits as a liability and releases them on completion, costs financing fees to the job that carried them, and closes the books within five business days or the next month is free. Start a 30-day trial, no card required.*

Frequently asked questions

What is a chart of accounts for a roofing company?

It is the list of every account your books can post to: income, cost of goods sold, operating expenses, assets, liabilities, and equity. For a roofer, the structure decides whether you can see replacement margin separately from repair margin, whether insurance work actually paid after supplements, and what a tear-off really costs once dumpsters and sub crews are counted.

Should subcontract labor be COGS or an expense?

Cost of goods sold. Sub crews are paid per square on specific jobs, which makes them the most direct cost in roofing and usually the largest. Putting them in operating expenses hides them from gross margin and makes every job look more profitable than it was.

How should I book insurance claim jobs and supplements?

Keep insurance claim revenue and supplement revenue as separate income accounts, and carry approved-but-unpaid claim amounts in an insurance claims receivable apart from homeowner receivables. Supplements are the number that decides whether storm work paid; if they are blended into replacement revenue you will never see your supplement rate.

Why do I need a customer deposits liability account?

Because a deposit is not revenue until the roof is on. Booking deposits to income on the day they land overstates the month you collected them and understates the month you did the work, and it makes your books wrong if the job cancels. Hold deposits as a liability and release them to revenue on completion.

Can I import this template into QuickBooks or Xero?

Yes. The CSV has 57 numbered accounts with account types and subtypes in the columns QuickBooks Online and Xero expect. Import at a period boundary, rename existing accounts rather than creating duplicates, and map the old accounts to the new ones in writing before you touch anything.

Ready to Automate Your Bookkeeping?

See how Poof can save you hours every week with AI-powered bookkeeping.

Start Your Free Trial