How to bill for project overruns without losing the client
The project ran over. The brief changed, scope grew, and now you're choosing between invoicing correctly and starting an argument. Here's how.
You’re 14 hours into a 9-hour project. The brief changed twice, a feature got added mid-way, and there were two calls that weren’t in the original scope. The invoice you agreed to doesn’t reflect what you built.
Most freelancers send the agreed price and absorb the difference. Or they send the real number without context and trigger a dispute. Both are avoidable — but only if you handle it while the project is still running.
Why overruns stay hidden until the invoice
Overruns accumulate in small increments. A second homepage layout. An extra revision round. Three calls that weren’t in the original brief. Each felt manageable in the moment. None were explicitly confirmed as added scope.
By the time you’re billing, you’re estimating. “I think it was about 5 extra hours” is a weak foundation for a €350 conversation — especially when the client’s memory of the project differs from yours.
Raise it before you deliver, not after
This is the single most important shift: the overrun conversation must happen during the project, not at invoicing.
After delivery, the client has what they needed. Their incentive to approve extra spend is gone. An invoice that’s 40% higher than expected, arriving after the work is done, feels like an ambush — even when the extra work was real.
During the project, the dynamic is completely different. They still need you. They still have decisions to make. “We’ve reached the original estimate. The changes you added on [date] add approximately X hours — want to approve the extra work or adjust scope to stay in budget?” That’s not a demand. It’s a decision point.
Most clients say yes. The ones who don’t would have disputed the invoice anyway. You’ve just moved the conversation to where it can actually be resolved.
Document scope changes as they happen
Every time something is added to the brief, send a one-line email.
“Confirmed: adding a third landing page to the deliverables. Estimated additional time: 3 hours at my standard rate.”
That’s it. No formal document required. The client replies “sounds good” and that reply is your authorization. When the invoice arrives with that line item, there’s nothing to dispute.
Your calendar already does half this work, if you’re naming events correctly. [Client] Extra landing page — scope addition with a date and duration is a time-stamped billing record. Not an estimate — a log of what actually happened, when, and for how long.
Scope creep rarely arrives as one big request. It accumulates as small additions that each feel too minor to flag. Treating each one as a scope decision — not a favour — is what keeps the billing honest.
Framing the line item
The framing matters. “Additional work — 5h — €350” invites negotiation. “What additional work?” is a fair question when the line is that vague.
Be specific:
"Third landing page (added to scope 14 Nov, confirmed by email) — 3h — €240"
"Extra revision round (client-requested, 21 Nov) — 2h — €160"
Tied to a date. Tied to a documented decision. Not “more than expected” — a specific deliverable that was agreed, with a paper trail.
Don’t apologize for it. Don’t add a note saying “I realize this is more than the original quote.” That framing invites a negotiation you’ve already won on paper.
When the client pushes back
Two scenarios come up regularly.
“We didn’t ask for that.” Your calendar says otherwise. You have the email. Show both. Don’t argue — present documentation. If the documentation doesn’t exist, find a middle ground, absorb the gap, and use that as the lesson. You won’t win a scope dispute without a paper trail.
“The price seems high.” The extra work has a real cost. If you already absorbed some of the overrun, say so: “I’ve not billed 2 hours on this project already — this covers the rest.” Transparency lands better than discounting. What you shouldn’t do is discount as standard practice. It teaches clients that your quotes are negotiable after the fact, and guarantees the same conversation on every future project.
The message that prevents most of this
The moment you notice you’re 20% over the original estimate, say something. Don’t wait for invoice day.
“We’re approaching the original estimate. I want to flag it now rather than at invoicing — shall we check in about scope from here?”
No drama. No accusation. Just information. Most overruns are recoverable with one message sent two weeks earlier. That message is far easier to send before you’ve delivered the work than after.
This is where tracking hours by project in real time changes the economics. If your calendar events are tagged — [Client][Project] — Timescanner shows running hour totals per project as the month unfolds. Comparing that against your original estimate is a 10-second check at the start of each week. You see the overrun at 20%, when you still have time to act, instead of at delivery, when you don’t.
Timescanner tracks hours by client and project automatically from your calendar. Any iCal-compatible calendar works — Google Calendar, Outlook, iCloud, Proton Calendar, Notion Calendar.
Timescanner
Your calendar already knows how much you worked.
No timers. No new habits. Timescanner reads your calendar — Google Calendar, Outlook, iCloud, and more — and generates your billing reports automatically.
Start free trial — 30 days, no credit card