The email usually arrives late on a Friday. “We have reviewed the invoice and the hours look higher than expected. Can you explain the 180 hours?” It is polite, it is short, and it puts the entire month’s revenue on hold until you answer it.
The instinct is to reply immediately and defensively. The team worked hard. The project was complicated. There were a lot of changes. Every one of those sentences is probably true, and every one of them loses the argument, because none of them is evidence. A client who is questioning your hours is not asking whether your team is honest. They are asking to be shown something.
This post is about what you send, how you write it, and — more usefully — what you should have been doing during the project so that the answer already exists when the email arrives.

Why trust us, we worked loses the argument
Put yourself on the other side of the desk. A finance manager at the client has a number on an invoice and a budget line that does not match it. They have to justify paying you to somebody above them. When your reply is “our team logged 180 hours and they are a hardworking team”, you have given them nothing to forward upwards. They cannot defend it, so they push back on you instead.
There is a second problem, and it is the one that actually costs you money. An unevidenced assertion invites a negotiation. The moment the conversation becomes “how much of this do you think is fair”, you are discounting. A client who would have accepted a detailed breakdown in full will ask for 20% off a vague one, because 20% off is the only tool available to them.
The third problem is slower and worse. Every dispute you settle by discounting teaches that client that your invoices are opening offers. The next one gets questioned too, and the one after that, until the account is permanently 15% below its stated rate and you are not sure when that happened.
A dispute about hours is almost never a dispute about honesty. It is a dispute about visibility. The client did not see the work happening, so the number arrived without context, and a number without context always looks too big.
The three artefacts that settle it
There are exactly three records that end this conversation quickly. They are unglamorous and none of them takes real effort to maintain, but they cannot be manufactured after the fact — and a client can tell when something has been assembled in a hurry.
1. Hours per task, with dates
Not 180 hours against “Website project”. That is the same as no information. What settles a dispute is 180 hours broken into forty-odd tasks, each with a date range and an owner: 14 hours on the checkout flow, 9 hours on the payment gateway integration, 6 hours on the third round of homepage revisions on 12 and 13 August.
The reason this works is that it converts an opinion into a list. The client can scan forty lines and either accept them or point at three of them. Pointing at three lines is a conversation you can have. Arguing about 180 is not.
This is the artefact most agencies do not have, because time was logged against a project rather than a task. If your tracking gives you one number per project per month, you are structurally unable to answer this question, no matter how careful your team was.
2. The change history of what was asked
The second artefact is a dated record of every request that arrived after the estimate was signed. Not a formal change-control process — just a list, with dates, of the things that were asked for.
This is what turns “you kept changing things”, which is an accusation, into “here are the eleven additions that were requested between 4 July and 20 August, with the dates”, which is a document. The first version makes the client defensive. The second makes them go quiet and read.
Most of the time, the client is not being dishonest either. They genuinely do not remember asking for the extra language, the second report filter and the revised email template, because each one took them thirty seconds to ask for on a call. Seeing all eleven listed together is usually the moment the conversation turns.
3. The approved estimate, per phase
The third artefact is the estimate itself — ideally broken into phases with hours against each, not a single total at the bottom of a PDF.
A phased estimate lets you say something precise: “Design was quoted at 40 hours and came in at 38. Front-end was quoted at 60 and came in at 104, and here is what happened in that phase.” That sentence is credible in a way that “we went over” never is, because you have just volunteered a phase where you came in under.
If your estimate was one number, you are now arguing about the whole project at once, which is the hardest possible version of this conversation.
Before you reply, read your own invoice honestly
Do not open the email thread yet. Open the time report first, and read it the way the client will read it, looking for the lines you would struggle to defend out loud.
In almost every dispute I have seen, some of the invoice is genuinely the agency’s. A day of rework after a bug you shipped. Six hours logged against a project that was on hold and nobody told the developer. A block of time with no task name, which is the one line that can lose you the whole argument, because it suggests the rest of the log is also guesswork.

Decide your concession before the conversation starts. This is not weakness — it is the strongest move available to you. Conceding one genuine line makes every other line more believable. Conceding nothing at all reads as a negotiating stance, and the client will treat it as one.
- Concede rework caused by your own defect. You would not invoice a client for fixing your typo.
- Concede anything logged after a pause you were told about, even if the message was informal.
- Concede any entry with no task and no date. You cannot defend it and trying will cost you the credible lines.
- Hold work that was requested in writing, however casually.
- Hold revision rounds beyond the agreed number, if the agreement named a number.
- Hold hours lost waiting for their approvals, if you flagged the wait at the time.
How to write the reply
Reply within one working day, even if the full breakdown takes longer. A same-day “I am pulling the detailed breakdown together and will send it by Tuesday morning” keeps the account calm. Four days of silence makes a routine query feel like a confrontation.

The reply itself has five parts and should fit on one screen, with the detail in an attachment. Here is the shape:
Subject: Invoice 2026-118 — hours breakdown attached
Hi Priya,
You are right that this month is higher than the original estimate —
180 hours against the 120 we quoted in June. Here is exactly where it went.
The signed estimate covered: design (40h), front-end build (60h),
and CMS integration (20h). Design came in at 38h and CMS at 19h.
Attached is the full breakdown by task and date. The front-end phase is
104 hours against 60, and 41 of those hours are in three areas that were
added after the estimate was approved:
- Multi-language support, requested 14 July 22h
- Second homepage revision round, 8-12 August 11h
- Filters on the enquiries report, requested 2 Aug 8h
Separately, 6 hours on 21 August were logged against this project in
error while it was paused. I have removed those from the invoice.
Three options, and I am happy with any of them:
1. Settle the revised invoice at 174 hours.
2. Settle at 150 hours now, and the remaining 24 are credited against
the phase two work we discussed.
3. A call on Thursday to go through the breakdown line by line.
Karthik
Note what is not in that email. There is no mention of how hard anyone worked, no history of how difficult the project was, no hint that the client was unreasonable, and no defensiveness. There is a number, a scope, a breakdown, a set of dated facts, one voluntary correction and a decision to make.
The three options matter more than they look. A reply that ends with “so please pay the full amount” invites a counter-offer. A reply that ends with three options invites a choice, and clients overwhelmingly pick option two or three rather than reopening the whole number.
Attach the breakdown before they ask for it. A client who has to request the detail has already decided the detail might not exist.
When to concede, and how to do it without losing the account
Sometimes you will look at the evidence and find that the client is right. The tracking was sloppy, the change requests were never recorded, or the work genuinely overran because your estimate was optimistic and nobody said so at the time.
If that is the situation, concede quickly and completely. A slow, partial, grudging concession is worse than an immediate one in every respect: it costs the same money, it takes three more weeks, and it damages the relationship on the way.
The wording that works is short and unhedged. “You are right. We did not track this work at the level that would let me justify the overage, so I am invoicing the estimated 120 hours. Here is what we are changing so that the next project has a proper record from week one.”
That last sentence is the important one. A concession with a stated change is a professional recovering from a mistake. A concession without one is an agency that will have the same argument in three months, and the client knows it.
There is one kind of concession never to make: do not agree to a lower rate to settle an hours dispute. If the hours were wrong, adjust the hours. Dropping the rate solves this month and permanently reprices every month after it.
Pricing the next contract so the argument does not repeat
Once the dispute is settled, the useful question is structural. An hours dispute is nearly always a symptom of a pricing model that put all the risk on one side, and there are three ways to fix that.
Quote from history, not from optimism
Most overruns are not caused by scope creep. They are caused by estimates produced by the person who most wants the project to be affordable. If you have tracked history, the estimate stops being a guess: you know what the last three e-commerce builds actually took, and you know the gap between quoted and actual on each of them.
We wrote about the mechanics of this in quoting a project from past hours. The short version: your quoted number should start from the median actual of comparable past work, not from the best case.
Quote in phases with a stop point
Fixed price for the whole project puts every unknown on you. Time and materials puts every unknown on the client, which is why they resist it. Phased fixed price splits it: each phase is fixed, and either side can stop between phases.
This has a useful side effect. A client who approves phase two after seeing phase one land on budget is far less likely to dispute phase three, because they now have evidence about how you work.
Write the change rule into the contract
One paragraph, agreed at the start, removes most future arguments: “Work not listed in the scope will be estimated in writing and started only after written approval. Revision rounds beyond two are quoted separately.”
This is not there to be enforced aggressively. It is there so that when the eleventh request arrives, you have a normal, pre-agreed way to say “that is a change — here are three options”, which is the whole subject of our post on handling scope creep.
The habits during the project that make the evidence exist
Everything above is recovery. The real answer is that the three artefacts should already be sitting there when the email arrives, produced as a by-product of ordinary work rather than as a project of their own.

- Time goes against a task, never against a project. This is the single highest-value change. It costs the developer nothing — they were going to start a timer anyway — and it is the difference between having an answer and not having one.
- Every request becomes a ticket the same day. Including the ones that arrive by phone, by WhatsApp, and in the middle of a call about something else. The ticket does not need to be well written. It needs a date.
- Confirm verbal requests in writing within the hour. Three lines: “Confirming from our call: you would like the enquiry form to also email the sales address. I will come back with an estimate tomorrow.” This is the artefact that wins disputes, and it takes ninety seconds.
- Store the estimate per phase. So that hours-against-estimate is a real comparison rather than one number at the end.
- Send a short weekly note. Hours used, hours remaining against the phase estimate, and anything that has been added. Three lines in an email.
- Count revision rounds out loud. “This is round three of two included — happy to do it, and it will be billed at the hourly rate.” Said at the time, this is routine. Said in an invoice, it is a fight.
That weekly note is the one people skip, and it is the one that prevents the whole situation. A client receiving a number every Friday cannot be surprised by the number at the end of the month. The dispute email you are trying to handle is almost always a surprise email, and surprise is the part you control.
What the tracking has to be able to do
None of this works if your records cannot produce the breakdown. Practically, that means three things from whatever you use.
- Hours attributable to a task, not just a project, with the date and the person attached to each block.
- An export the client can read — a CSV or PDF that goes in an email attachment without you rebuilding it by hand in Excel at 22:00.
- A record the team can correct. A timer left running overnight has to be fixable, with the edit visible. An uncorrectable log is one that nobody, including you, fully believes.
Happy Tracker records time against tasks with dates and owners, logs activity and idle time so a forgotten twelve-hour entry is obvious, and exports the breakdown you attach to the reply. It does not tell you whether the project made money — that needs your rates and costs alongside the hours — but it does give you the hours in the shape a client will accept.
What to do on Monday morning
If you have a live dispute, work in this order. If you do not, do the second list instead, because you will.
- Pull the full time export for the disputed period before you write anything.
- Read it as the client would, and mark every line you could not defend out loud.
- Decide your concession now, in writing, to yourself.
- Send a holding reply today with a date for the full breakdown.
- Send the breakdown with three options, and no adjectives.
And for the projects that are running right now: open the two largest ones and check whether time is being logged against tasks or against the project. If it is the project, change it this week. It is a ten-minute configuration change, and it is the difference between having the argument and winning it.



