Guide

Client Profitability Spreadsheet: How to Find Out Which Clients Are Worth Keeping

Your biggest client by revenue and your most profitable client are not always the same client. Here's how to build a spreadsheet that tells you which is which.

Ask most freelancers or small business owners which client is their best, and they'll name the one who pays the most. That's the wrong question. The right one is which client pays the most relative to the hours it actually takes to serve them — and that number is often surprising. A $6,000-a-month retainer that eats 40 hours of revisions, calls, and scope creep can be a worse deal than a $1,500 project that takes six focused hours. You can't see that from the invoice total. You can only see it from a spreadsheet that tracks hours against revenue, per client.

Why revenue alone hides the real picture

Revenue tells you what a client paid. It doesn't tell you what it cost you to earn it — and for a service business, the biggest cost is almost always your own time. Two clients can generate identical revenue and be nowhere near equally profitable once you account for how many hours, emails, and revision rounds each one actually consumed.

There's also a second number revenue hides: how much of that revenue is still sitting unpaid. A client who generates great numbers on paper but routinely pays 60 days late is quietly costing you in cash flow, even if every invoice eventually clears.

The three numbers that actually tell you profitability

MetricWhat it tells youHow to calculate it
Effective hourly rateWhat you actually earned per hour on this client, once every hour is countedTotal revenue from the client ÷ total hours worked for them
% of total revenueHow concentrated your income is on this one relationshipClient's revenue ÷ total revenue across all clients
Outstanding balanceHow much of what they owe hasn't landed yetTotal invoiced to the client minus what's been paid, excluding anything written off

Effective hourly rate is the one that changes minds. It's also the one people skip, because it requires actually logging hours against a client — not just against "work" in general.

Step 1 — Build a client table

One row per client. The columns that make the profitability numbers possible:

ColumnWhy it's there
Client nameThe row's identity — used to pull matching transactions and invoices.
Type (e.g. retainer, project, one-off)Retainers and per-project clients behave differently; worth separating when you compare rates.
Status (active / inactive)Keeps the table honest — you're comparing current relationships, not a graveyard of old ones.
Total revenueSum of all income transactions tagged to this client.
Total invoicedSum of every invoice issued to this client, paid or not.
Outstanding balanceInvoiced minus paid — what's still owed.
Hours workedEvery hour logged against this client's projects — the number that turns revenue into a rate.
Effective hourly rateTotal revenue ÷ hours worked.
% of total revenueThis client's revenue as a share of everything you billed.

If you're already logging income with a client tag on each transaction and tracking hours per project, most of this table can pull automatically with lookup formulas — sum revenue where the client column matches, sum hours the same way, then divide. The manual version is just as valid; it's slower to update but costs nothing extra to build.

Step 2 — Log hours honestly, including the invisible work

Effective hourly rate is only as honest as the hours behind it. The hours that get missed almost every time: revision rounds, status calls, "quick" scope-creep favors, and the email back-and-forth that a 200-word project brief somehow generates. If you only log the hours you spent actually producing deliverables, every client's effective rate will look better than it really is — and the client who demands the most hand-holding will look artificially fine.

A simple habit: log time the same week it happens, against the client and project it belongs to, in whatever increments are honest for your work — quarter-hours is usually enough resolution without becoming a chore.

Step 3 — Read the table for red flags, not just rankings

Sorting by revenue tells you who pays you the most. Sort by effective hourly rate instead, and look for these patterns:

  • Low effective rate relative to your target. If your target rate is $75/hour and a client nets you $40/hour once all the hours are counted, that relationship is quietly subsidized by your other work. Compare against the rate you should be charging with the freelance rate calculator.
  • High revenue concentration. A client at 45% of total revenue isn't necessarily a problem, but it's a risk you should be choosing deliberately, not discovering by accident when they leave.
  • Growing outstanding balance. A client whose unpaid total keeps climbing relative to their revenue is a slow-pay pattern worth addressing before it becomes a bad-debt problem — see our guide on building an accounts receivable aging report to see exactly how overdue each invoice is.
  • Rate trending down over time. Scope creep on a retainer client tends to happen gradually — a little more each month — which is exactly why it's invisible without a number tracking it.

Step 4 — Decide what to do with what you find

A low effective rate isn't automatically a reason to fire a client. It's a reason to have a conversation: a scope reset, a price increase, tighter revision limits, or moving them to a different service tier. The spreadsheet's job is to surface the problem early and with a number attached, not to make the decision for you. Some low-rate clients are worth keeping anyway — for stability, for the portfolio work, for the referral pipeline. The point is choosing that deliberately instead of not knowing.

What to actually do about a low-rate client, in rough order of friction:

  1. Tighten scope — cap revision rounds, define what's included in writing.
  2. Raise the rate at the next renewal or project, using your effective-rate data as the justification.
  3. Reduce the relationship's size — fewer hours, narrower deliverables.
  4. Refer them elsewhere and free the hours for higher-rate work.

Common mistakes

  • Only logging "billable" hours and skipping admin, calls, and revisions — inflates every client's apparent rate.
  • Comparing revenue instead of rate. The client who pays the most isn't the client who's worth the most per hour.
  • Never revisiting old numbers. A retainer's scope creeps; a rate calculated once at the start of the relationship goes stale within a few months.
  • Ignoring outstanding balances when judging a client — a client who's profitable on paper but chronically 45 days late is a cash flow cost the revenue number doesn't show.
  • Treating every low-rate client the same. Some are worth keeping for reasons a spreadsheet can't capture; the point is deciding on purpose.

Spreadsheet vs. time-tracking software

A spreadsheet works fine here as long as hours actually get logged somewhere consistent — a dedicated time-tracking tool with a Chrome extension or desktop timer removes the friction of remembering to log manually, and can export or feed the numbers into your spreadsheet. Either way, the profitability table itself — revenue, hours, rate, share, outstanding — is simple arithmetic a spreadsheet handles well; the discipline that matters is upstream of the formulas, in whether hours get recorded honestly and on time.

Frequently asked questions

What counts as "hours worked" for a client — only billable production time?

No — for an honest effective hourly rate, count every hour spent on that client's work: production, revision rounds, status calls, and the scope-creep favors that don't get invoiced separately. Leaving those out makes every client look more profitable than they are.

How often should I recalculate client profitability?

Monthly is a reasonable default for active clients, since scope and hours drift gradually rather than all at once. At minimum, recheck before a retainer renewal or contract discussion — that's when the number is most useful to have on hand.

Is a client with a low effective hourly rate always worth dropping?

Not necessarily. Some low-rate clients are worth keeping for stability, portfolio value, or referrals. The spreadsheet's job is to make sure that's a deliberate choice rather than something you never noticed.

What's a healthy revenue concentration for one client?

There's no universal number — it depends on your risk tolerance and how replaceable that revenue would be. What matters is knowing the percentage and deciding consciously whether you're comfortable with it, rather than discovering it only when the client leaves.

Should outstanding balance affect how I rank client profitability?

Yes, at least as a secondary check. A client with a strong effective hourly rate but a large, growing outstanding balance is costing you in cash flow even if the revenue eventually arrives — worth flagging separately from the rate itself.

Want this calculated automatically, per client?

The Small Business Financial Command Center's Clients sheet does this math for you: it pulls Total Revenue, Total Invoiced, Outstanding balance, and Hours Worked live from your transactions, invoices, and projects, then calculates each client's Effective Hourly Rate and % of Total Revenue automatically — no manual lookups. It's one of 14 sheets in the workbook, alongside a Projects sheet that tracks margin per project and a Cash Flow Forecast built from the same invoice data.

One-time purchase. No subscription. It's a spreadsheet system, not software or financial advice.

Just need your own target rate, not a full client table? Try the freelance rate calculator first.

Need a spreadsheet built around your exact business instead? We build custom workbooks to order — $99, delivered in 5 business days.