How to Bill Multiple Clients at Different Hourly Rates Without a Spreadsheet

Last updated  ·  6 min read  ·  Windows 10 & 11

Three clients, three rates. One of them pays a different rate for strategy than for production. And somewhere in there is the admin time you bill at nothing at all. The spreadsheet that holds this together is one mis-dragged formula away from an invoice you will have to apologise for.

Rate complexity is a good sign — it usually means you have enough clients to price them differently and enough leverage to charge more for the work that matters. It is also the single most common source of invoicing errors among independent professionals, for a reason worth stating plainly: the arithmetic is trivial, but the bookkeeping of which minute belongs to which rate is not.

Why the spreadsheet breaks

A rates spreadsheet fails in ways that are quiet rather than dramatic:

FailureHow it shows up
The rate lives in the formula, not the rowA rate rise applies retroactively to work already invoiced, or not at all to new work
One client, two ratesStrategy hours get billed at the production rate because they landed in the wrong column
Hours entered as decimals from memory1:45 becomes 1.45 instead of 1.75 — a 20-minute error per entry, repeated
Non-billable time in the same sheetAdmin either gets invoiced by accident or is invisible, so you never learn what it costs you
Rounding applied per-rowDozens of small roundings compound into a total that does not match the sum of the work

None of these produce an obvious wrong answer. They produce a plausible one, which is worse, because it gets sent.

Taskool’s project view on Windows, showing several client projects side by side with their own hourly rates and accumulated billable time.
Each client is a project with its own rate. Sessions dropped into a project inherit that rate, so a mixed week prices itself.

The structural fix: attach the rate to the work, not the sum

The reliable pattern is to make the rate a property of the project or activity, so that a tracked session is priced the moment it is filed rather than at the end of the month when someone builds a total. Taskool works this way on Windows: rates are set per project, and can also be set per application or activity type, so a session inherits the correct price automatically.

That second option is the one that solves split rates within a single client. If design work happens in one application and administration in another, the two bill differently without you sorting them by hand. Here is how to set it up.

  1. Create one project per client

    Every client gets its own project — not a shared list with a client column. This is what keeps invoices separable later and stops one client’s hours drifting into another’s total.

  2. Set that project’s standard hourly rate

    Enter the rate you actually agreed, including currency, at the project level. Every session filed under the project inherits it, so the rate is applied at the moment of filing rather than recalculated at invoice time.

  3. Split rates within a client using per-application rates

    Where one client pays differently for different work, set a rate on the application or activity itself. Time in the design tool bills at the higher rate; time in the admin tool bills at the lower one, in the same project.

  4. Add a zero-rate project for non-billable time

    Give admin, business development and your own learning a project at a rate of zero. It stays off invoices while still showing up in the daily summary, so you can see what your overhead actually costs.

  5. Let tracking file the hours for you

    With Taskool running in the system tray, sessions are recorded automatically and dropped onto projects afterwards — so the rate is applied to measured time rather than to a number typed in from memory.

  6. Generate one invoice per project

    Run the invoice generator per project. Each line carries its own rate and the total is computed from the session record, then exported as PDF, Word or Excel.

Give non-billable work a project too — at a rate of zero. The temptation is to leave admin untracked. Track it at zero instead: it stays off the invoice, and after a month you can see exactly how many hours a client’s unbilled overhead is consuming. That number is the single most useful input to your next rate conversation.

Raising a rate without corrupting past invoices

The awkward moment in any rate spreadsheet is a price rise. Because the rate is usually a cell referenced by every row, changing it silently reprices work you have already invoiced, and reconciling against what the client actually paid becomes a manual exercise in memory.

The clean approach is to close the current period first — generate and export the invoice for work up to the change date, so that period is fixed as a document — and only then change the project’s rate. Exported invoices are static files, so history stays intact regardless of what the live rate becomes.

What the invoice looks like at the end

Because each session carries its own rate, a week spanning three clients and two rate tiers produces three separate invoices, each internally correct, without a single manual multiplication. Each exports to PDF, Word or Excel for sending. The tracking side of that workflow — how the sessions get recorded in the first place, without starting a timer — is covered in the automatic tracking and invoicing guide.

Get Taskool

Per-project and per-task hourly rates, with invoices that total themselves.

View on the Microsoft Store

$10.49 USD · one-time purchase · Windows 10 & 11

Frequently asked questions

How do I bill different clients at different hourly rates?

Make the rate a property of the client rather than of the invoice. In Taskool, each client is a project with its own hourly rate, and every tracked session filed under that project is priced at that rate automatically — so a week spanning several clients produces several correct invoices without manual multiplication.

Can I charge one client two different rates for different types of work?

Yes, and this is where spreadsheets usually fail. Taskool supports rates set per application or activity as well as per project, so higher-value work done in one tool bills at one rate while administrative work in another bills at a lower one, inside the same client project.

How should I handle non-billable hours?

Track them at a rate of zero rather than not tracking them. They stay off the invoice, but they appear in your daily summary, which tells you how much unpaid overhead each client generates — usually the most persuasive evidence in a rate negotiation.

What happens to old invoices when I raise my rate?

Close out the current period first: generate and export the invoice for everything up to the change date, then update the project’s rate. Because exported invoices are static PDF, Word or Excel files, past billing is unaffected by the new rate.

Do I need separate invoicing software as well as a time tracker?

Not necessarily. The usual stack is a subscription tracker plus a separate billing tool, which is two monthly fees for a job that takes minutes a week. Taskool includes an invoice generator, so tracked hours become a sendable document in the same app, for a one-time purchase of $10.49.

How do rounding errors creep into hourly billing?

Mostly through two habits: converting times to decimals by hand (1:45 typed as 1.45 rather than 1.75) and rounding each row before totalling. Computing the total from recorded session durations, and rounding only the final figure if at all, eliminates both.