Reconciling factory and site timesheets: the quiet margin leak in shopfitting

Two timesheet worlds, one job cost. Why they never agree, what it costs you, and the three-step fix.

Ask a shopfitter’s operations director where the last percentage point of margin leaked on their most recent contract and the answer is rarely “materials” and almost never “estimating.” It is almost always timesheets — specifically, the gap between factory and site.

This article is for contracts managers, estimators and ops leads who live that reality every week. It covers why the two worlds never agree, what the reconciliation gap actually costs, and a three-step fix you can start this month.

The two timesheet worlds

A UK shopfitter’s production lives in two very different environments.

  • The factory. Benches, CNCs, spray booths, clocking-in cards or MRP logins, regular shift patterns, jobs coded by production order, line managers who know which person was on which job because they were stood next to them. Time capture tends to be mature, granular and reasonably accurate.
  • The site. Vans, mobile install crews, irregular hours, subcontract labour, WhatsApp messages, weekly paper timesheets signed by the contracts manager, overtime, travel time, standing time, and the classic “we were held up on site for two days because the plasterers were not out.” Time capture is as good as the contracts manager is disciplined — which varies week to week.

Both worlds feed the same contract. Both worlds are supposed to agree on how many hours have gone into job number 2471. They rarely do.

Why they never agree

Five recurring reasons:

  1. Different clocks. Factory time is captured in real time, in 15-minute blocks, to a production order. Site time is captured retrospectively, by a contracts manager, to a job number. You are comparing a measurement to a reconstruction.
  2. Different job codes. Factory uses a production-order code; site uses a project code; accounts use a sales-order code. Three codes, three people’s filing systems, one contract.
  3. Variations without paperwork. A site foreman works six extra hours on Friday because the client asked for something extra. The client agrees it is a variation. Nobody raises a variation order. Six hours of cost sit against the base contract, no revenue attaches, and the margin on the contract drops.
  4. Subcontract hours treated as cost-only. Brickies, electricians and trim carpenters bought in for a single site. Their hours land as subcontract cost, but if nobody attaches them to the job at the right granularity, the contract’s true labour-to-revenue ratio stays hidden.
  5. Weekly payroll cycle vs. monthly job-cost cycle. Payroll has to close Friday afternoon. Job costing waits for the month-end. By the time the numbers meet, the data has been summarised twice — and summarisation always loses fidelity.

What the gap costs you

Three specific and measurable impacts:

  • Under-recovered variations. This is the big one. Work that was done, could have been charged, but was never formally varied — because nobody put the two worlds side-by-side in time. On a £1.5m fit-out, two to three hours per week of unbilled variation labour across a 20-week programme is £8k–£12k of pure margin. It shows up as “we just under-estimated” at the final account. It was not.
  • Cost reports that trail reality by a month. If factory-and-site reconciliation happens at month end, you are making mid-project decisions on four-to-six-week-old labour data. By the time the cost overrun is visible, the project is halfway through its next phase and it is too late to re-plan.
  • Wage and day-rate disputes. Site operatives who believe they worked overtime that was never paid; agency invoices that cannot be tied to a job. Disputes take hours to resolve, and the resolution usually costs you either way.

The gap is not a nuisance. It is a structural leak that removes one to three percentage points of margin from a reasonably-run shopfitter every year.

The three-step fix

Step 1: Standardise time capture at the source

One job code, one cost code, one time unit. If the factory uses hours to the quarter, site uses hours to the quarter. If factory codes jobs as CC-2471, site codes them as CC-2471. Standardisation costs nothing and closes around 60% of the gap on its own.

Step 2: Reconcile weekly, not monthly

Once a week, on the same day, a nominated person puts factory time and site time against the same job and compares the total to the latest cost forecast. Anything that does not match — a variation without a VO, a subcontractor without a PO, a site day against the wrong job — gets resolved within five working days. This is the most important change, and it is free. Month-end reconciliation is simply too late.

Step 3: Link time directly to job cost

Every hour captured — factory, site, subcontract — should land automatically in the job’s cost ledger, under the correct cost code, the same day. Not at payroll. Not at month-end. Same day. If your current setup requires a rekey or an export-and-import, you are rebuilding the gap every week.

Where Contract Controller helps

Contract Controller treats factory and site time as two feeds into the same job cost. Factory operatives and site crews capture against the same contract and cost code; a contracts manager sees a live cost position by close of play each day, not by the third week of the following month. Variations can be raised from the timesheet screen, so a site foreman’s five extra hours on Friday become a priced VO by Monday — before the cost becomes margin lost.

The three-step fix is a process improvement first, a software problem second. But the software is what makes the process sustainable.

One question to ask

Pick your three most profitable contracts from the last twelve months and the three least profitable. For each, write down the number of factory hours and the number of site hours the job was quoted to take. Then pull the actuals. On the profitable contracts, the actuals will track the quote; on the unprofitable ones, site hours will be materially higher and factory hours will be roughly right.

That pattern is the reconciliation gap, showing up where the money actually is. Fix the process and the pattern stops.

See for yourself

book a short demo of how Contract Controller handles time sheets at https://contractcontroller.co.uk/request-demo/