A complete answer has six facts: hours bought, hours used, hours left, what they were spent on, when they renew or expire, and what happens at zero. Send them as a short statement on the same day every month, before the client asks, and give the client a page where they can check the balance on any other day.

Why clients ask

A client who buys a block of hours has usually planned what to spend them on. A law firm that hires a legal support firm rebills the time to its own client, so it has to know how much of the block has been used.

That’s why the question tends to come just before a decision: whether to send you the next piece of work, hold it until next month, or buy more hours. If the answer takes two days, the client either holds the work back or goes ahead and learns about the overage from the invoice. The client will also ask again, because the balance has changed since your last reply.

Three common ways to answer, and the problem with each

The simplest is a reply by hand. Someone opens the time tracker, filters by client, adds up the month, subtracts it from what the client bought, checks whether any hours expired, and writes the email. The number is out of date within a day. The job also falls to whoever the client asks, who may well be the most senior person on the account.

A spreadsheet with one row per client (hours bought, hours used, hours left) saves the adding up. It works with five clients and one person tracking time. It stops working when several people log time, a client buys hours mid-month, a block expires or someone edits an old entry, because each of those needs a manual update. The client can’t see the sheet unless you share it, and sharing it can mean showing them other clients’ rows or your own notes.

A monthly report from your time tracker gives the client an accurate list of entries, but a time report has no balance on it. It doesn’t say what was bought, what was left on the 1st, or what expires when, so the client does the subtraction and then emails you to check it.

What a good answer contains

Whatever tool you use, these are the six facts:

  1. Hours bought: each plan renewal, bundle or block you added, with the invoice it was paid on.
  2. Hours used: the total for the period.
  3. Hours left: the closing balance.
  4. What the hours were spent on: the entries grouped by project, each with its date, person, description and hours.
  5. When hours renew or expire: the next renewal date, and which unused hours lapse on which date.
  6. What happens at zero: whether work stops, or continues at an hourly rate on the next invoice.

Two rules keep the numbers trustworthy from one month to the next. The opening balance is always the previous statement’s closing balance. A statement you’ve sent never changes, so a later correction goes on the next statement as an adjustment.

I’d also leave money off the statement. The invoice already says what the client owes, and a statement that shows only hours can’t be mistaken for a second bill.

A monthly statement template

Paste this into an email, replace the brackets and the numbers, and send it on the 1st of every month.

Statement of hours: [Client name], 1–30 September 2026

Opening balance (1 September)        6.50 h
Hours added                         40.00 h   September plan renewal, invoice [number]
Hours used                         -38.25 h
Hours expired                        0.00 h
Adjustments                          0.00 h
Closing balance (30 September)       8.25 h

Hours used, by project
  [Project A]                       21.00 h
  [Project B]                       12.75 h
  No project (calls and email)       4.50 h
  Total used                        38.25 h

Your plan renews on 1 October with 40 hours.
Unused hours roll over for 3 months, then expire.
If your balance reaches zero, further work is billed at [rate] an hour on your next invoice.
To add hours before then, reply to this email.

Attached: every entry, with its date, person, description and hours.

Write hours as decimals (1.50 h is an hour and a half), because a client who checks your totals in a spreadsheet can add decimals more easily than hours and minutes.

A page clients can check at any time

A statement arrives once a month, but the client will also ask on the 18th. For the days in between they need a page they can open themselves, showing the current balance and the entries behind it. We built the Timebun client portal to be that page.

How Timebun shows the balance

Timebun tracks your team’s time against each client’s retainers and blocks of hours. You invite people from the client to a portal of their own.

The portal opens on Hours remaining, in large type, with a bar that shows the hours left, used and expired out of everything the client was granted. Under Your hours, each block is listed on its own, whether it came from a plan renewal, a bundle or hours you added. Each one shows the hours left out of the hours it started with, and either its expiry date or no expiry.

The first screen of the client portal: hours remaining, and each block of hours with what is left of it and when it expires.

The entries behind that number are on the Time page, which lists every finished, billable entry on the projects you share with the client, each with its project, date, person, description and hours. The client picks a date range and can export it to CSV. Rates, running timers and non-billable time never appear there.

Timebun also warns the client before the hours run out. When a client’s hours fall to a threshold, it emails everyone at the client who has portal access and every invoice recipient, saying how many hours are left, with a Buy hours button. The threshold is 5 hours by default. You can change it per client, or set it to 0 to turn the warning off. Your Admins and the Owner get an email too. The warning goes out once, and not again until the balance has risen back above the threshold.

Buy hours in the portal lists the bundles and plans you publish. The client picks one and pays on Stripe’s payment page. Each purchase is a real invoice. The hours are added when the payment clears. There’s no approval step, so invite only people who are allowed to spend money with you.

The monthly statement can come from Timebun as well. Turn statements on under Settings → Billing → Retainers and choose monthly or twice a month. Each one goes to the client’s invoice recipients at 8:00 am in your workspace’s timezone, on the morning after the period closes. It shows the opening balance, the hours added, used and expired, any adjustments and the closing balance, with every entry attached as a CSV. The View statement link opens without a sign-in, so a client who never logs in still gets the answer in their inbox. Timebun follows the rule above for edits made after a statement is sent.

The statement covers the first four of the six facts. Each block’s expiry date is on the portal’s first screen. At zero, Timebun keeps tracking and bills the work past zero as overage on the next invoice.

A statement of hours as the client opens it from the email: the summary, the hours added, and the entries behind the hours used.

Our first customer is Lev Legal, a legal support firm that sells blocks of hours to law firms and moved to Timebun from Harvest.

“We can finally sell retainers and packs of hours — and our clients can see exactly where they stand.” — Julia Lewis, Founder, Lev Legal

If you’re still deciding how to price the hours, how to bill clients for hours compares hourly billing, a monthly retainer and a prepaid block.

Frequently asked questions

How often should I tell a client their hours balance?

Once a month, on the same day, before they ask. Twice a month is better for a client who goes through a block quickly. A page they can open themselves covers the days in between.

What should happen when a client’s prepaid hours run out?

Decide before it happens, and print the rule on every statement you write. In Timebun, tracking never stops at zero, and work past zero is billed as overage on the next invoice.

What if I correct an entry after the statement went out?

Leave the sent statement as it is and show the change on the next one as an adjustment, so that every opening balance still matches the closing balance before it.

What can a client see in the Timebun portal?

They see the hours remaining, each block with its expiry date, the finished billable entries on the projects you share, their invoices, their statements and their messages with you. The Time page never shows rates. Running timers and non-billable time don’t appear anywhere.