Two values decide what billable work is priced at: an hourly rate and an invoicing currency. Each can be set in three places — on a project, on a client, and as a brand default — and every one of them is optional. When something needs a rate or a currency, Ceum walks those places from the most specific one upwards and uses the first that is set. The currency has one more fallback below all three: your account currency.
The resolution order
| Value | Order |
|---|---|
| Hourly rate | project → client → brand default → no rate |
| Invoicing currency | project → client → brand → your account currency |
The two chains differ at the end, and the difference matters. A currency always resolves to a real code, because your account currency is the last step and is never empty. A rate can resolve to nothing at all: there is no account-level hourly rate, so when no level sets one the answer is "no rate", not a number.
Nothing is copied down. A client with no rate of its own does not hold a stale snapshot of the brand default — it reads the brand default every time. Change the brand default and every client and project inheriting from it changes with it.
Blank means inherit; zero does not
An empty Hourly rate field and an Automatic invoicing currency both mean "inherit from the level above". They are not values; they are the absence of one.
A rate of 0 is different. It is a real, set rate meaning this is not billed hourly, and it stops the chain exactly like 85 would. A client set to 0 bills at zero, not at the brand default. This is deliberate — a deliberate "no hourly charge" is a real answer to the question, and falling through to a rate somebody set months ago would quietly bill the client for work they were told was free.
The reverse holds too. When no level sets a rate, a line built from tracked work arrives with no price at all rather than a price of zero, and you type the figure yourself. Writing a zero there would turn "the rate is unknown" into "this work is free".
Where each level is set
- Brand default — Brand & invoicing. Default hourly rate is the starting rate for every client and project. Invoicing currency is what new invoices are issued in; leave it on Automatic to follow your account currency, which it then keeps tracking as you change it.
- Client — the Hourly rate and Invoicing currency fields in the internal section of the client form.
- Project — the same pair on the project form.
On the client and project forms both fields name what they would inherit and where it comes from, so a blank field is never a guess. The rate field's help text reads "Inherits 85 from the client while empty."; the currency picker's inherit option reads "Automatic (EUR, from brand settings)". The level is named in words — the project, the client, brand settings, account settings, or nowhere when no rate is set anywhere.
Client and project detail sidebars show the same pair, but they show the value in force rather than an empty field, with a note saying which level it came from. A project being billed at an inherited rate should not look like a project with no rate.
A project linked to more than one client
A project can link to any number of clients, so "the client above this project" is only well defined when there is exactly one link. That is the rule the project form applies:
- Exactly one client — the project inherits that client's rate and currency.
- No clients, or several — the project inherits from the brand defaults instead.
With two clients there is no honest answer to show: picking one of them would present a value nobody chose, and averaging two rates would invent a number that exists nowhere. So the form skips the client level entirely.
This affects only what the project form and sidebar display. Invoicing is unaffected, because an invoice names exactly one client — so at invoice time there is always a single client override to consider.
Your account currency is not your invoicing currency
The Currency setting in General settings is your account display currency: it decides how amounts are formatted for you across lists, forms, totals and exports. See Currency formatting.
It is deliberately not the invoicing currency. It appears in the currency chain in one role only — as the floor, the value used when the brand, the client and the project all leave the currency on Automatic. If you think in one currency and bill in another, set the invoicing currency on Brand & invoicing and leave your account currency alone.
How a resolved rate reaches an invoice line
Creating an invoice from selected tasks or from tracked time prices each line through the same chain:
- Currency is resolved once for the whole invoice, never per line. An invoice is issued in a single currency, so lines cannot be allowed to 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 a multi-project invoice can carry two different rates. The project that supplies a line's rate is the one that actually reaches the client being invoiced — a task sitting in two projects belonging to two different clients contributes its rate from the project on this invoice's side, and the other project is ignored.
- Hours become the quantity, rounded to two decimals; a task with no tracked time starts at one unit.
- No rate anywhere leaves the line's unit price and amount empty for you to fill in.
Adding a line by hand and linking it to a task prices it the same way, so a line typed into the editor and a line prefilled from selected work agree — with one difference: the resolved rate fills a hand-added line's unit price only when the line does not already have one. A price you typed is never overwritten by the link.
Both routes capture the rate once, when the link is made. Refresh from task brings the task's current hours across but leaves the captured unit price where it is, so refreshing an invoice after a rate change updates the time, not the price. Retype the unit price yourself if that is what you meant. A line you price as a flat amount ignores the chain altogether. See Invoicing workflow.
Rates, currency and your plan
Setting an override on a client or on a project is part of the Plus and Pro plans. Everything else here is on every plan: the brand defaults, the whole resolution chain, and the way an invoice line is priced from it.
The gate is on changing an override, not on having one. Concretely:
- An override already saved keeps applying after a downgrade. It is not dropped, ignored, or stripped out of what you see. A client saved at 95 still bills at 95.
- Both fields stay on screen and keep showing the saved value, so you can always see what a client or project bills at. They become inert, with a tooltip naming the plan that unlocks them.
- Clearing an override is always allowed, whatever your plan. A locked field that actually holds an override gains a reset control beside it, which hands the field back to the level above; a field that never overrode has nothing to clear and shows no control. The two fields clear independently, so you can drop a currency override and keep a rate.
- Saving an unrelated change is always allowed. Renaming a client whose rate you cannot edit is not refused — the check compares what is being sent against what is already stored, so an unchanged value passes untouched.
A write is refused only when it would genuinely change a stored override to a different value. Creating a client or project that carries an override is the same case, and is refused for the same reason.
Tips and edge cases
- Clearing a field is a save like any other. Emptying the rate or setting the currency back to Automatic only takes effect when you save the form.
- An empty rate at every level is a valid setup. Lines arrive unpriced and you fill them in; nothing is blocked.
- Budgets follow the project's currency. A project's budget is read in its invoicing currency, or your account currency when that is inherited. See Projects.
- An invoice can still be pinned. The invoice form's currency starts on Automatic and follows the client or project you pick, naming which one; choosing a code yourself pins that invoice regardless of the chain.
- Mobile sets the same fields. The brand screen, the client form and the project form all carry the hourly rate and invoicing currency, and resolve through the same chain. One difference: a project's detail row on mobile says a value is inherited without naming the level, because the row does not hold the project's clients; the project form names it.