Why Client Requests Become Unbilled Work

How much client work went unbilled last month? And how much of it did your agency actually agree to do for free?


Portrait of Denis Salatin
Denis Salatin
12 min read

AI Overview

Extra client work can go unbilled even when the team records every hour. A PM agrees to a small change, someone adds it to the backlog, and the work gets done. By invoice time, those hours sit alongside the original project work. The earlier a team can connect new requests with changes in project activity, the easier it is to question the extra work before the invoice is prepared.

Finding the hours is usually easy. Finding out why nobody charged for them takes longer. A project manager approved another revision, an account manager promised to help with an extra request, and a few changes went ahead without anyone discussing the cost. At the time, there was little reason to question these decisions. A month or two later, it's much harder to work out what the agency had agreed to do for the original price.

Some of that work could have been billed. Other requests were handled for free because the agency wanted to settle a disagreement or simply help a good client. The trouble comes when nobody can tell which was which. Hours that might have appeared on an invoice end up buried in the project costs. That's one way revenue leakage can go unnoticed.

Why Does Extra Work Go Unpriced?

The PM wants to keep the release moving. The account manager wants to help the client, and the developers are busy finishing what's already on their list. Each decision makes sense on its own. The trouble is that nobody may have checked whether the extra work was included in the price.

How a Small Client Request Gets Left Off the Invoice

A client asks for a change halfway through development. The PM checks with the team and agrees to include it in the next sprint. It should only take a few hours, so nobody bothers preparing a separate quote.

The developer finishes the change and records the time. The client approves the result. A few weeks later, finance notices the extra hours and asks whether they should be billed. The PM can't find anything confirming that the client agreed to pay.

The account manager could bring it up now, but the timing isn't great. Had the price come up earlier, the client might have approved it or asked for a smaller change. Now the work is done, and the agency is asking for money that was never discussed. For a relatively small amount, the account manager may leave it off the invoice. The change becomes unbilled work, even though the developer recorded the hours.

Sometimes doing a little extra work for a client makes sense. What I'd want to know is how often it happens, how many hours we're talking about, and whether anyone is keeping track.

Denis Salatin

Founder & CEO, Tolmete

When New Work Gets Buried in an Old Task

One of the causes of unbilled hours in consulting firms is that extra work gets mixed into existing tasks. A Jira ticket was estimated at 10 hours, but the team spent 18. Along with bug fixes and testing changes, the developer handled another client request during a call. Nobody opened a separate ticket, so some of that time became untracked billable work.

The PM can see eight extra hours on the ticket, but it's hard to tell how they were spent. Some went into bug fixes. The later client request might count as scope creep in project management, though the PM would have to go back through the changes to be sure.

By then, the developers are busy with the next release. The ticket is closed, and the unbilled project work stays mixed in with the hours originally estimated.

When Client Coordination Takes More Time Than Estimated

Two clients pay about the same for development. With one, the team gets a list of comments after each release and works through it. The other has several departments involved. One person approves a change, someone else questions it a week later, and the developers have to go back to work they thought was finished.

The PM spends hours sorting out those disagreements, often over things the client had already approved. There's no new feature to put on a quote, but the agency is paying for the extra time. Anyone working out how to reduce unbilled hours in consulting should look at how much coordination a client needs before estimating the next job.

How Much Do Small Requests Cost an Agency?

An agency can collect the full project fee and still make less money than it expected. The invoice hasn’t changed, but the team has spent additional hours on revisions, testing, and client feedback. That time belongs in the delivery cost, even if the agency chose not to charge for it.

There may be a missed charge to account for as well, if the client had approved some of that work for payment.

SPI Research surveyed 509 organizations for its 2026 Professional Services Maturity Benchmark. Billable utilization averaged 66.4% in 2025, down from 68.9% a year earlier. Average project overrun was 10.7%. The study doesn’t separate out hours spent on unpaid client requests, so these figures can’t tell us how much revenue agencies missed.

A Fixed-Price Project with 12 Unbilled Hours

Take a $20,000 fixed-price project with $12,000 budgeted for delivery. Six unbilled client requests added 12 unbilled hours at an internal rate of $55. The team recorded the work, but nobody had agreed on an additional fee.

Here’s how small client requests that increase project costs changed the numbers:

  • Original gross margin: ($20,000 − $12,000) ÷ $20,000 = 40%

  • Gross margin after the extra work: ($20,000 − $12,660) ÷ $20,000 = 36.7%

  • Potential additional revenue: 12 hours × $125 client rate = $1,500

The cost of unbilled hours consulting firm owners need to account for is the $660 already spent on delivery. The potential $1,500 charge is a separate matter, since the client never agreed to pay it. A timesheet can show unbilled project work, but it can’t tell finance what the client agreed to pay. Some unbilled services may even have been provided free on purpose.

Why Reusing the Last Estimate Can Underprice the Next Project

Now consider the next contract with that client. The previous project finished within an acceptable margin, so the original estimate might look reasonable enough to reuse. Yet those extra requests were part of what the client needed. If the agency expects the same level of service again, another $12,000 budget may be too low.

This is one way agency margin leakage can continue from one contract to another. The hours were recorded, and the project was profitable, but the price of the next engagement may still be based on work the agency no longer delivers at that cost.

How to Spot Unbilled Work

The timesheets look fine, and the sprint reports show progress, but the hours are adding up faster than planned. The PM finds changes added after the estimate and tasks revised several times. Some may be unbilled client requests; others may already be covered by the contract.

Not every change has a Jira task. A developer may make a small adjustment after client feedback and go straight to a pull request. The PM can see it in GitHub, but there's no matching request or time entry in Jira. Before treating it as untracked billable work, they need to check whether the client asked for something new or the developer was fixing something the agency had already promised to deliver.

It's easier to ask about last Tuesday's change than one finished six weeks ago. Comparing logged work with the estimate each week helps the PM investigate while the developer still remembers what happened. They can then check what the agreement covered and whether separate approval was needed

Find the Hours That Might Never Get Billed

Pick a recent project and take another look at the hours. Tolmete can help you find client requests that may need a closer review before billing.

When the Agency Has to Cover the Extra Hours

The PM may find that some of those hours came from work the team had already promised to deliver. A feature needed another round of fixes, or the original estimate didn't allow enough time for testing. The agency spent longer on it than planned, but the client hasn't asked for anything new. That unbilled work has no additional fee to discuss.

What happens to the remaining hours is less straightforward. An account manager might waive the fee this time but expect the next of these unpaid client requests to be charged separately. Unless that decision reaches the PM, the next request may go through under exactly the same conditions.

Keeping Track of Work That Was Never Priced

The client comes back with a similar request a few months later. The PM finds the task for the earlier unbilled client work, but there's nothing about the fee. The account manager remembers agreeing to do it for free; whether the client was told it was a one-off is less clear. They need to sort that out before making another promise.

The old task might show the hours and the changes made, but not why the agency waived the fee. The account manager may remember the conversation now. Six months later, someone else could be handling that client, with no way to tell what was promised.

What to Check Before Sending the Invoice

Not every completed task needs another review. The PM probably knows which requests were added late, which took longer than expected, and which never had a clear price attached. To work out how to prevent unbilled hours from going missing, those are worth checking first, especially if the client has already moved on to the next release.

A developer might have logged four hours as "client revisions," which seemed clear enough at the time. Three weeks later, the PM has to work out which revisions those were. The original estimate may have covered some of them, while others came from later client requests. Finance sees four hours of unbilled time, but the entry doesn't say whether those revisions were covered by the original fee.

It helps to keep unbilled client work on the project record until there's an answer. Sometimes the PM only needs to note that the agency agreed to cover the extra hours. Other times, the client approved an additional fee, but that email never reached finance. Once the decision is recorded alongside the task, there's less chance of the same unbilled time causing questions at the next project review.

How Tolmete Helps Agencies Price the Next Project More Accurately

When the same client asks for another quote, the account manager can look back at the previous project in Tolmete. AI time tracking keeps a description of the work alongside each time entry. Tolmete’s evidence-based delivery signals help show which requests added work and where the team needed longer than expected.

If project activity suggests a change in scope, Tolmete can recommend revisiting the estimate or preparing a change request. The PM still needs to check what the contract covered and which fees the agency waived. Once those decisions are recorded, the invoicing integrations can help prepare billing-ready time records, so finance doesn’t have to enter the hours again.

For agencies asking what agency software tracks unbilled work, those records need to remain useful after the invoice goes out. The account manager may want to offer the same client another favor, or include extra support in the next quote. Looking back at how much time that took last time gives them a basis for the decision, instead of another estimate built around the original budget.

What Did the Last Project Really Cost?

See how Tolmete helps your team look back at project activity, understand where the extra hours went, and prepare a better estimate for the next client engagement.

FAQ

Frequently Asked Questions

Unbilled work is work the team has completed for a client but hasn't charged for. It could be another round of revisions, a small feature added during development, or extra support after a release. Sometimes that's exactly what the agency agreed to provide. Other times, the work falls outside the original deal, but nobody arranged payment for it. The hours may be recorded correctly in both cases. What's missing is a clear explanation of why they never reached the invoice.

Even a profitable project can finish with less money left over than the agency expected. Suppose the team spends 12 extra hours on a fixed-price contract. At $55 an hour, that's $660 the original budget didn't allow for. The client still pays the same fee. On an hourly contract, those hours might be charged separately, depending on what was agreed. If the agency had no basis to bill them, the extra cost stays with the project.

The hours are a good place to start, but they won't give you the full amount. Check what the team spent on each request, then find out why it wasn't billed. One change may have been approved for payment and simply missed by finance. Another may have been included as a favor to the client. Both have an internal cost. For the first, there's also the question of the missed charge, which should be calculated at the client's agreed rate.

Yes, a project can go over budget while the invoice stays the same. Some revisions may already be included in the fee. For extra work outside the contract, the agency should agree on an additional charge with the client. Otherwise, it may have to cover the hours itself.

A client asks for a minor change, and the PM agrees without discussing the price. There’s a release coming up, and nobody wants to spend half a day getting approval for two hours of development. The work gets done, but the billing question doesn’t come up again until much later. By then, the client has accepted the change, and asking for extra money feels rather late. The agency may decide to cover the cost, even though it never planned to do the work for free.

One short essay, every Tuesday.

Field notes from delivery leaders, the four-signal framework, and zero promotional fluff. 2,400+ readers.

No spam. Unsubscribe anytime. We never share your email.

No spam. Unsubscribe anytime. We never share your email.