Last updated November 6, 2026
To track billable and non-billable hours, log all your working time rather than the chargeable part alone, flag each entry billable or not, and give non-billable entries a short reason code. At month end you can then see how many hours earned money and where the others went.
What is the difference between billable and non-billable hours?
Billable hours are time you can charge to a client under your agreement with them. Non-billable hours are everything else you work, and that includes some client work as well as internal jobs such as sales and admin.
The agreement sets the line, so the same task can fall on different sides for different clients. A call that's chargeable on an hourly job can be included in the fee on a retainer.
Is this task billable? A decision table
| Task | Usually | What decides it |
|---|---|---|
| Doing the agreed work | Billable | Nothing, this is the job |
| Calls and emails about the job | Billable | Some fees include a level of contact |
| Research for one client's job | Billable | General reading that helps every client isn't |
| Changes the client asked for | Billable | Whether they're outside the scope and agreed in writing |
| Fixing your own mistake | Non-billable | Nothing, the client shouldn't pay for this |
| Travel | Depends | Your quote. See billing for travel time |
| Writing a quote or proposal | Non-billable | A paid scoping stage is the exception |
| Learning a tool the job needs | Usually non-billable | Billable only if the client asked for it and agreed |
| Preparing and chasing invoices | Non-billable | Nothing |
| Staff meetings, training, admin | Non-billable | Nothing |
For a task that isn't on the list, ask whether this client's job needed it, whether your agreement lets you charge for it, and whether you'd be comfortable describing it on a line of their invoice. A no to any of those makes it non-billable.
How do you set up the tracking?
Add two columns to your time log: Billable (Yes or No) and Reason. Keep the list of reasons short, because a list of twenty codes ends up with everything under "Other".
| Reason | Use it for | Name the client? |
|---|---|---|
| Rework | Fixing your own error | Yes |
| Goodwill | Extra work you chose not to charge | Yes |
| Sales | Quotes, proposals, meeting prospects | If there is one |
| Admin | Invoicing, bookkeeping, scheduling | No |
| Training | Courses, reading, practice | No |
Name the client on non-billable client work. Rework on a job is part of what that job really cost, and you'll want it when you price the next one.
Flag each entry when you log it, since the person doing the work knows best whether it was rework. If your columns are named ranges, a month's billable total in a spreadsheet is =SUMIFS(Hours, Month, "2026-03", Billable, "Yes"), and the same formula with Reason gives you each code.
A worked example: reading a month's numbers
Here's an invented example. A consultant who charges €90 an hour logs 160 hours in March.
| Category | Hours | Share | Value at €90 | What to ask |
|---|---|---|---|---|
| Billable | 104 | 65.00% | €9,360 | Did it all get invoiced? |
| Rework | 8 | 5.00% | €720 | What went wrong, and on which job? |
| Goodwill | 4 | 2.50% | €360 | Was it deliberate? |
| Sales | 18 | 11.25% | Is work coming in as a result? | |
| Admin | 16 | 10.00% | What can be cut or handed over? | |
| Training | 10 | 6.25% | Was it planned? | |
| Total | 160 | 100.00% |
Rework and goodwill are the rows to read first. Together they're 12 hours of client work worth €1,080 at the normal rate, and they earned nothing. If you only log billable time, that figure doesn't exist.
The 65% is a share of hours logged. It feeds straight into a charge-out rate, but it isn't quite the same measure as utilisation, which is usually worked against available hours. The guide to utilisation versus billable hours explains the difference.
When does a billable hour become a write-down?
A billable hour becomes a write-down when you meant to charge for it and then decide to charge less. Non-billable time was never going to be charged, so the two should stay separate in your records.
Keep those hours flagged billable and record the reduction as a write-down at invoicing. If you quietly re-flag them as non-billable, the log can no longer show that the job overran. Write-down vs write-off covers how to record each one.
The mistakes that make the numbers useless
- Logging only billable time. You get what you need for invoices and learn nothing about the rest of the week.
- "Other" as a reason. If it's more than a line or two a month, you need a new code.
- Aiming for zero non-billable time. Sales and training keep the business going. The aim is a sensible share.
- Punishing people for the figure. Do that and non-billable time gets logged as billable, or stops being logged at all.
Separating billable time in ERPFlow
ERPFlow doesn't have a timer or timesheets today. Time tracking, including converting tracked time into invoices, is coming soon. A card in Projects has a typed Time spent field, and it has no billable flag, reason code or per-person report.
You can still split the time with boards, because totals add up per board. Keep chargeable work on boards linked to a customer, and put sales, admin, training and uncharged client work on an internal board with no customer. The customer's page then shows chargeable time for each linked board, with a total.
It's a convention rather than a report. Time on a card has no date, so a board total can't tell you what happened in March, and the worked example above still belongs in a spreadsheet. Billed hours only exist once somebody types them onto an invoice.