Freelance time tracking to invoice: turn hours into a clean bill
Hourly work fails in two places: hours you forget to log, and invoices clients dispute because the line items are vague. A simple routine fixes both.
Why hourly work leaks money
Two leaks cost freelancers the most. First, hours that never get logged: a short call here, a revision there. Second, invoices that clients push back on because the lines are vague. Both are fixed by a small, consistent routine.
A simple time-tracking routine
- Log as you go. Start a timer or add an entry at the end of each work block. Memory at the end of the week is unreliable and tends to undercount.
- Attach every entry to a project. Time without a project cannot be billed or measured.
- Mark billable or not. Internal admin and unpaid pitching are not billable; they still matter when you check your real hourly rate.
- Write a description a client could read.
- Review before you invoice. Fix typos, merge duplicates, remove personal notes.
Writing descriptions clients accept
| Weak | Better |
|---|---|
| Design | Homepage layout — 3 revision rounds |
| Meeting | Kick-off call: goals, content list, deadlines |
| Fixes | Mobile menu bug on iOS Safari — reproduced and fixed |
Rates, rounding and minimums
- Set the rate on the entry (or a default rate) so past invoices don’t change when you raise your price.
- Round consistently and write the rule in your terms (for example 15-minute increments). Do not round up silently.
- If you have a minimum charge per task or call, say so in the proposal.
Hourly, fixed price or retainer?
Track time even when you bill fixed price. It tells you whether the project was priced well and how much a change order should cost. For a retainer it shows the client how many of their included hours they used.
From hours to invoice without double-billing
The risk in a manual spreadsheet is that the same hours end up on two invoices, or that some never make it onto one. The safest rule is that an entry can only be billed once, and it is marked as billed when it goes onto an invoice.
In SeeGlance, log time against a project with a description, duration, date, rate and a billable flag. When you’re ready to bill, select the unbilled billable entries and create a draft invoice from them; each line is built from the entry’s description and hours at its rate, and the entries are linked to the invoice so they cannot be picked again. You review the draft, attach a payment link and send it.
Disputes: what to keep
- The signed proposal or contract with your rate.
- Time entries with dates and descriptions.
- Any change orders the client approved.
- The invoice with the original send date.
Check your real hourly rate every quarter
Divide total revenue by all the hours you worked, including unbilled admin, sales and unpaid revisions. If that number is well below your quoted rate, the fix is usually pricing or scope, not working harder.
FAQ
How detailed should time entry descriptions be?
One line that a non-expert can understand: what was done and why. “Homepage layout, 3 revisions” beats “design”.
Should I round time up?
Round consistently and say how in your terms (for example to the nearest 15 minutes). Do not round up silently; it destroys trust.
Can I mix hourly and fixed price?
Yes. Keep fixed-price milestones and hourly extras separate, and use change orders for out-of-scope hours.
How do I avoid double-billing?
Mark entries as billed when they go onto an invoice. SeeGlance links each entry to its invoice so it cannot appear twice.
Run this whole workflow in one place?
Log time against a project, mark what is billable, then create the invoice from the unbilled entries so nothing is billed twice.
Try SeeGlance →