Not all clients pay the same rate. That's just the reality of an independent consulting practice. You might charge one client $95 an hour because the work is straightforward and the relationship is long-standing. Another client gets billed at $145 because the work is specialized, the timeline is tight, or frankly because that's what the market bears. A third client has a negotiated blended rate for a mix of onsite and remote support.

Managing this in your head — or worse, in a spreadsheet you update manually — is the kind of thing that quietly costs money over time. Apply the wrong rate once and you might catch it. Apply it consistently across a dozen invoices over six months and you probably won't.

Zoho Books doesn't have a built-in "per-client hourly rate" field. It's not a gap that's obvious when you first set up your account, because for simple invoicing it doesn't matter. But for an hourly consultant with a varied client base, it matters a lot. This post covers every approach available in Zoho Books for handling per-client rate overrides, how each one works in practice, and the setup that actually scales.

Why Zoho Books doesn't just have a rate field on contacts

Zoho Books is accounting software designed for a broad range of businesses — product sellers, service businesses, subscription companies, consultants. Its contact records are built to store billing and payment information: address, currency, payment terms, tax treatment. Hourly billing rates are too specific to the consultant use case to be a standard field.

That said, Zoho Books is extensible. Custom fields can be added to contacts, and those fields are readable via the Zoho Books API, which means you can build a system where a client's rate lives on their contact record and gets applied automatically when you invoice. It just takes a bit of setup. Let's go through the options.

Option 1: Manually edit the rate on each invoice

The simplest approach and the one most people start with. When you create an invoice line item in Zoho Books, the rate field is editable. You type in the correct number for that client, create the invoice, move on.

This works. For two or three clients it's perfectly manageable. The problem is that it relies entirely on you remembering the correct rate for every client every time. That's fine when you have three clients. It becomes error-prone at six, and genuinely risky at ten or more. There's no system — just your memory and the invoice form in front of you.

The other problem is that this approach doesn't scale to any kind of automation. If you're pulling calendar events into invoices automatically, the automation needs to know the rate. "I'll type it in manually" defeats the point.

Option 2: Create a separate item per client

Zoho Books lets you create items (products and services) with fixed prices. One approach is to create a dedicated item for each client — "Onsite Support — Acme Corp" at $125/hour, "Onsite Support — Riverside Clinic" at $95/hour — and use the appropriate item when building each invoice.

This is slightly better than pure manual rate entry because the rate is stored somewhere persistent. But it creates a sprawling item list that's hard to manage, and it still requires you to manually select the right item for the right client every time. It also doesn't handle the common scenario where a single client has different rates for different types of work — you'd need a matrix of items that grows quickly.

It's a workaround, not a solution.

Option 3: Custom fields on contact records (the right approach)

This is the setup that actually scales, and it's what I use. The idea is to add custom fields directly to Zoho Books contact records — one field per billing type — and store each client's specific rates there. When you build an invoice, the rate comes from the client's contact record rather than from your memory or a manual selection.

Here's how to set it up.

Step 1: Create your custom fields in Zoho Books

STEP 01

Add custom rate fields to Contacts

In Zoho Books, go to Settings → Preferences → Contacts. Scroll down to the Custom Fields section and click + New Custom Field. You're creating fields that will appear on every contact record — the ones you fill in only for clients who have non-default rates.

Create a field for each billing type you use. For a typical IT consulting practice, that's three: one for onsite work, one for offsite/remote work, and one for service call fees. Name them clearly — something like Onsite Rate, Offsite Rate, and Service Call Fee. Set the data type to Number (or Decimal if you use fractional rates). Leave them blank on contacts where your default rate applies.

Step 2: Set rates on each client contact

STEP 02

Populate rates on client records

Open each client's contact record in Zoho Books and scroll to the custom fields section. Enter the client's specific rates in the relevant fields. Leave a field blank if that client pays your default rate for that billing type — you only need to enter values where a client differs from your baseline.

This is a one-time setup per client. Once the rates are on the contact record, they stay there until something changes — a rate renegotiation, a contract renewal, a scope change. When a rate changes, you update it in one place and every subsequent invoice picks up the new number automatically.

Step 3: Reference the custom fields when building invoices

STEP 03

Apply rates at invoice time

With rates stored on contact records, you now have a reliable source of truth to reference when building invoices. If you're creating invoices manually in Zoho Books, open the client's contact record first, note their rates, then build the invoice with the correct numbers. It's still a manual step, but the rates are at least stored somewhere consistent rather than living in your head.

The real payoff comes when you connect this to an automated billing workflow — which is where the custom fields become genuinely powerful. More on that below.

Managing rate changes over time

One of the underrated advantages of the custom field approach is how cleanly it handles rate changes. When you increase your rates — annually, or when a contract renews — you update the field on the affected contact records. Done. Every invoice built after that point uses the new rate. There's no spreadsheet to update, no item list to edit, no mental model to revise.

It's also audit-friendly. If a client ever questions a rate on an invoice, you can point to their contact record in Zoho Books and show exactly what rate was set at the time. There's a clear record.

The discipline of keeping rates on contact records rather than in your head is one of those small habits that has an outsized impact on billing accuracy over time.

What about clients billed in different currencies?

If you have international clients, Zoho Books handles multi-currency billing natively — you set the currency on the contact record and Zoho applies it to all invoices for that client. Per-client hourly rates work the same way regardless of currency. Set the rate in whatever currency that client is billed in, and Zoho Books handles the rest.

One thing to be aware of: if you're a Canadian consultant billing some clients in CAD and some in USD, your custom rate fields will store numbers without a currency symbol. Make sure the rates you enter match the currency set on that contact — $125 CAD and $125 USD are very different things, and Zoho Books won't catch a mismatch between a field value and a contact's currency setting.

Handling multiple billing types per client

This is where simple rate management gets complicated for a consultant who charges differently for different types of work. Onsite visits might be billed at one rate. Remote support at another. Emergency calls might carry a flat service call fee plus an hourly component on top.

The custom field approach handles this cleanly because you create a separate field for each billing type. A client's contact record might show:

Each field is independent. A client who only ever gets remote support might only have the Offsite Rate filled in. A client who gets everything might have all three. The fields that aren't filled in fall back to your default rates — so you only ever enter values where a client deviates from your baseline.

Manually applying three different rates per client across multiple invoice line items is where the manual approach really breaks down. You're making three separate rate decisions per client per invoice — and getting any one of them wrong is easy when you're moving quickly at the end of a billing cycle.

The problem that remains: applying the rates automatically

Setting up custom fields on contact records solves the storage problem — rates are now in a consistent, reliable place. But it doesn't solve the application problem. When you sit down to build an invoice, you still need to look up the client's rates and enter them correctly. The data is better organized, but you're still the one moving it from the contact record to the invoice.

For consultants building invoices manually in Zoho Books, this is a meaningful improvement over working from memory. But if you're billing hourly from a calendar — processing multiple events per client, across multiple clients, every billing cycle — you want the rates applied automatically. You want a system that reads the client's contact record, retrieves the correct rate for each billing type, and builds the invoice line items without you doing the arithmetic.

That's exactly what Cal2Bill does.

How Cal2Bill uses your Zoho Books custom rate fields

Cal2Bill connects directly to your Zoho Books account and reads the custom rate fields on each client's contact record. When you build an invoice for a client, Cal2Bill pulls their calendar events from Outlook, identifies the billing type for each event based on Outlook category labels, looks up the correct rate from the client's Zoho Books contact, and applies it — automatically, correctly, every time.

If a client has an Onsite Rate of $135/hr set on their contact record, every onsite calendar event for that client is billed at $135. If their Offsite Rate is $95/hr, remote events are billed at $95. If a field is blank, Cal2Bill falls back to your default rate. No manual rate lookup. No arithmetic. No wrong numbers.

The setup is a one-time process during Cal2Bill onboarding: you name your custom fields (or accept the defaults), Cal2Bill creates them in your Zoho Books account, and from that point forward rates live on contact records and are applied automatically at billing time. When you renegotiate a rate with a client, you update their Zoho Books contact. The next invoice Cal2Bill builds for them picks up the new number without you doing anything else.

This is the full picture of how per-client rate management should work for an hourly consultant. The rates are stored once, maintained in one place, and applied without manual intervention every time you invoice. Zoho Books provides the storage. Cal2Bill provides the automation that makes those stored rates actually useful.

Putting it all together

If you're managing per-client billing rates in Zoho Books today, here's the setup I'd recommend regardless of whether you use Cal2Bill:

  1. Create custom fields on Contacts in Zoho Books Settings — one per billing type. Name them clearly. Set the data type to decimal.
  2. Populate rates on every active client contact where their rate differs from your default. Leave blank where defaults apply.
  3. Treat the contact record as the source of truth for that client's rates — not your memory, not a spreadsheet, not a sticky note.
  4. Update the field when a rate changes — one edit, one place, done.

That setup alone will improve your billing accuracy and reduce the mental overhead of rate management. If you're also building invoices from Outlook calendar events, Cal2Bill takes that infrastructure and makes it fully automatic — the rates you've stored get applied at billing time without you touching them.

The 15-day free trial gives you full access to test it against a real billing cycle. Connect your Outlook and Zoho Books accounts, let Cal2Bill read your calendar, and watch it apply your per-client rates correctly the first time — and every time after that.

Guido Derlagen, ITontheSpot