5 min read

How to track billable hours by project

Give each project a code, make every time entry name one, and keep worked, billed, written-down and unbilled hours in one running table. The setup, the checks and what a project total can hide.

Last updated November 6, 2026

To track billable hours by project, give each project its own code before work starts, make every time entry name one project, record the date, person, task and hours, and mark each entry as billed when it reaches an invoice. Totals per project then show what's been worked, billed and left unbilled.

The general rules for recording hours are in how to track billable hours. This guide covers what changes when the project is the unit you report on.

Why track billable hours by project rather than by client?

Tracking billable hours by project matters because one client can have several jobs on different terms, and a client-level total hides what each one is doing. Here's an invented example: a client has a fixed-fee website project with a 40-hour budget and a support arrangement billed by the hour. In one month you log 60 hours for that client.

By client, 60 hours looks like a good month. By project, it's 52 hours on the website, which is 12 over a budget nobody will pay for, and only 8 hours you can bill. Those call for different conversations, and a client total prompts neither.

How do you set up a project for time tracking?

Set up a project for time tracking by writing one short record for it before anyone logs an hour. This is all a small firm needs:

Field Example What it decides
Code P-105 What people type on each entry. See project numbering
Client Alder Foods Whose invoice it goes on
Billing basis Time and materials, capped Whether the hours are billed or only measured
Rate €110 an hour What each billed hour is worth
Hours budget 80 The early warning
Status Open When it says Closed, nobody should log to it

Status does more than it looks. Without it, people keep logging to the last project they remember, and hours land on a job that was invoiced and closed in June.

What goes in a project time entry?

A project time entry needs the date, the person, the project code, the task, the hours, a billable flag and, later, the invoice number. Two rules keep it honest:

  • One entry, one project. If a day covered three projects, it's three entries.
  • No code, no guessing. Work that belongs to no project goes on an internal code, never on the nearest open project.

Keep non-billable project time too, such as rework or an internal review, flagged as such. You can't charge it, but it's part of what the job took. The rules for that flag are in billable vs non-billable hours.

How do you see billed and unbilled hours per project?

See billed and unbilled hours per project by keeping one running table, one row per project, rebuilt from your time entries each month. In this invented table, every row must satisfy one sum: worked equals billed plus written down plus unbilled.

Project Rate Hours budget Worked Billed Written down Unbilled Budget left
P-104 Audit €90 60 52.5 40.0 1.5 11.0 7.5
P-105 Rebrand €110 80 78.0 64.0 0 14.0 2.0
P-106 Support €75 none 17.25 17.25 0 0 n/a

Each column tells you to do something:

  • Unbilled: P-104 has €990 of work waiting to be invoiced (11 hours at €90) and P-105 has €1,540 (14 at €110). That's €2,530 of work you've done and not asked for. If you carry it in your accounts, it belongs on a WIP report.
  • Budget left: P-105 has used 97.5% of its hours. If it's capped, warn the client before you reach 80, and get any extra agreed first.
  • Written down: P-104 gave away 1.5 hours. That's nothing on one project. The same reason recurring across ten projects means your estimates need work, as write-down vs write-off explains.

On a fixed-fee project the Billed column doesn't apply, because the invoice bills the fee or a stage of it. Keep Worked and Budget left, and use the guide to budget against actual hours.

How do you stop project hours being billed twice or missed?

Stop project hours being billed twice or missed by writing the invoice number on each entry when it's billed, and running the sum above before every billing round. An entry with a number has been billed. An entry without one hasn't, and it's still there next month.

Fix mistakes in order of how far they've travelled. Before billing, recode the entry to the right project. After billing, leave the entry alone and correct the invoice properly, with a credit note or a corrected invoice, because the time record should keep agreeing with what you sent.

Tracking hours per project in ERPFlow

ERPFlow doesn't have a timer or timesheets today. Time tracking, including converting tracked time into invoices, is coming soon. It also has no project rates or budgets, no per-person time reports and no billed flag on hours, so the running table above stays in your spreadsheet.

What ERPFlow does do today is keep hours against a project. How projects work has the full tour:

  • The project: a project is a board with columns you name. Link it to a customer and it appears on that customer's record.
  • The hours: each card has a time spent field, typed in as hours and minutes. The project list totals cards and time spent for each project, archived cards included, and the customer's Projects tab totals them across boards.
  • The limits: a card holds one figure, with no date and no split by person, so use one card per task or per billing period.
  • Keeping billed and unbilled apart: add columns such as "To invoice" and "Invoiced" and move cards across. The board doesn't total a column, but the CSV export gives each card's project, column and time spent in minutes, which a spreadsheet can add up.
  • Billing it: card time doesn't become invoice lines. Read the total, then on the invoice pick a service that has your hourly price and type the hours as the quantity. You can link the invoice to the project under Linked documents.

Unlimited projects are on every plan, though the Free plan caps cards at 10 in total, archived ones included.

FAQ

Billable hours by project: common questions

Didn't find your answer here? We're happy to help.

Contact us
Can one time entry cover several projects?
No. A time entry should name one project, because a shared entry can't be billed, budgeted or checked against either project. If a morning covered two projects, split it into two entries, even if the split is an estimate.
How do I log a meeting that covers two projects?
Split the meeting's time between the two projects, in proportion to how long each was discussed, and say so in both descriptions. If the split can't be judged, divide it evenly. Don't log the whole meeting twice, because a client who sees the same hour on two invoices will have a fair complaint.
How many tasks should a project have for time tracking?
As few as you'll report on. A handful of tasks or phases is plenty for most service projects. A longer list slows logging, and people start picking whichever task is nearest the top, so the detail you were hoping for turns out to be wrong anyway.
Do I need to track hours on fixed-fee projects?
Yes, if you want to know whether the fee paid. On a fixed-fee project the hours never reach the invoice, but they show what the job really took, which is the only sound basis for pricing the next one.
Does ERPFlow track billable hours per project?
Not yet as billable hours. ERPFlow totals time typed on project cards, per project and per customer, but it doesn't have a timer or timesheets today, and card time doesn't become invoice lines. Time tracking, including converting tracked time into invoices, is coming soon.

Get started

Start free. Scale as you grow.

Run your whole business in one place — and pay for it like a founder, not an enterprise.

  • Start free
  • Setup in minutes
  • No trial clock