Skip to content
Field notes / Industry deep-dive
Industry deep-dive

Administrative & Support Services Chart of Accounts: Labor, Contracts, and Overhead

How janitorial, staffing, security, and facilities management companies should structure their chart of accounts to separate billable labor from overhead and see real margin by service line.

CTChartOfAccounts.ai Team - Administrative Services Accounting Specialists.September 12, 2026.7 min read

If you run a janitorial company, staffing agency, security firm, or facilities management business, your biggest cost is people — and most of those people work at a client's site, not yours. The default QuickBooks chart of accounts doesn't make that distinction. It gives you one payroll expense line, which mixes the wages of the cleaner working a client's office floor with the salary of the office manager running your business. That single number can't tell you whether a contract is profitable.

This guide walks through setting up a chart of accounts built for labor-intensive service businesses — the kind where the product you sell is hours of work performed on someone else's premises.

Why a Generic Chart of Accounts Fails This Industry

Administrative and support services covers a wide range of businesses — janitorial services, temp staffing, call centers, document management, facilities management, security guards — but they share a structure: you bill clients for labor and services, that labor is your largest cost, and most of it happens off your own premises under a client contract.

A generic chart of accounts groups everything labor-related into one "Payroll Expenses" account. That tells you total payroll spend, but it can't answer the questions that actually run the business:

  • Which contracts are profitable once you net out the wages of the people working them
  • What billable service delivery actually costs versus what it costs to run the office that manages those contracts
  • How much you're spending to source and screen workers before they ever bill a client
  • What you're owed for work already performed but not yet invoiced

Under Generally Accepted Accounting Principles (GAAP), the cost of directly delivering a service belongs in cost of goods sold, sitting right above gross profit — while the cost of running the business sits below it, in operating expenses. Collapsing both into one payroll line erases that line entirely, and with it any way to see gross margin by service or by client.

Separating Direct Labor from Administrative Overhead

The single most important structural decision for this industry is splitting payroll into two groups, based on one question: is this person's time billed to a client?

Direct labor (cost of goods sold) covers wages for people actually performing the contracted work — the janitorial crew on a client's floor, the temp worker placed at a client site, the security guard on assignment, the support staff answering calls under a client contract. This is the cost of producing the service you're selling.

Administrative payroll (operating expense) covers everyone who keeps the business running but doesn't personally deliver billable work — office staff, management, the people who sell and schedule contracts rather than staff them.

This split is what turns a payroll total into a margin number. Once direct labor sits in cost of goods sold, gross profit tells you what's left after paying the people who actually did the work — before rent, insurance, and management salaries come out.

Core Accounts for Administrative & Support Services

The table below pulls directly from the Administrative & Support Services chart of accounts template — the accounts that separate this industry from a generic services business.

AccountNumberTypePurpose
Unbilled Services1210Accounts ReceivableServices performed but not yet invoiced to the client
Contract Retainage Receivable1220Accounts ReceivableAmounts a client is holding back under contract terms until work is confirmed
Direct Labor - Janitorial Staff5000Cost of Goods SoldWages for cleaning staff working on client sites
Direct Labor - Temporary Workers5010Cost of Goods SoldWages for temp staff placed at client locations
Direct Labor - Security Personnel5030Cost of Goods SoldWages for security guards on client assignments
Staffing Recruiter Costs5400Cost of Goods SoldCosts to recruit and source temporary workers before they're placed
Background Checks - Direct5410Cost of Goods SoldScreening tied to a specific worker placement
Temp Agency Payables2010Accounts PayableAmounts owed to staffing suppliers you subcontract through
Temp Worker Wages Payable2210Other Current LiabilityWages owed to temporary workers, tracked separately from regular payroll
Deferred Service Revenue2240Other Current LiabilityClient payments received in advance of services being performed
Admin Salaries & Wages6000ExpenseSalaries for office and administrative staff — not billed to any client
Recruiting & Job Postings6710ExpenseHiring and advertising costs for administrative hires, kept separate from client-facing recruiting

Notice the pattern: recruiting and background checks appear twice, once in cost of goods sold (5400, 5410) for sourcing the workers you place on client contracts, and once in operating expenses (6710) for hiring your own office staff. Same activity, different purpose — one is a direct cost of delivering a service, the other is running the business.

How This Gets Booked: A Staffing Agency Placement

A staffing agency places a temp worker with a client for a two-week assignment at $28/hour, billing the client $42/hour.

The wages paid to the temp worker post to Direct Labor - Temporary Workers (5010), a cost of goods sold account, because that person's time is the service being sold. If the agency ran a background check specifically for this placement, that cost posts to Background Checks - Direct (5410) — also cost of goods sold, because it was incurred to deliver this specific placement.

Meanwhile, the agency's own office coordinator who scheduled the placement and handled the client relationship is paid from Admin Salaries & Wages (6000), an operating expense. That salary doesn't scale with any one placement — it's the cost of running the agency.

At the end of the two weeks, if the agency has performed the work but not yet sent an invoice, the earned revenue sits in Unbilled Services (1210) until billing catches up. Once invoiced, it moves to standard accounts receivable. This matters for accrual-basis reporting: the revenue and its matching labor cost should land in the same period, even if the invoice goes out a few days later.

With this structure, the agency can pull a report on the placement alone — $42/hour billed minus $28/hour in direct labor minus the background check — and see the actual margin on that assignment, separate from the office coordinator's salary and every other overhead cost.

How This Gets Booked: A Janitorial Contract with Retainage

A facilities client signs a monthly janitorial contract but holds back 10% of each invoice as retainage — money owed but not released until the end-of-year service review.

The janitorial crew's wages post to Direct Labor - Janitorial Staff (5000), the cleaning chemicals and supplies they use on-site post to Cleaning Supplies - Direct (5200), and both sit in cost of goods sold because they're incurred to deliver this specific contract. When the monthly invoice goes out, 90% becomes standard accounts receivable, and the 10% held back posts to Contract Retainage Receivable (1220) — still an asset, since the client owes it, but tracked separately so it doesn't get mistaken for cash that's about to arrive.

Separating retainage matters for cash flow planning. A business with $50,000 in accounts receivable that's genuinely 30 days out plans very differently than one where $10,000 of that total won't be collected until a year-end review clears.

Get Started

Our administrative & support services chart of accounts template includes all of these accounts pre-configured — direct labor split from administrative payroll, staffing and screening costs separated by purpose, and retainage tracked apart from standard receivables. Import it into QuickBooks in 60 seconds.

Try the free demo →

More from field notes

All posts ->