Subcontractor Spend Is Anchored to When the Job Was Created

Why this matters

You pull the quarter's subcontractor spend to answer one question - how much did we hand to other trades over those three months - and the figure does not answer it. It is not a record of money leaving the bank. It totals the subcontractor invoices attached to the jobs the shop OPENED inside that window, whenever those invoices happened to arrive. On the long multi-trade work subcontractors exist for, those two periods sit a full quarter apart in either direction. Quote the figure as cash out to a partner or a lender and the bank statement contradicts you, and the disagreement is structural, so nobody will ever find an error to fix.

Two dates, and the figure reads only one

Every subcontractor cost row in your records sits between two dates.

  • The job creation date: when the shop opened the job the subcontractor is working on.
  • The invoice date: when that subcontractor billed you for their part of it.

The window selects on the first. Every job created inside the period is pulled in, then every subcontractor invoice attached to those jobs is summed, regardless of when it landed. An invoice raised in November against a job opened in August is August's money.

So the unit of analysis is a job cohort, not a period's payments. "Second-quarter subcontractor spend" is shorthand for "what the jobs we opened in the second quarter ended up costing us in bought-in trades." Read the label that way and most of the confusion goes.

The creation date is a record-keeping event, not a work event

Worth saying plainly, because it is the part people assume they already know: the anchor is whenever your office opens the job record, which is a decision about paperwork rather than a fact about the work. Shops do it at three different moments, and the same job lands in a different cohort under each.

  • Opened at the quote. A job quoted in September and started in January anchors its whole subcontractor cost to September.
  • Opened when the customer says yes. The common case, and usually the one that matches how an owner thinks about a period's work.
  • Opened at dispatch or scheduling. The anchor sits closest to the work, at the cost of putting a job the shop won in one period into the next one.

Two more that surprise people: a job generated from a recurring agreement takes the date it was generated, not the date the agreement was signed, and a job re-opened months later to finish a punch list may take a fresh date and split one piece of work across two cohorts.

The consequence that matters is not which policy you run, it is whether it changed. If the office moved from opening jobs at the quote to opening them at dispatch part way through last year - a new process, a new admin, a scheduling change - every comparison across that boundary is measuring the policy, not the shop. The tell is a one-off step in the series that nothing about the work explains. Check when jobs got opened before you explain a step in this figure.

Both directions it fails as a spend report

It drops money you definitely paid. A project opened in February runs to July. Every subcontractor invoice on it is raised in the second quarter. The second quarter's figure contains none of it, because the job belongs to the first quarter's cohort. The payments cleared; the figure does not know they exist.

It claims money you have not paid. A job opened in the last week of a window carries its entire eventual subcontractor cost into that window, including invoices nobody will raise for months. Nothing is wrong with that, it is what a cohort figure is for, but it means the window's total is not finished when the window closes.

Those are not opposite errors that cancel. They are one rule applied at the two ends of the window, and they bite the same class of work: long, multi-trade, subcontractor-heavy. A shop that subs only one-visit tasks billed the same week can run for years without meeting either.

The worked case

Index subcontractor cost in sub-days, where 1.0 unit is one subcontracted worker on site for one working day. The shop's first quarter closed on the last day of March.

Twelve jobs created in the first quarter carried at least one subcontractor. Eleven were short, and every subcontractor invoice against them was raised before the quarter closed: 22.0 units in total. The twelfth is Project L, a multi-trade retrofit opened in mid-March, whose invoices arrived like this:

  • March: 2.0 units
  • April: 6.0 units
  • May: 4.0 units
  • July: 2.0 units, the last trade off the punch list

Project L's eventual subcontractor cost is 2.0 plus 6.0 plus 4.0 plus 2.0, or 14.0 units, and every one of those units is anchored to the first quarter because that is when the job was opened.

Read on 5 April, the first quarter shows 22.0 plus 2.0, which is 24.0 units across 12 jobs.

Read on 5 August, after the final invoice, the same quarter shows 22.0 plus 14.0, which is 36.0 units across the same 12 jobs.

Nothing about the window changed. The figure rose by 12.0 units, which is 50 percent of the 24.0 first reported, four months after the period ended.

What the immature read does to a comparison

The second quarter's cohort: 10 jobs carrying a subcontractor, 19.0 units of eventual subcontractor cost, all of it invoiced by the end of July.

Matured, per job that carried a subcontractor, the first quarter is 36.0 over 12, or 3.0 units, and the second is 19.0 over 10, or 1.9 units. The first quarter's cohort ran about 1.6 times the second's on that basis, since 3.0 divided by 1.9 is 1.58. Both sides are the same thing measured the same way - sub-days per job carrying a subcontractor, over a matured cohort - and that comparison is exactly what this figure is built to make.

Now make the ordinary mistake. Compare the first quarter as it read on 5 April, 24.0 over 12 or 2.0 units per job with a subcontractor, against the matured second quarter at 1.9 units. The two look level, about 5 percent apart on the second quarter's base, since 0.1 over 1.9 is 5.3 percent. The immature read does not soften the finding, it deletes it - and it deletes it in the flattering direction every time, because the invoices still outstanding are the later, larger ones on the longer jobs. This is the cohort-truncation shape: outcomes counted inside the same window that supplied the opportunities, which understates whatever has not finished yet.

When a window is finished

Measure the lag from your own records rather than guessing at it. Take the longest-running job type you subcontract, find the gap between its creation date and its LAST subcontractor invoice, and use that as your maturation lag. Project L's final invoice landed four months after the job opened, so on this shop's own evidence a window is not final until roughly four months after its last-created job.

Two rules follow, and the first is the one that actually gets broken:

  • Compare windows at equal age, not at equal calendar position. If you have to report before a window has matured, read both sides at the same number of days past their close. Two quarters both read 30 days after closing are comparable even though neither is final. One matured quarter against one fresh quarter is not a comparison at all.
  • Where every subcontracted task is a one-visit trade billed on completion, 30 days past the window close usually covers it. That is a starting point to tune, not a rule: where you buy multi-month scope, go and measure, because the number that matters is your own longest tail and no benchmark can supply it.

The query that does answer the cash question

Cash out is a different query on the same rows: anchored on the invoice date, taking no notice of which job the work belonged to. Both queries are correct and a shop needs both.

Run it on the same second quarter. Project L's April and May invoices are 6.0 plus 4.0, or 10.0 units. The second-quarter cohort raised 16.0 of its 19.0 units inside the quarter, with the remaining 3.0 units landing in July. Invoice-dated total for the second quarter: 10.0 plus 16.0, or 26.0 units.

So the same quarter is 19.0 units job-anchored and 26.0 units invoice-dated. The gap is 7.0 units, which is 36.8 percent of the job-anchored figure and 26.9 percent of the invoice-dated one - two different bases for one gap, which is why the percentage has to say which it is standing on. Neither figure is wrong and neither is a correction of the other. The job-anchored figure tells you what the work you took on cost you; the invoice-dated figure tells you what your bank did.

The practical consequence: when someone asks for subcontractor spend, ask back whether they are pricing work or planning cash. Hand over the wrong one and it will be believed, because both are plausible and neither carries a label.

There is a third anchor neither query answers, and it is the one with a filing deadline behind it: information reporting on Form 1099-NEC keys to the date you PAID an unincorporated subcontractor inside a calendar year, not to the invoice date and not to the job date, so build that from the payment ledger alone - exclude anything paid by card or third-party network, which the processor reports on Form 1099-K under 26 USC 6050W, and take the current reporting threshold from that year's Instructions for Forms 1099-MISC and 1099-NEC rather than from memory, because the threshold changed for payments made after 31 December 2025.

The inclusion map

The question decides the anchor. This is the whole card in one table.

The question you are asking The anchor that answers it What the job-anchored figure does to it
What did the work we took on this quarter cost us in bought-in trades? job creation date Answers it, once the window has matured
What left our bank this quarter? invoice or payment date Misses whatever straddles, in both directions
Are we buying more outside trade per job than we used to? job creation date, divided by jobs that carried a subcontractor Answers it, provided both windows are read at the same age
Did this project beat its subcontractor allowance? the job itself, no window at all Answers it directly, and the reporting period is irrelevant
What do we still owe subcontractors right now? open commitments, no window at all Invisible to it - it holds invoiced amounts only
Which trades are we buying most often? the assignment, not the job or the invoice Invisible to it - a job carrying four subcontractors is one row of money

Two degenerate cases pin the rule. A shop whose subcontractors all bill within the same week they work will find the job-anchored and invoice-dated figures agreeing to within a few percent every quarter, and can safely use either. A shop with one very large multi-year project and nothing else will find the job-anchored figure putting the entire project into a single quarter and reporting zero for every other quarter it ran. Neither shop has a broken figure. The first has a short tail, the second has a cohort of one, and the anchor is behaving identically in both.

References

  • See related: Average Subcontractor Cost per Job Counts Only Invoiced Work - the companion exclusion, on the same rows
  • See related: Form W-9 Collection and Form 1099-NEC Workflow for Subcontractor Onboarding - the payment-date anchor and its filing deadline
  • See related: Subcontractor Utilisation and the Capacity Question Behind It
  • See related: Estimate Conversion Rate and the Cohort Problem - the owner of the truncation claim this card leans on
  • See related: Days Sales Outstanding and the Mismatch Inside It - the neighbouring case of a figure that moves with the window you picked
  • See related: What a Subcontractor Agreement Must Spell Out - where invoicing timing gets fixed before it becomes a reporting problem