Chart of Accounts for Contractors: A Simple Setup
A contractor's chart of accounts is a short list of buckets every dollar falls into, sorted by five types: income, expense, asset, liability, and equity. Build it around the split that actually matters — direct job costs separated from overhead — keep it to roughly twenty to forty accounts, and name each one the way you would say it out loud. A tight chart makes a profit and loss statement readable in thirty seconds. A sprawling one hides the same information in plain sight. CRMb files each bank transaction to a category and rolls those categories into the P&L, general ledger, and balance sheet.
Most small contractors inherit a chart of accounts from whoever set up the books, then never touch it. It grows a new account every time something unusual gets paid for, and after four years it has two hundred lines, six of which are used. The reports built on it are technically correct and practically unreadable.
What a chart of accounts actually is
It is the list of categories your money gets sorted into, and nothing more exotic than that. Every transaction lands in exactly one, and the reports are simply those categories added up.
Each account carries a type, and the type decides which report it appears on:
- Income — money earned. Job revenue, service calls, materials billed to the customer.
- Expense — money spent running the business, including the cost of doing the work.
- Asset — what you own. Bank accounts, receivables, inventory on the shelf and truck, equipment.
- Liability — what you owe. Credit cards, supplier bills, loans, customer deposits held.
- Equity — the owner's stake, plus retained earnings.
Income and expense accounts make the profit and loss statement. Asset, liability, and equity accounts make the balance sheet. That is the whole structure.
In CRMb, every category you create is one of those five types, and the P&L reads only the income and expense ones. Getting a category's type right is the difference between a purchase showing up as a cost this month and showing up as something you own.
The split that matters: direct costs vs. overhead
If a contractor's chart of accounts does one thing well, it should be this. Direct costs are the costs a specific job caused. Overhead is what the business pays whether or not that job exists.
The test is a single question: would you have paid this if the job had never been sold? Lumber for a named deck, no. Your general liability premium, yes. Sort every expense account by that answer and group the direct ones together.
A useful set of direct-cost accounts for a service business:
- Direct labor — crew wages on jobs.
- Labor burden — payroll taxes, workers' comp, and benefits on that labor. See how to calculate labor burden rate.
- Materials — what got installed or consumed.
- Subcontractors — see how to track subcontractor costs.
- Equipment and rentals — machine time charged to work.
- Other job costs — permits, dump fees, job-specific rentals.
Everything else is overhead: rent, insurance, office wages, software, marketing, vehicle costs not charged to a job, owner pay. Keep the two groups visually separate and your gross margin becomes a number you can trust. See gross profit vs. net profit for what each layer tells you.
How many accounts you need
Fewer than you think. Twenty to forty is right for most crews under fifty people.
The instinct is to add detail — a separate account for lumber, fasteners, adhesives, fixtures. Resist it. Detail belongs in the job, not the chart of accounts. You want to know what a job cost, not what fasteners cost across the whole company. Job-level detail lives in the job's costs; the chart of accounts is for company-level reading.
Two symptoms tell you the chart has grown too far:
- Accounts nobody has posted to in a year.
- Two accounts that mean the same thing, so identical purchases land in either one depending on who filed them. Split spending is worse than coarse spending, because the totals are wrong in a way nobody notices.
The opposite failure is real too. A single "Job expenses" account holding labor, materials, and subs makes gross margin useless, because you can never see which input moved.
Naming accounts so people file correctly
The person filing a receipt at 6 p.m. decides whether your reports are accurate. Names should make the decision obvious.
- Write them the way you say them. "Dump fees," not "Waste Disposal — Non-Recurring."
- No abbreviations only the bookkeeper knows.
- One clear home for each common purchase. If a category needs a rule to explain it, write the rule into the name.
CRMb lets you rename a category later without losing history, and if you merge one into another its transactions and rules move over — so a first pass that is close enough is fine. Start with the accounts you can name confidently and add the rest as real transactions force the question.
Filing transactions once, on purpose
A chart of accounts only works if each dollar lands in exactly one place. The most common bookkeeping error in a service business is not a missing account — it is the same cost counted twice.
Three habits prevent it:
- Decide where each cost type lands, once. If materials are tracked as inventory and costed to the job when used, the supplier's bank charge should not also be tagged to the same job. Pick a lane. See reconcile bank transactions to jobs.
- Categorize from the bank, not from memory. The bank feed is a complete list of what actually happened. A shoebox of receipts is not.
- Automate the repeats. Most transactions are the same twenty vendors every month. A rule that files a matching vendor to a category turns an hour of clicking into a review pass.
CRMb does this with matcher rules — vendor contains a phrase, file to a category — and can run them across the transactions already sitting unfiled, so setting up a rule cleans the backlog instead of only helping next month.
Migrating an existing chart of accounts
If you already keep books somewhere, you do not start from a blank page. Export the transaction history with the category each row was filed to, and bring both across; the categories come along with the rows that used them.
Two things are worth doing during a migration, because it is the only moment the whole list is in front of you:
- Retire the dead accounts. Anything with no activity in twelve months.
- Merge the duplicates. Two accounts meaning one thing become one, and the history follows.
Import bank accounts only. Importing both the bank account and a credit card that settles it records the same spending twice — the classic migration mistake, and it inflates expenses for every month you brought over.
A starter chart for a service business
Adapt names to your trade; the shape holds.
Income: job revenue, service and repair, materials billed, other income.
Direct costs: direct labor, labor burden, materials, subcontractors, equipment and rentals, other job costs.
Overhead: rent and utilities, insurance, office wages, vehicle and fuel, repairs and maintenance, software and subscriptions, marketing, professional fees, bank and merchant fees, licenses and permits, training, office supplies.
Assets: operating bank account, accounts receivable, inventory, equipment, accumulated depreciation.
Liabilities: accounts payable, credit card, customer deposits, loans.
Equity: owner contributions, owner draws, retained earnings.
That is roughly thirty-five accounts, and it produces a P&L you can read while standing up.
Frequently Asked Questions
What is a chart of accounts for contractors?
It is the list of categories a contractor's income, spending, assets, liabilities, and equity get sorted into. Each account has one of five types, and the type determines whether it appears on the profit and loss statement or the balance sheet. Every transaction is filed to exactly one account.
How many accounts should a small contractor have?
Roughly twenty to forty. Enough to separate direct job costs from overhead and to break direct costs into labor, materials, subcontractors, and equipment — not so many that identical purchases get filed inconsistently. Detail about a specific job belongs on the job, not in a new account.
What is the difference between direct costs and overhead?
Direct costs exist because of a specific job; overhead is paid whether or not that job was sold. Materials for a named deck are direct. Insurance, rent, and office wages are overhead. Keeping them in separate groups is what makes gross margin a meaningful number.
Should labor be a direct cost or an expense?
Both, in the sense that direct labor is an expense account grouped with the other direct job costs. Crew wages on jobs go to direct labor; office and administrative wages go to overhead. Payroll taxes, workers' comp, and benefits on crew wages belong in a labor burden account beside it.
Can I change my chart of accounts later?
Yes, and you should as the business changes. Renaming a category keeps its history. Merging one into another moves its transactions and rules to the surviving category. The main caution is mid-year restructuring, which makes this year's months harder to compare against each other.
Do I need a chart of accounts if I use job costing?
They answer different questions. Job costing tells you whether one job made money. The chart of accounts tells you whether the company did, and where the money went in total. Both run off the same transactions, filed once.
Getting started with CRMb
Start with the five types, write down your direct-cost accounts first, then list overhead. Connect the bank feed read-only, add rules for the vendors you buy from every month, and file the backlog once. From there the P&L maintains itself.
CRMb gives every category an account type, files bank transactions to categories and to jobs, applies vendor rules across the transactions you already have, imports your existing history and categories, and builds the profit and loss, general ledger, and balance sheet from them. Job margin comes from real punched crew hours and average-cost materials, so the books and the job costs agree. On Mac, iPad, and the web. Start your 14-day free trial and set the books up once.