Freelance Timesheet: How to Build One That Actually Pays You
To build a freelance timesheet that actually pays you, it needs four columns — date, client/project, a description, and duration — plus a billable flag, and it has to be filled while you work, not reconstructed on invoice day. The format is easy. The money is won or lost in whether every hour makes it onto the sheet in the first place.
A timesheet isn't paperwork for its own sake. It's the evidence behind every line on your invoice, the answer when a client asks "what was this for?", and the only honest record of where your week actually went. Get it right and it pays for itself many times over.
What a freelance timesheet needs
Strip away the templates and a timesheet that holds up has five things:
- Date — so entries are sortable and you can scope an invoice to a billing period.
- Client and project — every entry mapped to who pays for it, not a pile of unlabelled minutes.
- Description — one concrete line ("revisions to checkout page", "kickoff call"), enough to justify the charge later.
- Duration — the actual time spent, captured as it happened.
- Billable flag — a yes/no per entry, because not everything you do for a client is something you charge for.
That billable flag is the column most freelancers skip, and it's the one that decides whether the sheet is useful. Without it you either over-bill and erode trust, or under-bill and quietly lose income. If you're unsure where the line sits, billable vs non-billable hours covers it properly — calls, research, and revisions usually count; internal admin and pitching new leads usually don't.
Here's what one client's week looks like on a sheet that's doing its job:
| Date | Project | Description | Duration | Billable |
|---|---|---|---|---|
| Mon | Acme — site | Design revisions | 3h 15m | Yes |
| Mon | Acme — site | Standup call | 30m | Yes |
| Tue | Acme — site | Reading the new brief | 40m | Yes |
| Wed | Internal | Invoicing & email | 50m | No |
| Thu | Acme — site | Deploy + QA | 1h 20m | Yes |
| Billable total | 5h 45m |
The 50 minutes of admin is real work — it just doesn't belong on Acme's invoice.
How to fill it without losing hours
The format is the easy part. The hard part is capture, and it's where almost all the leakage happens. Three rules keep the sheet honest:
- Record at the moment, not from memory. The single biggest source of lost income is reconstructing your week on invoice day, when you only remember the big blocks. The five-minute reply, the ten-minute review, the quick call between two other tasks — those are exactly the entries that get dropped, and they sum to real money across a month.
- Log the small stuff first. Counterintuitively, the tiny tasks are the ones worth the most discipline, precisely because they're the easiest to forget. A heads-down three-hour block will never go missing. A scattered hour of fifteen short interruptions will, every time.
- Decide billable once, per project. Don't re-litigate every entry. Set the rule at the project level — "everything on Acme is billable except internal admin" — so filling the flag is mechanical, not a judgment call you make forty times a week.
For the mechanics of capturing time accurately and what to do with it, how to track billable hours goes deeper. And when it's time to turn the sheet into a number, how to calculate billable hours walks through converting minutes to decimal hours and applying your rate.
Why an auto-generated timesheet beats a spreadsheet
A manual spreadsheet has one fatal flaw: it depends on you remembering to fill it. Every entry is a small act of discipline, and discipline fails under a deadline — which is exactly when you're working the most billable hours. The sheet is most incomplete precisely when it matters most.
A start/stop timer is barely better. You forget to start it (the first hour vanishes), you forget to stop it (now you're guessing, and guessing low to be safe gives away time), and context-switching hides the short tasks the timer was supposed to catch. Every one of these failures rounds in the client's favour, never yours.
An automatically generated timesheet removes the discipline tax entirely. Instead of asking you to log time, it watches what you actually work on and writes the entries for you — the forgotten call and the after-hours fix are already on the sheet by the time you sit down to invoice.
That's the approach behind BillNotch: the desktop app records the active window in the background, sorts your activity into client projects with keyword rules (plus optional AI categorization for the fuzzy cases), and inherits the billable flag from the project. The timesheet builds itself, the billable total is live for any client and date range, and the Revenue Leak Finder flags billable work that never made it onto an invoice. If you bill by the hour, see BillNotch for freelancers.
The short checklist
- Give every entry a date, client/project, description, duration, and billable flag.
- Capture as it happens — never reconstruct the week on invoice day.
- Log the small, frequent tasks first; they leak the most.
- Set billable status once per project, not per entry.
- Automate capture so a forgotten timer never costs you an hour again.