How to do a billing audit on your last 30 days

After 30 days, memory of what you worked is unreliable. Your calendar has the full record. Here's the step-by-step — client by client, gap by gap.

5 min read Adrien

Your last invoice was built from memory.

The main deliverables, the project milestones, the calls you remember having. You probably got most of it.

Probably isn’t a billing strategy.

Most freelancers have a gap between what they worked and what they invoiced last month. Not because they’re disorganized — because memory compresses time. A 45-minute revision call three weeks ago has shrunk to “oh right, one call.” The onboarding session that ran half an hour over is remembered at the scheduled duration. The afternoon troubleshooting a client’s setup never made it to the invoice because it felt like problem-solving, not billable work.

Your calendar saw all of it. This is how to read it.

What you need before you start

One thing: a calendar where client work is logged with some kind of client tag. [Acme] proposal review, [Bolt] dev session, [Webb] feedback call. The bracket doesn’t need to be elaborate — just enough to attribute a block to a specific client.

If your events have no client tags, the audit won’t surface anything useful. The bracket naming convention documents the exact system — a 10-minute read, a few days to build the habit.

You’ll also need your last invoice for each client.

Step 1: 30 days, client by client

Open your calendar. Set the view to the last 30 days. Don’t try to look at everything at once.

Go client by client. For each one, collect every event that references them — calls, work sessions, reviews, quick check-ins, anything that was their time. Keep a running total somewhere simple: a note, a spreadsheet column, a piece of paper.

For three or four active clients, this step takes 15 to 20 minutes.

Step 2: The categories that consistently get missed

As you go through the events, you’ll find that certain types of work never show up on invoices. These are the usual suspects.

Kick-off calls. The first meeting before any real work began. Billable. Almost never invoiced, because it doesn’t feel like a deliverable — it feels like “getting started.”

Revision rounds beyond scope. You scoped two revision rounds. The client came back for a third. You absorbed it because raising the point felt awkward mid-project. The calendar has the record.

Async communication time. The 30-minute email you carefully drafted. The recorded demo you spent an hour reviewing and annotating. The Slack thread that turned into real problem-solving. These exist nowhere in a billing system unless you put them there explicitly.

Schedule overruns. A 30-minute call that ran 55. A 2-hour session that took 3. Your calendar shows the scheduled duration, not what actually happened. Those extra minutes are exactly where hours go invisible.

The work that most freelancers forget to bill tends to concentrate in these four categories — not in the main project sessions that are easy to remember.

Step 3: Compare to your invoice

You now have a calendar total per client. Compare it to what you invoiced.

The gap is the result.

No gap. Your invoicing is already accurate. Common when you’ve had calendar-based tracking habits for a while.

Small gap (1-3 hours). A few async sessions, one overlong call. Decide whether to roll it into the current month or absorb it. If the same gap appears next month, it’s systematic.

Significant gap (4+ hours per client). Common on a first audit. It means specific categories are being systematically missed — and those categories need to become calendar events going forward.

What to do with the gap

Project still open: invoice for it. A brief line is enough. “Additional async support, March 3–7, 2h30 — €200.” Most clients accept a documented item with a date and duration.

Project closed recently (under 30 days): you can raise it. “I reviewed my actual hours last month and found I hadn’t accounted for the revision sessions. I’d like to add them to the next invoice.” Direct, and most clients will accept it.

Project long closed: sunk cost. The value isn’t recovering that specific amount — it’s the pattern. Which category was missed? Make sure it doesn’t happen next month.

After the first audit

Running it once shows you where the holes are. Running it every month for three months closes them — because you start tagging every kick-off call, logging every async session, noting the overrun minutes before they disappear.

After three months, the gap shrinks close to zero. Not because memory improved. Because the calendar has the complete record before you even open an invoice.

Timescanner reads your tagged calendar events and generates per-client hour totals automatically. The audit becomes: open the app, check the report against your invoice, bill the difference. Under five minutes, every month.


Timescanner reads any iCal-compatible calendar and generates per-client billing reports automatically — Google Calendar, Outlook, iCloud, Proton Calendar, Notion Calendar, Fastmail, and others.

Timescanner

Your calendar already knows how much you worked.

No timers. No new habits. Timescanner reads your calendar — Google Calendar, Outlook, iCloud, and more — and generates your billing reports automatically.

Start free trial — 30 days, no credit card