Most of an invoice writes itself from work you already recorded — which client, which tasks, how many hours. The one number that can't come from the stopwatch is what an hour of your time costs. Put that number in once and every invoice line built from tracked work arrives priced.
Ceum holds an hourly rate in three places: a default on your brand, an override on a client, and an override on a project. Each one is optional, and the same three levels hold an invoicing currency. When a line needs a rate, Ceum reads the most specific level first and stops at the first one that's set.
This walkthrough sets all three up in the order that makes sense — the default first, so the overrides stay rare — then follows a rate through to an invoice line so you can see where the number actually comes from.
The goal
One rate that covers most of your work, a short list of deliberate exceptions, and invoice lines you never have to price by hand.
1. Set the default on your brand
Open Brand & invoicing and fill in Default hourly rate. This is the starting rate for every client and every project you'll ever create — the level everything else falls back to.
Set Invoicing currency in the same place: the currency your invoices are issued in. Leave it on Automatic and it follows your account currency, tracking it as that changes. That account setting, over in General settings, only decides how money is displayed to you in the app — if you think in one currency and bill in another, this is the field that settles the second question.
Neither field starts with a value. A rate nobody chose would quietly become the price of every hour you track, so a new brand has no default until you type one.
2. Override the rate for one client
A client on a different arrangement gets its own number. Open the client from Clients, find Hourly rate and Invoicing currency in the internal section of the form, and set them there.
An empty rate field isn't a gap — it means "inherit". The field says so under the input: Inherits 85 from brand settings while empty. The currency picker's first option reads Automatic (EUR, from brand settings). Both name the level the value is coming from, so a blank field is never a guess.
The client's detail sidebar shows the same pair differently: it shows the value in force, whether the client set it or inherited it, with a note saying which level it came from. A client billed at an inherited rate shouldn't look like a client with no rate.
Writing a per-client override is part of the Plus and Pro plans. Reading one isn't — see step 6.
3. Override the rate for one project
Projects carry the same pair, on the project form under Projects, and they sit one level below the client. A project override beats the client's, which beats the brand default.
Use this for work that prices differently inside an otherwise ordinary relationship — a retainer at a discount, an out-of-hours build at a premium, a fixed-fee phase you want at zero.
One rule is worth knowing: a project can link to several clients, so "the client above this project" is only well defined when there's exactly one link. With one linked client the project form shows that client's rate as what it inherits; with none or several it skips the client level and names the brand default instead. That's a display rule only — invoicing is unaffected, because an invoice names exactly one client.
4. Know what blank, zero, and nothing each mean
Three states look similar on screen and behave completely differently.
- Blank means inherit. The level is skipped and the chain carries on upwards.
0is a real, set rate meaning this is not billed hourly. It stops the chain exactly as85would. A client set to0bills at zero, not at your brand default — deliberate, because falling through to a rate you set months ago would bill a client for work you told them was free.- No rate at any level resolves to nothing, not to zero. There's no account-level hourly rate under the brand, so the chain can genuinely run out. A line built from tracked work then arrives with the price empty for you to type, rather than priced at zero.
Currency never runs out the same way: below the brand sits your account currency, which is always set, so a currency always resolves to a real code.
Nothing is copied down at save time. A client with no rate of its own reads the brand default every time, so changing that default moves every client and project inheriting from it.
5. Watch a rate reach an invoice line
Select some tasks or time entries and use the invoice action — the full flow is in Invoice straight from tasks and tracked time. Each line is priced through the chain you just set up:
- The currency is resolved once for the whole invoice, never per line. An invoice is issued in one currency, so lines can't disagree. The project level feeds that resolution only when every billed line shares one project.
- Each line's rate is resolved on its own, so an invoice spanning two projects can carry two rates. The project supplying a line's rate is the one that actually reaches the client being invoiced.
- Hours become the quantity, rounded to two decimals; a task with no tracked time starts at one unit.
Adding a line by hand works the same way. Linking a task to a line switches it to hours, fills the quantity from the task's tracked time, and fills the unit price from the resolved rate — but only when the line has no price yet, because a figure you typed belongs to you.
Both numbers are captured once, at the moment the line is linked, and then left alone. An invoice you've already sent must not change because somebody logged another hour against the task. When the task moves on, the line grows an amber Refresh from task control, and its tooltip says the task has changed since the line was captured. Pressing it brings the task's current hours across and leaves the captured unit price exactly where it is, so refreshing after a rate change updates the time, not the price. Retype the unit price yourself if that's what you meant.
6. If your plan doesn't cover overrides
The plan gate here is narrower than it looks. The brand default, the whole resolution chain, and the way an invoice line is priced from it are on every plan. What Plus and Pro add is writing an override on a client or a project.
That distinction is what makes a downgrade recoverable rather than a trap:
- An override saved earlier keeps applying. A client saved at 95 still bills at 95.
- Both fields stay on screen showing their saved value, so you can always see what a client bills at. They become inert, with a tooltip naming the plan that covers them.
- Clearing is always allowed. A locked field that holds an override gains a reset control beside it that hands the field back to the level above, and like any other edit it takes effect when you save the form. The two clear independently, so you can drop a currency override and keep a rate.
- Unrelated edits still save. Renaming a client whose rate you can't change isn't refused.
A save is refused only when it would change a stored override to a different value.
What you end up with
One rate at the top that covers the ordinary case, a handful of exceptions set exactly where they belong, and a currency that resolves the same way. From then on the pricing question is answered before you open the invoice form — select the work, and the lines come out with the hours and the right rate already in them. For the field-by-field reference, see Hourly rates and invoicing currency.