Why the Standard QuickBooks Template Fails Contractors
When a $3M electrical contractor sets up QuickBooks for the first time, the default chart of accounts includes categories like "Sales," "Cost of Goods Sold," "Advertising," and "Office Supplies." There is no account for retainage receivable, no work-in-progress asset, no overbilling liability, no equipment clearing account, and no structure for tracking job costs by category.
The result is predictable. The bookkeeper posts all revenue to a single income account, dumps all job costs into a single COGS account, and the owner has no visibility into which jobs are making money and which are bleeding cash. When the CPA asks for a WIP schedule at year-end, nobody can produce one without weeks of manual reconstruction.
This is not a QuickBooks problem. It is a chart of accounts problem. The COA is the skeleton of your financial reporting system. If the skeleton is wrong, every report built on top of it will be wrong too.
The Three Outputs Your COA Must Support
Before selecting individual accounts, define what your chart of accounts needs to produce. For a contractor in the $1M to $15M range, there are three non-negotiable outputs.
Job cost reports by project. You need to see, for each active job, how much you have spent on labor, materials, subcontractors, equipment, and other direct costs versus what you estimated in your bid. This requires cost categories in your COA that align with how you estimate and bid work.
A WIP schedule that ties to the balance sheet. Your WIP schedule compares earned revenue to billed revenue on each job. The net overbilling or underbilling must tie exactly to the overbilling and underbilling accounts on your balance sheet. If your COA does not have dedicated WIP asset and liability accounts, this reconciliation is impossible.
Financial statements your surety and lender can use. Bonding companies and banks expect to see construction-specific line items on your balance sheet: retainage receivable, costs in excess of billings (underbilling), billings in excess of costs (overbilling), retainage payable, and equipment at net book value. If your COA forces the CPA to reclassify dozens of accounts to produce these statements, you are paying for unnecessary CPA time and introducing reclassification errors.
Balance Sheet Accounts: The Construction-Specific Accounts That Matter
Current Assets (1000-1499)
The asset section of a construction COA needs several accounts that do not exist in a standard template. Account 1000: Operating Checking and Account 1010: Payroll Checking should be separated so you can reconcile payroll independently. If you maintain a dedicated account for a line of credit or equipment loan draws, give it its own account as well.
Account 1100: Accounts Receivable captures invoiced amounts that have not yet been collected. However, construction AR requires an additional account that most industries do not need: Account 1150: Retainage Receivable. Retainage is the 5% to 10% of each progress billing that the owner withholds until project completion or a defined milestone. On a $2M contract with 10% retainage, you could have $200,000 sitting in retainage receivable. If this is lumped into regular AR, your aging reports are meaningless because retainage is not "overdue" in the traditional sense; it is contractually held.
Account 1200: Costs in Excess of Billings (Underbilling) is a current asset that represents revenue you have earned under the percentage-of-completion method but have not yet billed. This is the "underbilling" line on your WIP schedule. It belongs on the balance sheet as an asset because you have a contractual right to bill for work already performed.
Account 1300: Employee Advances captures any draws or advances to employees that have not yet been deducted from payroll. Account 1350: Prepaid Insurance and Account 1360: Prepaid Expenses round out the current asset section. Construction companies often prepay significant general liability and workers compensation premiums, so separating insurance prepayments from other prepaids is useful.
Fixed Assets (1500-1799)
Equipment-heavy contractors need a clean fixed asset structure. The key accounts are Account 1500: Vehicles, Account 1510: Accumulated Depreciation - Vehicles, Account 1520: Heavy Equipment, Account 1530: Accumulated Depreciation - Equipment, Account 1540: Tools and Small Equipment, Account 1550: Office Equipment and Furniture, and Account 1560: Leasehold Improvements if you own or improve your shop or yard.
The critical addition is Account 1580: Equipment Clearing Account. This is a holding account used when you purchase equipment that needs to be allocated across multiple jobs or when you need to capture all costs associated with a purchase (sales tax, delivery, setup) before reclassifying the total to the appropriate fixed asset account. Without a clearing account, partial equipment costs get posted directly to expense, inflating job costs in one period and understating them in the next.
Current Liabilities (2000-2499)
Account 2000: Accounts Payable and Account 2010: Accrued Expenses are standard. Account 2050: Retainage Payable (Sub-Retainage) is the construction-specific counterpart to retainage receivable. When you withhold 5% to 10% from your subcontractors' pay applications, that amount belongs in sub-retainage payable, not in regular AP. A $5M GC with ten active subs could have $150,000 or more in sub-retainage payable at any given time.
Account 2100: Billings in Excess of Costs (Overbilling) is a current liability that represents amounts you have billed the owner that exceed the revenue you have earned based on percentage of completion. This is the "overbilling" line on your WIP schedule. It is a liability because you owe the owner work for money you have already collected.
Account 2200: Current Portion of Long-Term Debt separates the next twelve months of equipment loan and vehicle loan payments from the long-term balance. Account 2250: Sales Tax Payable, Account 2300: Payroll Liabilities (federal withholding, state withholding, FICA, FUTA, SUTA), and Account 2350: Accrued Wages complete the current liability section.
Long-Term Liabilities and Equity (2500-3999)
Account 2500: Notes Payable - Equipment, Account 2510: Notes Payable - Vehicles, and Account 2520: Line of Credit capture your long-term obligations. Keep each loan in its own account so you can reconcile to lender statements without combining balances.
The equity section includes Account 3000: Owner's Equity or Common Stock, Account 3100: Retained Earnings, and Account 3200: Owner's Draws or Distributions. For S-corps, you may also need Account 3150: Shareholder Loans if the owner has loaned money to or borrowed money from the company.
Income Accounts: Keep It Simple
This is where many contractors go wrong. They create a separate income account for every type of work: "Residential Revenue," "Commercial Revenue," "Service Revenue," "T&M Revenue," and so on. Then they cannot figure out which account to use for a job that is partly commercial and partly T&M.
Use two to four income accounts maximum. The recommended structure is Account 4000: Contract Revenue for all project-based income, Account 4100: Service and T&M Revenue for non-contract work, and Account 4200: Other Income for miscellaneous items like equipment rental income or scrap sales. If you do both residential and commercial work and need to track them separately for reporting, use a Class or Tag in QuickBooks rather than separate income accounts.
Revenue segmentation belongs in your reporting layer, not in your COA. Your COA should be stable. Your reporting dimensions (by division, by project type, by region) should be flexible.
Cost of Revenue: The Five Categories That Drive Job Costing
The cost of revenue section is the heart of your construction COA because it feeds your job cost reports. The goal is to have enough categories to make job cost reports useful but few enough that every transaction can be posted to the right account without guesswork.
Account 5000: Direct Labor includes wages, burden (employer payroll taxes), and workers compensation insurance for field employees who work directly on jobs. Do not include office staff or estimators here.
Account 5100: Materials captures all materials purchased for jobs: lumber, pipe, wire, concrete, fixtures, and anything else that becomes part of the finished project. If you maintain an inventory of materials, you will also need Account 1250: Materials Inventory on the balance sheet and a process for relieving inventory to jobs.
Account 5200: Subcontractor Costs is often the largest single cost category for general contractors. Every subcontractor invoice, including their retainage, flows through this account. For specialty contractors who rarely use subs, this account will have minimal activity.
Account 5300: Equipment Costs captures the cost of equipment used on jobs, whether that is internal equipment charges (from your own fleet), equipment rentals, or fuel and maintenance allocated to jobs. This is where the equipment clearing account becomes important: equipment purchases go through the clearing account and are then either capitalized as fixed assets or expensed to this cost category.
Account 5400: Other Direct Costs is a catch-all for job-related costs that do not fit the other four categories: permits, bonds, temporary facilities, dumpsters, portable toilets, safety equipment, and small tools consumed on the job.
These five categories should mirror the categories in your estimating system. When your estimator bids a job with line items for labor, materials, subs, equipment, and other, the actual costs should land in accounts that map directly to those bid categories. This alignment is what makes job cost variance analysis possible.
Overhead and G&A Expenses: The Accounts That Do Not Hit Jobs
Overhead expenses are the costs of running your business that are not directly attributable to a specific job. The typical range for overhead as a percentage of revenue is 8% to 15% for contractors in the $1M to $15M range. If your overhead rate is above 15%, your COA should be detailed enough to identify where the bloat is.
Account 6000: Officer Compensation separates owner or officer salaries from other payroll. This matters for tax planning (reasonable compensation for S-corps), bonding (sureties scrutinize officer comp relative to company size), and profitability analysis.
Account 6100: Office Salaries and Wages captures administrative staff payroll. Account 6200: Payroll Taxes and Benefits - Overhead captures the employer burden on overhead staff. Account 6300: Rent and Facilities covers your office, shop, and yard costs. Account 6400: Insurance - General captures general liability, umbrella, and professional liability premiums that are not allocated to specific jobs. Account 6410: Insurance - Auto covers your commercial auto policy.
Account 6500: Office Expenses consolidates supplies, postage, printing, and similar costs. Account 6600: Professional Fees covers your CPA, attorney, and consultants. Account 6700: Marketing and Business Development captures advertising, website, trade shows, and meals with clients. Account 6800: Vehicle and Travel covers non-job-related vehicle expenses and travel. Account 6900: Depreciation and Amortization captures book depreciation on fixed assets. Account 6950: Interest Expense captures interest on your line of credit, equipment loans, and vehicle loans.
Why Flat Structures Outperform Deep Subaccounts
A common mistake is creating deeply nested subaccounts. Instead of one "Materials" account (5100) tracked at the job level, the contractor creates 5100.01 Lumber, 5100.02 Electrical, 5100.03 Plumbing, 5100.04 Concrete, 5100.05 Drywall, and so on for thirty material types. Then they do the same thing for labor and subs.
This creates several problems. First, you end up with 150 to 200 cost of revenue accounts, and bookkeepers inevitably post transactions to the wrong subaccount. A $4,000 invoice for "mixed materials" could reasonably go in five different subaccounts, so the bookkeeper picks one at random or creates a new "Miscellaneous Materials" subaccount.
Second, your financial statements become unusable. A P&L with 200 line items in cost of revenue tells you nothing at a glance. Your CPA will collapse them into summary categories for your surety and bank anyway, so you are doing extra work for no benefit.
Third, the detail you want at the subaccount level belongs in your job cost system, not your general ledger. QuickBooks Projects, Sage, Procore, or whatever project management tool you use can track material costs at the line-item level per job. The general ledger should only carry the summary: total materials for Job 2024-015 is $47,300.
The recommended structure is 40 to 50 total accounts. That is roughly 15 balance sheet accounts, 3 income accounts, 5 cost of revenue accounts, and 15 to 20 overhead accounts. This is enough to produce clean financial statements, accurate job cost reports, and a reconcilable WIP schedule.
QuickBooks Online Setup Specifics
Classes for Divisions, Projects for Jobs
QuickBooks Online gives you two tracking dimensions beyond the account structure: Classes and Projects (formerly called "Customer:Job" in QuickBooks Desktop). Use them correctly and you get powerful reporting. Use them incorrectly and you create a mess.
Classes should represent your divisions or profit centers. If you operate a commercial division and a residential division, create two classes. If you have a service department that operates as a separate profit center, create a third class. Do not use classes for individual jobs. QuickBooks Online has a practical limit of about 40 classes before report formatting breaks down, and a busy contractor can easily have 40 or more active jobs.
Projects should represent individual jobs. Every transaction associated with a specific job should be tagged with the corresponding Project. This allows you to run a Project Profitability report that shows revenue, direct costs by category, and gross profit for each job, which is the foundation of your job cost reporting.
Mapping Cost Categories
When you create a bill or expense in QuickBooks Online, you select both the account (which cost category) and the project (which job). This two-dimensional posting is what makes job cost reports possible. A subcontractor invoice for $25,000 on the Main Street project would be posted to Account 5200 (Subcontractor Costs) and tagged to the Main Street Project.
If someone posts the invoice to the right account but forgets the project tag, the cost hits your P&L correctly but disappears from your job cost report. This is why bookkeeper training and transaction review processes matter as much as the COA structure itself.
Sub-Customer Workaround for Retainage
QuickBooks Online does not natively handle retainage well. The most reliable workaround is to create each owner or GC as a Customer, then create a sub-customer called "[Customer Name] - Retainage." When you invoice, you split the billing: 90% to the main customer (hitting Account 1100: Accounts Receivable) and 10% to the retainage sub-customer (hitting Account 1150: Retainage Receivable). When retainage is released and collected, you apply the payment against the retainage sub-customer invoices.
This is not elegant, but it keeps your AR aging clean. Regular AR shows what is currently collectible, and retainage AR shows what is contractually held.
Chart of Accounts Import
If you are setting up a new QuickBooks Online file, build your COA in a spreadsheet first, then use the Import feature under Settings > Chart of Accounts > Import. This is faster than creating accounts one at a time and lets you review the entire structure before it goes live. Export your completed COA to a CSV backup before you start entering transactions.
Connecting the COA to Your WIP Schedule
Your WIP schedule pulls data from multiple places in your COA. For each active job, it needs the contract amount (from your project records or a custom field), total estimated cost (from your project manager's estimate), costs incurred to date (the sum of accounts 5000 through 5400 tagged to that project), billings to date (the sum of invoices tagged to that project), and the calculated over/under billing (which should tie to accounts 1200 and 2100 on the balance sheet).
If your COA and project tagging are set up correctly, you can extract costs incurred to date and billings to date directly from QuickBooks reports. The percentage of completion calculation and the resulting over/under billing entries are typically prepared in a spreadsheet or WIP software and then posted to the general ledger as adjusting journal entries.
The key reconciliation check is that the sum of all underbilling amounts across jobs equals the balance in Account 1200, and the sum of all overbilling amounts equals the balance in Account 2100. If these do not tie, there is a posting error in your COA that needs to be found and corrected before you publish your WIP schedule.
Common Mistakes and How to Avoid Them
Mixing job costs and overhead. If an office manager occasionally visits a job site, do not allocate their salary to job costs. Only costs that are directly and exclusively related to a specific project belong in the 5000 series accounts. When in doubt, leave it in overhead. Sureties prefer conservative job costing.
Ignoring the equipment clearing account. When you buy a $120,000 excavator, the costs include the purchase price, sales tax, delivery, and possibly modifications. If you post the purchase price to equipment and forget the $8,400 in sales tax, your asset is understated and your job costs or overhead are overstated. Run everything through the clearing account first, then reclassify the total to the fixed asset account.
Creating accounts for one-time events. You do not need an account for "Hurricane Damage Repair" or "COVID PPP Loan." Use a journal entry memo or a class tag to identify unusual items. Every account you add is an account you have to maintain, reconcile, and explain to your CPA.
Not reviewing the COA annually. Your business changes. Accounts that made sense three years ago may be unused or redundant. Once a year, run a trial balance and look for accounts with zero activity for twelve consecutive months. Merge or inactivate them. A lean COA is a functional COA.
The Account Numbering Summary
For quick reference, here is the numbering framework that covers most contractors in the $1M to $15M range. 1000-1499 for current assets including cash, AR, retainage receivable, underbilling, prepaid expenses, and inventory if applicable. 1500-1799 for fixed assets including vehicles, equipment, accumulated depreciation, and the equipment clearing account. 2000-2499 for current liabilities including AP, retainage payable, overbilling, current portion of debt, and payroll liabilities. 2500-2999 for long-term liabilities. 3000-3999 for equity. 4000-4999 for income. 5000-5499 for cost of revenue with the five direct cost categories. 6000-6999 for overhead and G&A expenses.
This framework gives you room to add accounts as your business grows without renumbering. A $2M contractor might use 38 accounts. A $12M contractor with multiple divisions might use 52. Either way, the structure remains stable and every report your surety, bank, or CPA needs can be produced without manual reclassification.