Billable hours tracking
Track billable hours without losing the detail. Capture hours as you work, write descriptions clients will read, and push the result to Xero as a draft invoice. One workflow from timer to paid.
- 7-day free trial
- Cancel anytime
- Works with Xero
Why most billable hours never make it onto an invoice
The hours themselves are not the hard part. The problem is what happens between doing the work and getting paid for it.
Hour Cap is built around the idea that the time entry, the description, and the invoice line are the same thing. Get it right once.
- You forget to log an hour here and an hour there. By Friday, two days are guesswork.
- Descriptions are cryptic. By invoice time, "Acme work" tells you nothing and the client even less.
- Billable and non-billable hours get mixed up, so admin time ends up on a client invoice or proper work ends up missing from one.
- The half hour you spent answering a client's email is on no timesheet at all, because logging it meant opening a second application.
- Invoicing day is its own job, retyping line items into Xero from a CSV or, worse, from memory.
Three things that make billable hours stick
Capture that fits how the work happens, descriptions worth reading, and a rate you never have to remember.
Capture time the way you work
Start a timer when you start. Backfill a manual entry when you did not. Hour Cap supports both equally so you do not have to commit to one workflow.
- Persistent timer widget that survives page navigation
- Manual entries accept human formats like 1h30m or 1:30
- Edit duration later when something runs longer than the timer
Write descriptions the client will read
Most trackers give you one short line. Hour Cap gives you a multi-line description that flows straight onto the Xero invoice. Clients pay invoices they understand.
- Multi-line, paragraph-style descriptions per entry
- Descriptions become Xero invoice line items on per-entry hourly invoices
- Group line items by entry, project, date, or person
Rebuilt the checkout flow to handle expired tokens. Added a recovery path so users do not lose their cart.
Regression tested across browsers. Wrote a runbook for support.
The right rate, every time
Rates cascade. Set a default at the organisation level, override per team member where seniority matters, override per project where a client negotiated a custom rate. Hour Cap picks the right one without you thinking about it.
- Three levels: organisation, member, project
- Most specific rate wins, automatically
- Mark entries non-billable when you are tracking but not invoicing
Most specific rate wins. Project beats member beats organisation default.
The hours nobody logs are the email ones
Ask anyone who bills by the hour where their unbilled time goes and it is rarely the work itself. It is the requests answered between two other jobs, in five-minute pieces that never reach a timesheet.
That is not carelessness. Logging it meant leaving the mailbox, opening a second application, and remembering which client it was for, so the inbox moves inside the tracker instead.
- Forward your support address and client mail lands in a shared inbox
- Match senders using synced contacts, or link an unmatched conversation to a client
- Start a timer or log a duration from the thread, using the client linked to the conversation
- Those hours join the same timesheet, the same retainer and the same invoice
An add-on at $12 per seat per month on the Team and Business plans, included in your trial.
Morning. Two customers rang this week to say their Amex card bounced at checkout. Visa goes through fine. Can someone take a look before the weekend sale?
Hi Priya, found it. Amex was failing the address check on the new gateway rules. Fixed and tested both cards this morning, so you are clear for the sale.
The same three steps every week
Capture while the context is fresh, check the week before it closes, and let the descriptions you already wrote become the invoice.
-
Capture
Log it while you still remember it
Timer or manual entry, against a client and project that already know their rate. Write the description now, in two sentences, because this is the text the client will read.
-
Review
Catch the gaps while people are still here
Filter the week by client and date. A thin day is easier to reconstruct on Friday than on the 30th, and easier still if the support threads already carry their own hours.
-
Bill
Push it to Xero as a draft
Hours, rates, descriptions and tax already in place. Pick how the lines are grouped, push, then review and send from Xero exactly as you do now.
What changes when you do this right
Related use cases
Common questions
Free billable hours calculators
See all free tools →See the revenue hiding in your billable hours. These free tools turn tracked time into utilization, effective rates and margin.
Billable Utilization Calculator
Find your utilization rate and the revenue you are leaving on the table.
Open calculatorEffective Hourly Rate Calculator
See what your headline rate is really worth after non-billable time.
Open calculatorAgency Profitability Calculator
See your gross profit, margin % and effective hourly rate in seconds.
Open calculator
Why I built Hour Cap
I'm Jonathan, a freelance web developer in Brisbane, Australia. After 15 years, I wanted my client work to run on one system instead of separate tools that didn't handle retainers or Xero, copy/paste errors, and time that never got invoiced. I needed one tool that handled retainers, fixed-price, and hourly projects, let me write proper multi-line descriptions, showed me what was actually profitable, and pushed straight to Xero as invoices. Nothing did all of it, so I built one. Today it is pivotal to my business: all my time tracking, invoice drafting, and profitability runs through Hour Cap, and it scales the same way for agencies and teams.
Independent and self-funded. When you email support, you reach the person who built it.
More about JonathanStart tracking the hours that pay
Every hour you give a client, including the ones spent answering them. Free to start, and Xero on any paid plan.