Field notes

How to Collect Field Timesheets So Payroll and Job Costing Get the Same Hours

Payroll hours get checked by the people being paid. Job cost hours get checked by nobody until month end. Here's how to capture field time once, daily, by cost code, so both reports come from the same record and can't disagree.

Monday morning, the person who runs payroll has three versions of last week's hours on her desk. The foremen's paper sheets, faxed or photographed on Friday afternoon. The payroll export, which she typed from those sheets. And the job cost report, which somebody else typed from the same sheets a day later, with cost codes guessed where the foreman left them blank. The payroll number is right, or close, because a worker with a short cheque will tell you by Wednesday. The job cost number is whatever survived the second round of typing, and nobody checks it until the estimator prices the next job with it.

It's not a software problem first. It's a capture problem. The hours get recorded once, at the person level, days after the fact, and then two different people allocate them to two different purposes. What follows is how to capture them once so both numbers come from the same record and can't disagree.

Why the two numbers drift

Payroll hours are audited every pay period by the most motivated auditors you will ever have: the people being paid. Job cost hours are audited by nobody until month end, and by then the week is gone and the foreman can't remember whether the Tuesday afternoon was on the manhole or the trench.

Three things push them apart.

Reconstruction. A weekly sheet filled in on Friday is a memory exercise. Start and end times come out as 7 to 3:30 for everyone, every day, because that's the shift, not because that's what happened. The cost code split is even rougher, because the foreman is guessing what fraction of the week went where.

Re-keying. Every time a sheet is read and typed, it's interpreted. Two rounds of typing by two people produces two answers. Neither person was on site.

Overtime. Payroll applies the overtime rules to the person's total for the day or week. In BC, the Employment Standards Act sets daily and weekly thresholds for time and a half and double time, and some employers run averaging agreements that change the math, so check the Act and your agreements. The point for job costing is that the premium belongs to the cost code that caused the long day, and the payroll process has no idea which one that was.

One record, captured once, by the person who was there

The fix is a rule, not a product. The crew lead records the crew's hours by cost code every day, before leaving site, and the day is closed when it's submitted. Not Friday. That day.

The record needs three fields that matter: who worked, how many hours, and which cost code. Date, job and crew lead come for free. Everything else, from the payroll total to the productivity report, derives from those three.

Daily capture has a compliance side too. The Employment Standards Act requires employers to keep a record of the hours each employee worked on each day, and to keep those records for four years. A weekly sheet with 8 written in every box is technically a record. A daily entry made by the person who was there is a record you'd be comfortable producing.

Keep the code list short on the phone

The reason foremen leave the code blank is that the list is 200 lines long and the screen is small. Give each crew lead only the codes active on that job that week. On most civil jobs that's somewhere between eight and fifteen. If you've set up your cost codes so crews can actually use them (I wrote about that separately), this is the same short list.

Add one holding code called something like "unallocated" and give it a rule: the project manager clears it every week, and it never reaches month end with hours in it. A holding code with a deadline is honest. A blank field that somebody in the office fills in later is a guess dressed up as data.

Approval within a day, by someone who knows the work

Most approval is a Friday signature by someone who wasn't on site. Run it as two checks by two people, on the same record.

The superintendent or project manager confirms the day's entry the same evening or the next morning. Two questions: does the headcount match who was on site, and does the code split match what the daily report says happened? If the daily report says the crew formed the pile cap all day and the timesheet says six hours on backfill, one of them is wrong, and it's a lot easier to find out on Wednesday than at month end.

When the supervisor adjusts an entry, keep the crew lead's original. The adjustment goes in its own field with a reason. That stops the quiet rewriting of hours crews resent, and it shows you which crew leads' numbers need correcting and why, which is a training signal, not a disciplinary one.

Payroll then approves the total hours per person for the pay period. That's a separate signature on the same record. Payroll owns the person total; the project manager owns the split. Neither can change the other's number without it showing.

Put the overtime on the code that earned it

When a crew runs to ten hours to finish a pour, the two premium hours belong to the concrete code, not spread across the day in proportion. Most payroll systems will happily spread them, and the job cost report then says every code ran a little over instead of the one that actually did.

The daily record makes this solvable, because the crew lead can put the late hours on the code that ran late. Whether your accounting system carries the premium through is a question to ask before month end. Some do it natively, some need a manual journal, some can't.

Paper, spreadsheet, or app

Paper works for one crew and an office that keys the sheet the same day. It breaks at three crews, because the keying becomes a backlog and the backlog becomes reconstruction.

A shared spreadsheet the crew leads fill on their phones is better than most people expect, as long as the code list is filtered per job and somebody owns the weekly tie-out. It's also where I'd start if the crew leads are on personal phones and won't install anything. A link that opens a form beats an app that never gets installed.

The time-tracking apps, the QuickBooks Time family, ClockShark, and the rest, do daily capture by cost code well. Two things to check before buying. First, whether the app shares its cost code list with your accounting system, or keeps its own. Two lists drift within a month and you're back to two numbers. Second, whether it exports hours by person, by code, by day in a shape your accounting system imports without anyone typing. If the answer to either is no, you've bought a nicer place to store the same problem.

One more distinction. GPS clock-in tells you when someone arrived at the site. It does not tell you what they worked on. Attendance and allocation are different problems, and a system that solves the first loudly can leave you assuming the second is handled.

The Monday tie-out that proves it

Every Monday, one report. Sum the hours by person from the daily records and compare to the payroll hours for the period. Sum the same records by cost code and compare to the job cost hours. If both totals come from one set of daily entries, they tie by construction. The first few weeks you'll find the places they don't, which are the places where somebody is still keying something twice, and you fix those one at a time.

Once the tie-out holds, the productivity report I've written about elsewhere becomes a real number instead of a hopeful one, and the estimator gets unit rates from the last job that the crews actually produced.

If your payroll and your job cost report are still telling you different stories about the same week, that's the kind of thing I look at on a discovery call. Usually the fix is a rule about when the day closes, a shorter code list, and one tie-out report. Occasionally it's software. I'll tell you which before you buy anything.

Dealing with something like this?

Book a free 30-minute discovery call. No pitch, practical next steps either way.

Book a call