Back to the blog

January 17, 2026 · 12 min read

Bookkeeping for Professional Services: Retainers, Billable Time and Invoicing

By 909 Bookkeeping

How to keep books for a professional services firm. Track retainers apart from earned income, record billable time by client, tie each invoice to the bank, and keep the monthly income true. Plain English from 909 Bookkeeping.

Trade illustration for this bookkeeping guideA flat illustration of a service contract with a clock and an invoice, showing time and billing tracked for a professional services firm.LEDGER

What professional services books need to track

A professional services firm is not one number. It is the clients you serve, the retainers they paid up front, the hours you worked, the invoices you sent, and the cash that came in. Each part needs its own line so your monthly income stays true.

When you track all of it by client and by project, you can see which clients pay on time and which ones drag. You can see which projects earned their keep and which ones ran over on hours. When you do not, you get one big pile of deposits and no way to tell whether the busy month was a good month.

Professional services covers a lot of firms. Lawyers, consultants, designers, architects, marketing agencies, bookkeepers, engineers. You sell your time and your knowledge. Some clients pay a retainer each month. Some pay by the project. Some pay by the hour. When the books hold the retainer apart from the earned income and the billable time tied to each client, the business makes sense. You can read more about how we keep these lines tied on our bookkeeping page.

Here is what a clean month looks like.

LineWhat it means
Retainer receivedThe cash a client paid before the work
Earned incomeThe work you actually finished and billed
Billable timeThe hours you tracked by client
Invoice sentThe bill you sent for the work
Cash collectedThe cash that landed in your bank
Net per projectWhat the project really earned after the time it took

When the retainer and the earned income sit on their own lines, your monthly profit is real. When they sit together, a big retainer looks like a great month and the work you still owe hides.

How retainers show up in your books

A retainer is cash a client pays before you do the work. You hold it. You earn it as you go. When you finish the work, the retainer turns into income.

The clean way is to book the retainer to a retainer liability account when it arrives. The cash lands in your bank. The retainer sits on your balance sheet as a liability, not as income. You have not earned it yet. As you do the work and send an invoice, you move the earned amount from the retainer liability to earned income. The liability drops. The income goes up. When the retainer is used up, the liability is zero and the income is real.

The messy way is to book the retainer straight to income the day it arrives. Now your income looks great the week the check comes in and terrible the weeks you do the work. You can not tell what you earned and what you still owe. You can read more about how we handle prepayments in our prepaid service plans guide. The same idea works for a professional services retainer.

Here is how to keep the retainer clean.

  • **Book the retainer to a liability account: ** not to income.
  • - **Move the earned amount to income as you bill: ** so the income is real.
  • - **Track the retainer balance by client: ** so you know what you still owe.
  • - **Watch for retainers that run out: ** a client who uses more time than they paid needs a new retainer.
  • - **Match the retainer deposit to the bank: ** so the cash is true.

When the retainer sits in a liability account, your income is true. When it goes straight to income, the books look good the week you get paid and wrong the weeks you do the work.

How billable time shows up by client

Billable time is the hours you work and charge for. Each hour ties to a client and a project. The time is the cost of the work, even when you do not write a check for it.

The clean way is to track each hour by client and by project. You bill the client for the time. The hours go on the project. The invoice goes to the client. When you run the profit and loss by client, each one shows their own time total. You can see which client eats your hours and which one runs on budget. The time tells you whether the project made money before the invoice goes out.

The messy way is to track time on a separate sheet that never touches the books. You bill the client. The hours never show. You can not tell if the flat fee covered the time or if the project ran over. You can read more about how we tie time to the books in our cost codes and projects guide. The same idea works for billable time.

Here is how to keep billable time clean.

  • **Track each hour by client and project: ** so the time sorts by who you worked for.
  • - **Bill the time on the project invoice: ** so the income ties to the hours.
  • - **Run the profit and loss by client: ** so each client shows their own time total.
  • - **Watch for projects that run over on hours: ** a project that eats more time than it bills needs a closer look.
  • - **Compare the billed hours to the invoiced amount: ** so you can see if the fee covered the work.

When the time ties to the client, your project profit is real. When it floats on a separate sheet, the true cost of the work hides.

How invoicing works

An invoice is the bill you send for the work. The invoice is where the earned income shows up. Each invoice needs to tie to the client and the project.

The clean way is to send the invoice tagged to the client and the project. The earned amount goes to earned income. If the client paid a retainer, the earned amount also drops the retainer liability. The invoice shows on the accounts receivable until the client pays. When the cash arrives, it clears the receivable and lands in the bank. The income, the receivable, and the bank all tell the same story.

The messy way is to send the invoice and book it to a general sales line with no client tag. Now you can not sort by client. You can not tell which client pays on time and which one is late. You can not see which project the invoice belongs to. You can read more about how we tie invoices to the right line in our garage door and locksmith service calls guide. The same idea works for a professional services invoice.

Here is how to keep invoicing clean.

  • **Tag each invoice to the client and project: ** so the income sorts by who you billed.
  • - **Book earned income when you send the invoice: ** not when the cash arrives.
  • - **Drop the retainer liability when you bill against it: ** so the liability stays true.
  • - **Track the invoice in accounts receivable: ** so you can see what is still owed.
  • - **Clear the receivable when the cash lands: ** so the bank and the books agree.

When each invoice ties to the client, your income is true. When it floats in a general sales line, the client story hides in one pile.

How to match each invoice to the bank

Every invoice has to match the bank. The client pays you. The cash lands in your account. The books need to tie the two together.

The clean way is to match each invoice to the bank deposit the day it clears. The amount in the books agrees with the amount that hit the bank. When a client pays on a card, the deposit lands net of the card fee. When a client pays by check, the deposit lands whole. When a client pays late, the deposit lands in the right month, not the month you billed. The bank and the books always agree.

The messy way is to book the invoice and never match it. Now the books show income that may or may not have cleared. A late payment sits in the wrong month. A client who disputed the invoice still shows as paid. You can read more about how we match invoices to the bank in our courier and delivery guide.

Here is how to keep the match clean.

  • **Match each invoice to the bank deposit: ** the day it clears.
  • - **Watch for card fees: ** a card payment lands net, so split the fee out.
  • - **Watch for late payments: ** a payment that clears late goes in the right month.
  • - **Watch for disputed invoices: ** an invoice a client will not pay should not stay as income.
  • - **Reconcile the bank each month: ** so the cash total agrees with the bank.

When each invoice matches the bank, your cash is true. When they float untied, the income drifts and the real profit hides.

How the month end close works

At month end, every client and every project needs its lines added up. The retainers received, the earned income, the billable time, the invoices sent and the cash collected all pull together. The income shows what you earned. The costs show what the work took. The net shows what the projects really made.

We start with the bank. We match each invoice to the deposit that cleared. We split the card fees from the net cash. We move the earned amount from the retainer liability to earned income for each project billed against a retainer. We tag every invoice to the client and the project. We run the profit and loss by client so each one shows in their own column. We send you the profit and loss, a balance sheet, and a cash summary. The retainer liability and the earned income sit inside the report, side by side.

Here is a simple month end check.

  • **Match each invoice to the bank: ** every deposit cleared.
  • - **Move earned amounts from retainer liability to income: ** for each project billed against a retainer.
  • - **Split the card fees from the net cash: ** so the fee shows on its own.
  • - **Tag every invoice to the client and project: ** so the profit and loss sorts by client.
  • - **Check the retainer liability balance by client: ** so you know what you still owe.
  • - **Run the profit and loss by client: ** so each client shows their own column.

When the close runs every month, the client story stays clear. When it skips a month, the retainers stack up and the next month is harder to close.

A situation we clean up

The retainers that all looked like income

A consulting firm bills clients on monthly retainers. Every retainer check goes straight to income the day it arrives. The billable time is tracked on a separate sheet that never touches the books. The invoices go to a general sales line with no client tag. At month end, the owner can not tell what each retainer balance is, which client pays on time, or which project ran over on hours. The income looks great the week the retainers come in and wrong the weeks the firm does the work.

Here is how we handle it. We set up a retainer liability account in QuickBooks Online. We go back through the open months and move each retainer from income to the liability account, tracked by client. We set up class tracking and create one class for each client. We move each invoice to an earned income line tagged to the client class. We match each invoice to the bank. When we are done, the owner can run the profit and loss by class and see each client in their own column, and the balance sheet shows the retainer still owed by each client. We set up a rule so the next retainer goes to the liability account and the next invoice carries the right class from the start.

Mistakes we fix

  • Every retainer booked as income the day it arrives instead of as a liability
  • No retainer liability account set up at all
  • Billable time tracked on a separate sheet that never touches the books
  • No class or client tag on invoices so no way to sort by client
  • Earned income booked when the cash arrives instead of when the invoice is sent
  • A disputed invoice still sitting as income after the client will not pay
  • A late payment sitting in the wrong month because it was never matched to the bank
  • Card fees buried inside net sales instead of on their own line
  • The retainer balance never checked by client so the firm does not know what it still owes
  • No profit and loss by client run at month end

Common questions

How do I record a retainer? Book the retainer to a retainer liability account when it arrives, not to income. As you do the work and send invoices, move the earned amount from the liability to earned income. The balance sheet shows what you still owe. The income shows what you actually earned.

How do I track billable time by client? Track each hour by client and project. Bill the time on the project invoice tagged to the client. Run the profit and loss by client so each one shows their own time total. Compare the billed hours to the invoiced amount so you can see if the fee covered the work.

How do I match an invoice to the bank? Match each invoice to the bank deposit the day it clears. Watch for card fees that come out before the deposit and for late payments that clear in the wrong month. Reconcile the bank each month so the cash total agrees with the bank.

How do I handle a retainer that runs out? Track the retainer balance by client. When the balance drops, the client has used up their retainer. Bill the next invoice for the extra time or send a new retainer request. The liability account shows when the retainer is gone.

Ready for books that close on time?

Free 20-minute call. We reply with a fixed quote within one business day.

Book a callCall