Happy Tracker

When the Timesheet and the Invoice Disagree

The timesheet says 212 hours on the project. The invoice says 180. Somebody has to explain the difference, and the conversation usually happens in front of a client who has just asked a reasonable question.

This is not a rounding problem. A gap that size is structural, and it comes from the same place every time: the timesheet and the invoice were built from two different ideas of what an hour is, by two different people, weeks apart.

Four reasons a timesheet total and an invoice total differ
Four different gaps that all look identical on a monthly total.

The four places hours go missing

Before arguing about the number, find out which of these produced it. In almost every agency it is one of four, and often two at once.

Unbilled by decision. Somebody looked at an hour and chose not to charge for it. This is legitimate and should be visible — it is the cost of the relationship, and a business that cannot see it does not know what its goodwill costs.

Unbilled by accident. Hours recorded against no project, or against an internal catch-all, that were actually client work. These are pure loss and they are invisible precisely because they were never attached to anything.

Billed at a different rate. Two people at different rates on the same project. The hours match and the money does not, which looks like a discrepancy and is not one.

Out of scope but done anyway. Work that happened, was recorded correctly, and falls outside what the client agreed to pay for. The number is right and the conversation is about the contract, not the timesheet.

The number nobody calculates

Ask an agency owner what their effective hourly rate was last month and most cannot answer. They know the invoice total and they know roughly how many people worked. The division is never done, because the two numbers live in different places.

It is worth doing once, by hand, for a single project: total invoiced divided by total hours recorded, including the hours you chose not to bill. The result is almost always lower than the rate card, often by a quarter. That gap is not theft and it is not inefficiency — it is the cost of how the work actually goes, and knowing it is the difference between quoting from hope and quoting from evidence.

Once you have the number for one project, the useful question is whether it is the same across clients. It rarely is, and the client where it is worst is usually the one everybody already suspects.

Why the gap is always discovered late

The decision about what to bill is usually made at month end, by somebody who was not doing the work, from a spreadsheet that has lost the context. At that distance, an hour with an unclear description is easier to drop than to defend.

That is the actual mechanism. Not dishonesty, not carelessness — just a decision made too far from the work to be made well. Every hour dropped that way is dropped quietly, nobody records that it was dropped, and the next month the same hours go the same way.

The fix is not more discipline at month end. It is making the decision earlier, by the person who did the work, on the day they did it.

Three categories, not a checkbox

Most timesheets have a billable checkbox. Two boxes force every hour into one of two stories, and the story that is missing is the important one.

  • Billable. Work the client agreed to and is paying for.
  • Non-billable client work. Done for this client, chosen not to charge. Rework, the third revision, the long call.
  • Internal. Not attached to any client at all. Your own site, hiring, admin, training.

With two boxes, an expensive client and too many internal meetings look identical on the report. With three, the second category becomes the number that explains your margin — and it is a number almost nobody has.

Three hour categories compared with the usual two-way billable checkbox
The middle row is the number most agencies do not have.

Reconciling once, properly

When the gap has already happened, resist the urge to adjust the invoice until you know which of the four causes produced it. The process is mechanical:

  1. Pull the hours by person and by task for the period, not the project total.
  2. Mark every block that was not invoiced with which of the four reasons applies.
  3. Add up the “unbilled by accident” column. That number is the one worth acting on.
  4. Leave the other three alone — they are decisions, rates and contract scope, and none of them is a tracking problem.

Do this once and you usually find the same two or three tasks account for most of the accidental loss. Fix those and the gap shrinks without anybody working differently.

Fixed price does not exempt you

“We bill a fixed fee, so tracking hours does not matter” is the most expensive sentence in agency work. On a fixed-price project the hours do not determine the invoice — they determine whether the invoice was worth having.

Without hours against a fixed-price project you cannot answer the only question that matters: did we make money on it. You will have an opinion, and the opinion will be formed by how pleasant the client was rather than by what the work cost.

Track them, do not bill them, and read the total at the end. The project that felt fine and lost money is the one you will otherwise quote again at the same price.

Descriptions that survive a month

An hour described as “work” or “fixes” is an hour that will be dropped at month end, because nobody can defend it to a client. An hour described as “revised the checkout flow after the second round of feedback” survives, because it is obviously real work for an obvious reason.

This is the cheapest improvement available and the hardest to get people to do. It helps to say why: a vague description is not a style problem, it is money you will not invoice. People write better descriptions when they understand that the alternative is the hour being deleted by somebody else.

Rates belong to the project, not the invoice

If the rate lives only in the invoice, every reconciliation is manual. If each person has a billable rate on the project, the invoice builds itself from the hours and the question “why is this different” has an answer that is a calculation rather than an opinion.

It also makes a genuinely useful number available: cost against billing, per project, while the project is still running. A project that is going to lose money is visible in week two rather than at the invoice.

What the client should be able to see

An invoice line that says “development — 180 hours” invites an argument. An invoice backed by a list of tasks, each with hours against it, usually ends the conversation before it starts.

The counter-argument is that detail invites line-by-line haggling. In practice it does the opposite: the client who queries a total queries all of it, and the client who can see the tasks queries one of them, agrees the rest, and pays faster.

A three-step monthly billing routine replacing a month-end investigation
The monthly routine once the structure is right.

The conversation with the client

When the gap has already been invoiced and the client has queried it, the instinct is to defend the total. It works better to show the structure.

Take the three categories to the conversation. Here is what you agreed to and we billed. Here is work we did for you and chose not to charge for, and here is how much of it there was. The second column is not a negotiating position — it is a statement of what the relationship is costing, delivered without a demand attached.

Clients respond to this far better than to a defended total, and the ones who were about to ask for more free revisions tend to stop asking.

A monthly routine that takes twenty minutes

Once the categories exist and the rates live on the project, month end stops being an investigation:

  • Filter to unattached hours. There should be none; if there are, attach them now while somebody still remembers.
  • Look at the non-billable client column by client. One client consistently larger than the others is a commercial conversation, not an accounting one.
  • Generate the invoice from the billable hours rather than from a decision.
  • Note anything deliberately written off, with a reason, so next month’s version of this question has an answer.

A short answer

The timesheet and the invoice disagree because the billing decision is made weeks after the work by somebody who was not there. Move the decision to the day and the person, use three categories instead of a checkbox, keep rates on the project, and show the client the tasks. The gap does not need managing after that — it mostly stops happening.

Happy Tracker attaches every hour to a project, a client and a task, carries per-person billable rates on the project, and builds invoices from the tracked hours rather than from a separate decision.