You closed a month where every hour had somebody's name on it.
Nothing sat idle. You worked the weekend before the 15th, and two clients got more than they paid for while you watched.
Then the account balance came in looking like a slow month.
You don't feel behind. You feel busy, which is supposed to be the good problem, and the number underneath doesn't agree.
Busy is a capacity fact. Profitable is an arithmetic fact.
You'd never confuse those two for a client. You'd pull the job costing, find the work that eats more than it bills, and say so. Nobody hands you that report for your own firm, so the two stay stuck together and the arithmetic never gets run.
I'm a partner at SDO CPA and I'm not a CPA; Serena is. We've had a waitlist since June. Halfway down this issue I point you at my own firm's terms page, which is one firm's answer and not a neutral one. Go read it and disagree with it if you want. I'll quote the parts that matter and link the rest.
When to fire a client, and what the numbers have to say first
Later than you think, and only after two cheaper moves. Start with cost to serve: every hour that client takes, priced at what your own hour has to be worth, set against the fee. Most of those hours never reach an invoice, so I'd guess most owners have never seen the number. A client is costing you money when cost to serve goes past the fee, well before it goes past your target. When it does, the first move is a written trigger that puts a price on the expensive behavior. The second is a notice saying what changes and by when. Firing is third. Owners who skip to third pay for the exit and never find out whether the client would have changed.
Key Takeaways
Busy is a capacity fact and profitable is an arithmetic fact - only one of them shows up on your calendar, and it's the wrong one.
Your fee is exact and your hours are a feeling - which makes every comparison between two clients part memory.
Cost to serve is every hour a client takes, priced - and the hours that never reach an invoice are most of it.
Price your own hour before you judge anybody with it - an hour valued at whatever's left over makes every client look fine.
The first move is a written trigger - a consequence with a date on it does more work than resentment does.
The move most people reach for is the last one - firing costs you the exit and the replacement, both at once.
You do job costing for clients and never for yourself
The fee is a number you can read off an invoice. The hours are a feeling you have about a client, and feelings sort in the wrong order. The client you dread isn't always the expensive one. Sometimes the expensive one is pleasant, apologetic, and emails you six times a week.
Issue four gave you the worksheet for this: the fee in one column, the hours in the next, divide, sort. It also told you that if you're guessing the hours, guess high. That instruction was honest and carrying more weight than it looked. The guess isn't a rounding error on the answer. It is the answer, and everything downstream inherits it.
So this issue is about the hours. It doesn't rebuild that sheet; it puts a measured number where the guess was.
The hours nobody invoices
Three of them, not the same size. Issue four named two and stopped short of pricing them.
Start with the interruption. A text about a transaction. A phone call that runs four minutes. A question you answer between two other things. None of it is billable, and that isn't the cost anyway. The cost is the work you stopped doing, which now takes longer than it would have.
The expensive one is the re-do. You fix something, and next month you fix it again, because the fix never reached the place the error comes from. A client whose staff codes the same expense wrong every month isn't giving you a monthly correction. It's the same job twelve times a year and you're paying for all twelve.
Then the late file. On its own, cheap. Expensive because of where it lands: at the end of a week that was already full, pushing everything behind it. That cost doesn't even appear on their row. It appears on somebody else's.
Call that cost to serve. It's what the work takes once the hours are priced, and nearly all of the missing part is in those three.
Cost to serve, and what your own hour has to be worth
An hour you priced at zero makes every client look profitable. If your own time is whatever's left after payroll and software, that's a residual and you can't judge anything with it.
What would you pay somebody to do the part of this work that isn't specifically you? Say ninety dollars an hour, illustrative and round, sitting above what it would cost you to hire the work out. The annex shows how to get to your own number.
The answer comes out in dollars a month, which is the version you can decide with. On those illustrative figures, a client paying eight hundred a month who takes twelve hours costs you a thousand and eighty, which is a monthly margin of minus two hundred and eighty. On the fee that isn't a pricing problem. It looks like one in the hours.
Two weeks of counting is all it takes, and it's a count rather than a clock. You're tallying the times a client takes something, not attributing your day in six-minute blocks, and then it stops. What comes out is a shortlist. Take it to the client rather than the sheet.
When to fire a client, and the two moves that come first
Re-rate first. Then cure. Release last.
Cure sits before release because it's the only one of the three that doesn't risk the seat, and on a list that hasn't grown in two years that matters more than the arithmetic. Whether the seat should be refilled at all is the next issue's question.
Re-rate means the expensive behavior gets a price, written down before it happens. Cure means a notice: what changed, what the window is, what happens at the end of it. Release is third and stays rare, because the first two usually work and when they don't you've got a record of trying.
Issue four's annual review gives the bottom of your list two options, raise or release. Cure is the term missing between them, and it keeps clients you were about to lose. Issue six ran the fit test over the people already in seats; this runs the economics test over the same list, and they don't hand back the same names.
My firm's version of the first two is public, which is the only reason I can show you. SDO CPA's terms page asks clients to respond to a request for records or information within ten business days. It says work expedited because information arrived late carries a rush fee of 100% of the base service fee, or hourly rates for time-based work. It says records that arrive incomplete or disorganized get the extra work billed at hourly rates. And it says either side can end the engagement at any time on written notice. Separately, an unpaid invoice carries a ten-day cure.
None of it is written as a threat or used as one. It's a price list for behavior, written before anybody is annoyed, which is the only time you can write one fairly.
A clause like that lives in a letter, and issue seven is the one that builds it. Don't paste a trigger into a client agreement off the back of a newsletter. Write the sentence and hand it to whoever maintains your terms.
And when the cure window closes and nothing has changed, issue six has the note you send. I'm not writing a second one.
Do this before Friday: start a two-week tally, one line every time a client takes time nobody invoices. Work out what your own hour has to be worth. Then add a measured-hours column to the worksheet you already built.
Open your client list and find the one you'd drop today if the money didn't matter. What is it about them that makes the month harder? Send me that. Habit or number, I want to know which it usually is.
Operator annex
You already have the sheet. What you don't have is a real number in the hours column, and the first two pieces below are what fix that.
The two-week tally
One note, left open, one line each time. You'll be writing in it at 4:12 in the afternoon with a client on the phone, so it has to be somewhere that's already open.
The format:
date | client | minutes | what it wasFilled in, a line reads 09-14 | Client B | 6 | text about a deposit.
Two weeks. A month is long enough that you'll stop on day nine, and a week misses the close.
Count the things you'd never bill. That's what you're measuring. The four-minute call, the re-coded expense, the fifteen minutes on their bank feed, the text you answered at nine at night. If you're unsure whether something counts, it counts.
Issue seven's log catches the asks: the requests you could have priced and didn't. This catches the time nobody asks for at all, which is why it records minutes instead of decisions.
At the end of two weeks, total the minutes per client and double it for the month. Rough is fine.
Three columns onto the worksheet you already built
Issue four had you build a sheet with the client, the monthly fee, the hours, the effective rate, the last price change, scope creep, and an action column. Don't rebuild it, and don't touch what's in it.
Careful here. This is the mistake that makes the whole exercise wrong. Issue four already told you to put the interruptions into the hours column, guessed high. Your new number replaces that guess. It does not get added to it.
Paste this into H1, where it lands in H1, I1 and J1:
Measured hours Cost of hours Monthly marginMeasured hours is your billed work for that client, plus the tally total after you've doubled it for the month. Type it in. Cost of hours and monthly margin are formulas.
Put your replacement rate in L1. Then I2 gets this, copied down the column:
=H2*$L$1And J2 gets this, copied down the same way:
=B2-I2Then sort ascending on J. Compare the order against the one column D gave you. Column D ranked your clients on hours you estimated, in dollars an hour. Column J ranks them on hours you counted, in dollars a month. Where a client moves a long way between the two lists, the estimate was the problem.
What your own hour has to be worth
Ask what you'd pay somebody competent to do the part of your work that isn't specifically you, add the employer costs you'd carry on them, and divide by the hours they'd actually be productive rather than the hours they'd be at a desk. Round it up. Everybody rounds this one down.
Worked with illustrative round numbers: a sixty-thousand salary plus twenty percent in taxes and benefits is seventy-two thousand. Fourteen hundred productive hours in a year rather than two thousand. On those illustrative figures that's about fifty-one dollars an hour, and it's the floor for work somebody else could do, not your own rate. The ninety I used in the letter sits above this floor on purpose. Yours will land somewhere else, and where is your call.
Two variations, because not every firm has a salary to run this off. If you've never hired, use a contract bookkeeper's day rate divided by six, or what you'd charge a new client for that same hour. And if staff absorb the interruptions rather than you, the three columns work unchanged; price those hours at the staff rate instead of yours, and the client who eats a junior's week shows up the same way.
Two triggers you can put in writing
Two, not six. Six clauses is five you'll wave through the first time somebody is nice about it.
Before either of them: none of this is drafted language and I'm not the one to turn it into any. Somebody wrote your terms. Send them the sentence and let them write the clause, and do the same with the notice in the next section. A price term on a client who has already signed usually can't move without whatever notice their own agreement requires, and that period is the one that binds you.
The short one, mechanical:
We ask for a response to any request for records or information within ten business days. Work that has to be expedited because a response arrived later than that is billed at our expedited rate.The long one is conditional, because the messy-records case needs the condition described and the short shape can't carry it:
Our monthly fee is set against records that arrive complete and reconciled to the bank statement. Where a period's records arrive in a different state, that period moves off the monthly fee and onto our hourly rate for the work needed to bring them up to it. The monthly fee resumes the following period.Say this at kickoff, out of the clause and in your own words. It's what keeps the clause from being a surprise, and a rate change discovered on an invoice gets argued about instead of accepted.
The cure notice
This isn't an exit letter. It's what has to exist before an exit letter is fair, and its real job is to be something you can point at three months from now.
The subject does most of the work:
A change on your account starting [date]The note itself:
[Name],
I want to flag something before it turns into a bigger conversation.
Since [month], [the specific thing: requests have been taking three to four weeks, the bank file has been arriving after the 20th, the same accounts have needed correcting] has meant [the specific consequence: your close finishes late, roughly [N] extra hours a month on our side].
Starting [date, at least 30 days out], [the specific change: requests outstanding past ten business days move that month's work to our expedited rate / coding cleanup will be estimated separately before we do it].
Nothing else about our work together changes. If [the specific thing] goes back to where it was, so does the rate, and I'd rather that's how this goes.
[Your name]When you send it, name one behavior and one consequence. A notice listing four grievances turns into a wind-up to firing somebody, and the client answers the version they heard.
The count you never have to take
A rule per client, in whatever you read mail in. Any message from their domain gets that client's label and stays in your inbox. Nothing gets moved and nothing gets auto-replied to.
The rule is one line. Most mail clients take something like this in the search box, with or without the brackets:
from:(@clientdomain.com)Then set a repeating reminder for the 1st of the month with this as the body:
Open each client's label or folder. Filter to last month. Write the message count in the sheet next to that client.That number measures contact volume. It correlates with the hours you never log, and unlike those hours, it counts itself. A client whose count doubles between March and June has changed something, and you'll see it in the count before you feel it in the month.
Issue eight told you to keep a note of who never uses the document address, because two months of chasing hours next to a name makes the pricing case better than a reminder does. This is that note, kept whether or not you remember to keep it.
One prompt
Ranking your own client list is the step you're least neutral about, so it's the one worth a second opinion.
I run a small bookkeeping and accounting firm. Below is a table of my clients with every business name replaced by a letter. Do not ask me for the real names. If a real name has slipped into the table, ignore it and refer to that row by its letter.
Work only from what I paste. No lookups, no connections. Nothing you write here is sendable as-is: the terms sentence goes to the person who maintains my agreements, not to a client.
Columns: client letter, monthly fee, measured hours, cost of hours, monthly margin.
[paste rows]
Tell me the two rows with the worst monthly margin. For each one, name the single client behavior most likely to be producing the unbilled hours. Then, for the worse of the two, draft one sentence I could take to my terms that would put a price on that behavior. Give me the sentence only, not a full clause.
Ask me up to three questions about those two rows before you answer.The model can see that a row is bad. It can't see that the client's controller left in April, so the two rows it names are questions to go and ask, not conclusions.
The filter counts whether you open it or not. Everything else here waits for you.


