How to build a headcount plan that connects to the P&L
Build a position-level plan that drives fully loaded cost, start-date timing, and backfills straight into the financial statements — without it becoming a spreadsheet you can't maintain.
People cost is the biggest line most companies plan, and it’s the one most teams plan worst. A department-level number — “Sales: 12 heads, $1.8M” — can’t tell you who hits which GL account, what happens when a July hire gets booked as if they started in January, or how much you save during the two months a seat sits empty. It’s a placeholder dressed up as a plan.
A headcount plan that actually connects to the P&L does five things: it picks the right grain, builds loaded cost once as drivers, spreads by start date, shows vacancies honestly, and rolls up by cost center and account so it ties to financial statement lines. Here’s how to build each one.
Pick the grain: one row per position, not per person or per department
The single decision that keeps this manageable is grain. One row per position — filled or open — not one row per named person and not one aggregate number per team.
A position has an ID (say, SALES-AE-014), a title, a department, a cost center, a GL mapping, and a status: Active, Open, TBH (To Be Hired), or Backfill. The status field is what lets you filter approved heads from aspirational ones and reconcile your row count to the headcount budget leadership actually signed off on.
Plan at the department level and you physically cannot model start dates, backfills, or GL mapping. Plan at the person level and you’ve built an HR system you have to re-key every time someone gets promoted. The position is the unit that survives turnover: when AE-009 leaves, the seat stays, the cost story continues.
Build the loaded cost once, as drivers
Base salary is roughly two-thirds of what a person costs. Plan on base alone and you’ll understate the real number by something like 30 to 45 percent — then watch benefits and payroll taxes blow the budget when they land.
Build the stack once, as reusable drivers, and let every row inherit it. For AE-014 (illustrative numbers throughout):
- Base salary: $120,000
- Target bonus/commission @ 15%: $18,000
- Cash comp subtotal: $138,000
- Employer FICA @ 7.65% of cash comp: $10,557
- Benefits, employer portion @ $1,200/mo: $14,400
- 401(k) match @ 4% of base: $4,800
- Fully loaded annual: $167,757
That gives a loaded factor of 167,757 ÷ 120,000 = 1.40x — a fast sanity check for any role on the sheet. If a position’s loaded cost isn’t landing near base × your factor, something’s wrong.
Two of those inputs are not mine to set for you: the $1,200/mo benefits load and the 4% match are company-specific, so pull the real ones from Total Rewards before this plan leaves your desk. The payroll tax line, though, is firmer than people treat it — employer FICA is a fixed 7.65% (6.2% Social Security plus 1.45% Medicare), not a number to round. What does vary is state unemployment tax, and the Social Security half stops at the annual wage-base cap, so a flat 7.65% slightly overstates tax on high earners late in the year. Don’t pad it up to 8% “to be safe” — a rate sits on every role, so rounding up quietly inflates the whole plan.
Spread by start date so timing is real
A run-rate isn’t a budget. AE-014’s monthly loaded cost is 167,757 ÷ 12 = $13,980. But the approved start is April 1, so this plan year carries nine months:
13,980 × 9 = $125,820
Not the full $167,757. Booking the annual figure on an April hire overstates that role by about $42K. On a July hire it’s roughly half the role’s cost, sitting in your budget for work nobody did.
The plan’s whole job is to know when people start costing money. A full-year number on a partial-year hire isn’t conservative — it’s wrong.
Slips happen. If AE-014 moves to May 15 under a mid-month proration convention: April = $0, May = 13,980 × 0.5 = $6,990, June–December = 13,980 × 7 = $97,860, for $104,850. Same role, $21K less, because the start date moved six weeks. Pick one proration convention (full-month, mid-month, or daily), agree it up front, and apply it everywhere.
For TBH roles, this is also where recruiting reality lives. “Approved in January” doesn’t mean “paid from January.” Push the start date out by your own time-to-fill so the cost lands when the seat is plausibly filled — not the day the requisition opened.
Show the vacancy when someone leaves
A leaver is money, and most plans get it wrong in one of two directions: they assume instant replacement (no vacancy savings) or no replacement at all (understated cost). Both are fiction.
AE-009 (filled, $115K base, loaded ~$161K, $13,417/mo) terminates June 30. Open a backfill position, AE-009B. Recruiting’s time-to-fill is 60 days, so the new hire starts September 1. July and August are empty:
2 months × $13,417 = $26,834 of natural savings the plan should show.
Don’t keep paying a terminated employee, and don’t pretend the seat refills overnight. The backfill row, with its own term date and start date, captures both the gap and the resumed cost. That’s also where you’d fold in attrition — model expected terms off your own historical rate, not an industry rule of thumb, and let each one spawn a backfill with a vacancy gap.
Roll it up by cost center and account
This is the step that makes it a plan and not a list. One pivot: rows = GL account, columns = month, values = sum of loaded cost, filtered by cost center.
April’s Sales-Salaries line (GL 60000, cost center 4200) now picks up AE-014’s $13,980. Payroll taxes flow to GL 60200 and benefits to 60300 automatically, because they’re driver percentages off the same row — no separate manual entry, no re-keying. Reconcile total positions back to the approved budget, and the headcount tab rolls straight into the financial statements.
The GL-to-P&L mapping itself (which heads are COGS, R&D, or SG&A) is entirely company-specific. Validate it against your actual chart of accounts.
What this doesn’t decide for you
The mechanics are mechanical. The judgment isn’t. Whether bonus accrues ratably each month or hits at payout in Q1 is an accounting-policy call — pick a convention with your controller and stay consistent, because mixing P&L recognition with cash timing is a quiet way to be wrong all year. Whether commissions even live in this plan or in a separate variable-comp model depends on your company. And ramp — the weeks before a new AE produces or fully earns commission — is a revenue-model question this cost plan shouldn’t try to answer alone.
Scenarios, by contrast, are mechanical, and the rule is: don’t duplicate the tab. Start-date slips, a higher attrition rate, a different loaded factor — those are assumption cells you toggle, not sheets you copy. Copy the sheet and your versions drift until none of them tie.
How to know you got it right
Run it against last month’s actuals. Pull the position tab’s total for the cost centers you can check, compare to payroll, and explain the gap. The gap should be timing and known changes — a mid-month start, a term, a merit increase that stepped salary up on its effective date — not a mystery. If you can’t account for the variance line by line, the plan isn’t connected yet.
The bar is simple: every dollar of people cost in the P&L should trace to a position, a start date, and an account. If it can’t, it’s a placeholder.
Get it in your inbox
Practical FP&A you can actually use, once or twice a week.