← Back to articles

How to Bill Clients Without a Timer Running

A practical alternative to timer-based billing: how to track, defend, and invoice client hours using passive activity capture instead of starting and stopping a stopwatch.

Many freelancers operate under an unstated assumption: to bill a client for hours, a timer had to have been running during those hours. The timer is the proof. The timer is the system.

This is not true. The timer is a habit, not a requirement. Most clients do not care whether a timer was running; they care whether the hours billed match the work done. Those are different things.

This post lays out a practical alternative to timer-based billing — how to track, document, and invoice client hours using passive activity capture instead — and how to talk to clients about it when they ask.

Why timer-based billing fails as the underlying system

Three failure modes, none rare:

  1. You forgot to start the timer, so the meeting that ran from 10am to 11:30am is logged as 0 hours.
  2. You left the timer running when you stopped working, so the lunch break is logged as billable.
  3. You started the timer on the wrong project, so Client A is invoiced for work you actually did for Client B.

A timer captures one specific signal — what you remembered to log — not the actual signal — what you actually worked on. Over a week of context-switching, the gap between those two is usually 15-30% of your hours. That gap is real revenue.

The alternative model: do not use the timer as the source of truth. Use it as a memory aid (if you want), but make passive activity capture the actual data layer.

The three-layer model

Instead of "running a timer," structure your billing system as three layers:

Layer 1: Passive capture (no effort)

A background tool records every app, window title, and browser tab with timestamps. You do not start it, stop it, or interact with it during the day. It runs.

This is the data layer. It captures what actually happened, not what you remembered to log.

Layer 2: End-of-day review (5 minutes)

At end of day, you open the day's timeline. You see the captured sessions. You tag them by project:

  • "9:15-10:50: Figma work + Chrome references → Acme Brand Redesign"
  • "11:00-12:30: Zoom + Slack thread → Beta Consulting"
  • "2:00-3:45: VS Code + GitHub → Internal Tools"

This is the categorization layer. The tool cannot know which client a Figma session belongs to. You tell it.

Layer 3: End-of-week export (10 minutes)

On Friday, you filter the log per client and export the total. That total is what goes on the invoice. The detail underneath is what defends the total if asked.

This is the billing layer. The output is the same shape as a timer-based invoice — start time, end time, project, duration. The work behind it was fundamentally different.

How to defend hours without a timer log

A client occasionally asks: "What were you doing during this 90-minute block on Tuesday?" Defending this is the same with passive capture as with a timer, with one important difference — you can actually answer.

The timer answer (if you remembered to log it correctly): "I was on the Acme project from 2pm to 3:30pm."

The passive-capture answer: "From 2:00 to 2:25 I was in Figma working on the homepage layout, then 2:25 to 2:40 I was in Chrome looking at three reference sites that informed the navigation pattern, then 2:40 to 3:30 back in Figma applying the iteration. The file is acme-redesign-v3.fig."

The second answer is more defensible. It is also harder to fabricate. Both are honest reasons to prefer it.

For any client willing to scrutinize an invoice, the passive-capture audit trail is a stronger defense than a timer log. The data is there; you can show it.

What clients actually want (it is not the timer)

A common worry: "What if my client only accepts timer-based billing?"

In practice, very few clients care about the underlying tracking method. What they care about:

  1. The total hours bill is approximately right — neither suspiciously high nor obviously rounded up
  2. The breakdown by project/task is plausible for what was delivered
  3. They get the invoice on time
  4. They have someone to ask if they have questions

A timer log produces #1 and #2 only if you remembered to log perfectly. Passive capture produces both more reliably.

There are exceptions:

  • Agency / outsourcing platforms (Upwork, some agencies) that contractually require timer-based screenshot tracking. You have to use their tool. That is a contract, not a billing system.
  • Some legal/accounting firms that require time entries in a specific format. The format usually does not specify the underlying tracking method — just the output.
  • Long-term cost-plus contracts with auditors that may require timer logs. Rare in freelance work; common in enterprise.

For everyone else — most freelancers, most consulting work — clients do not care how you generated the hour total. They care that it is right.

How to talk to clients about non-timer billing

If a client explicitly asks "do you use a timer to track my hours?", the honest answer is direct:

"I use a tool that records what apps and projects I'm working on continuously through the day, then categorize the sessions by client at end of day. It produces a more accurate record than starting and stopping timers — and I can show you the per-session breakdown if you ever want to audit a specific block."

You will find that 95% of clients accept this without follow-up. The 5% who push back are almost always testing whether you will provide a per-session breakdown. Offer it; the conversation usually ends.

If a client requires "screenshot proof of work" — meaning periodic screenshots of your desktop as proof you are working — that is a different conversation. It is a surveillance contract, not a billing arrangement. Decide whether you want that client.

The practical workflow

Once the tool is set up, the weekly rhythm:

Daily (5 min, end of day):

  1. Open timeline.
  2. Tag uncategorized sessions to the right project.
  3. Split any session that spans two clients.
  4. Save.

Weekly (10 min, end of week):

  1. Filter log to one client at a time.
  2. Export the time entries as CSV.
  3. Open your invoicing tool (Wave, Bonsai, FreshBooks, etc.).
  4. Paste totals, optionally including the per-session breakdown as backup.
  5. Send.

That is the entire system. No timers. No "did I remember to stop it?" guilt. No Friday reconstruction.

Common questions

"What about phone calls and meetings where I'm not at the computer?"

Add them manually at end of day. A typical week has 2-4 hours of off-computer work; logging them as 30-second manual entries takes a minute total.

"What if I forget to do the daily review?"

The next day's review takes 10 minutes instead of 5. The data is still there. This is the main advantage over timers — missing a day does not lose data, only batches it.

"What if the captured data has stuff I don't want to bill?"

That is what categorization is for. The tool captures everything; you decide which sessions go on the invoice and which are personal time, learning, or non-billable overhead. The fine grain is the feature.

"How is this different from just using a timer carefully?"

Discipline-based systems work until they don't. Every freelancer who has used a timer for more than a year has had a bad week where the timer fell off. Passive capture is the system that survives bad weeks.

What "fixed" looks like

A working non-timer billing system means:

  • You never type into a timer during the workday
  • Daily review takes 5 minutes
  • Friday afternoon takes 10 minutes per client
  • Your invoice totals match the work you actually did (within 1-2%)
  • If a client asks about a specific block, you can describe what you were doing in 30 seconds
  • Forgetting to start or stop a timer is no longer a category of error you can make

Anything that does not produce these outcomes is not actually solving the timer problem.

DayReplay's role specifically

For full disclosure: I built DayReplay as the tracker I wanted for non-timer billing. It runs in the background on Mac or Windows, captures the activity continuously, and produces a session timeline you can tag per project and export per client.

A few things that matter specifically for the workflow this post describes:

  • Categories let you build per-client tagging (Acme, Beta, Internal) rather than per-app
  • Browser tab capture means research time gets attributed to the project it served
  • CSV export per category produces a per-client total in 30 seconds
  • Idle detection skips logging away-from-computer time, so the 90-minute lunch is not on the invoice by accident
  • Data stays local on your machine — no cloud upload of your client list or hours

The macOS guide and Windows guide walk through setup. The Customize Categories page covers per-client tagging. For the broader framing of why timer-based systems break, see How to Track Work Hours Without a Timer and How to Recover Billable Hours You Forgot to Track.

If DayReplay is not the right fit, that is fine — the principle works with any passive activity tracker. The point is to stop using timers as the underlying system and start using them, at most, as one input among several. Your invoice will be more accurate and your Friday afternoons will return to you.

Long-form guides: Windows · macOS

See pricing · Security details