Money
Pricing work
Hours, expenses, incidents and fixed fees become invoice lines, through rates that are scoped, dated and chosen by a person.
Time recording answers what somebody did. This answers what it is worth. The two are deliberately separate: a rate lives on the billing side, where an invoice is raised, rather than on the record of what somebody did — put it on the record and every screen showing a timesheet starts showing money, to everybody who can see a timesheet.
A rate is a number per hour, and nothing more
Retainers, block hours, included allowances, caps, minimum billing increments and fixed-fee phases are contract terms. They are not here, and that is deliberate — a product that guesses at any of them produces an invoice somebody has to apologise for. What is here is a rate: scoped, dated, and chosen by a person.
Where the screen starts
Finance → Billing opens on unbilled work by client, with what it is worth beside how long it took. That is the question somebody actually has — who owes us an invoice — and a screen that opened on an empty form would need them to already know the answer. The work that never gets billed is exactly what nobody thought of.
Desk time is counted too. A ticket belongs to no project, so leaving it out would silently drop the hours least likely to be missed — they were never on a board. So are expenses and fixed fees, which belong to neither.
Value is beside hours, not instead of them
A client owed an invoice for two expenses and a fixed fee has no hours at all, and a screen showing only minutes would say nothing about them. Values are listed per currency and never converted; anything nothing could value is counted rather than hidden.
How a rate is chosen
A rate can name a project, a client, a person, or a person at one of those. The most specific one that matches wins.
| Scope | Beats | Typical use |
|---|---|---|
| A person on a project | everything below | A senior rate written into one statement of work |
| A project | a client rate | A statement of work with its own price list |
| A person for a client | a client rate | One named consultant on that account |
| A client | a person's general rate | What you agreed with them overall |
| A person | the general rate | Somebody's standard rate across everything |
| Nothing set | — | The house rate |
A rate scoped somewhere else is never a fallback
Another client's rate is an answer about a different contract, not a worse answer about this one. It is not used, at any specificity — the same rule tax rates, SLA policies and leave jurisdictions all follow. A plausible wrong rate is the one that gets invoiced and then argued about.
Dates
A rate applies from a date and optionally until one, and the rate used is the one in force on the day the work was done — never today. A rise in July does not restate June's hours, however late they are billed.
Two rates competing for the same work are refused when you save
Two rates at the same scope, in the same currency, overlapping in time means one of them never applies — and a rate that silently never wins reads as the feature being broken. The save is refused and names the one already covering that period.
Currency
A rate carries a currency, and it is a filter rather than a tiebreak. Converting would invent an exchange decision nobody made; offering it would put two currencies on one invoice. Time whose rate is in another currency is reported as such, and that message is deliberately different from *no rate at all* — the two are fixed differently.
What can be billed
An hour is one of several things a client can be charged for. An expense, an incident and a fixed fee are the others, and none of them has minutes — so each reaches a line in its own shape rather than being made to look like time.
| What it is | How it appears on the line | Where the price comes from |
|---|---|---|
| Recorded hours | Hours at an hourly rate | The rate in force on the day the work was done |
| An incident, or a count of something | The count at a price per one | A price named in the agreement |
| An expense, a fixed fee, an adjustment | One of itself, at its own value | The amount itself, plus any markup |
An expense is not an hour
Fifty pounds of flights is worth fifty pounds; there is no quantity and no rate that produce it. Expressed as time it would print *0.001 h at 50,000.00* — the same figure, and unreadable. Hours and counts never share a line either, because a line carries one quantity and one price.
What appears on the document
- 1
Pick a client and a period
And how you want the lines gathered: per item or ticket, per project, per person, or one line for everything.
- 2
Look at the preview
Every line, the hours behind it, the rate, and what it comes to. Plus anything that could not be priced, named individually.
- 3
Raise a draft
It becomes an ordinary draft invoice. Everything after that — issuing, numbering, tax, the PDF, the ledger posting — is the invoicing path already there.
Unpriced time is named, never billed at zero
An hour nobody set a price for is a question for a person. Both wrong answers are silent: zero writes off work that was done, and a fallback rate puts a number on the document nobody agreed to. It is listed with the date, the person and the reason instead.
What is delivered but not invoiced
The commonest arrangement bills none of the work: a subscription, or a flat monthly fee, with no correlation to any hour or ticket. So the preview reports what it is keeping off the document, and which decision kept it off — never as one lump.
| Why it is not on the document | What it means |
|---|---|
| Covered | It drew down something finite — a retainer, a block of hours |
| Included | The flat fee covers it, and nothing was depleted |
| Absorbed | Above a cap the agreement says is not chargeable |
| Not chargeable | Somebody decided, and said why |
| Already billed | An earlier run took it |
Covered and included are not the same fact
One depleted an allowance and the other did not. Merged, a client on a flat fee reports as having consumed nothing at all — which is exactly the client most likely to ask what they got for the money.
Because of that, a run that finds nothing to bill says which of three things happened: there was nothing at all, nothing could be valued, or the arrangement with that client already accounts for it. Told the first when it was the third, somebody reads the run as broken rather than the retainer as working.
One line carries one rate
Two people on one project at two rates are two lines however you asked for them gathered, because a line has a single unit price. Where that would put the same label on the page twice, the line says whose rate it is — one label appearing twice at two prices invites exactly one question.
Why the hours on a line do not always multiply out exactly
A minute is not expressible in thousandths of an hour — a sixtieth is 16.666… — so the quantity rounds, and the line total is worked out from the rounded quantity rather than from the minutes. The document then adds up as printed, which is what matters when a client multiplies the two numbers in front of them. Minutes are summed per line first, so it rounds once.
What happens to the hours
Anything picked up by a run is marked as billed against that document and will not appear in another, and the hours underneath are locked so nobody edits them under an invoice a client is already holding. It all happens inside the same transaction that creates the draft, so two people raising the same period at once cannot both bill the same hour — one of them is refused and nothing is raised.
Voiding gives the work back. A credit note does not.
A void says the document should not have existed, so everything on it returns to the pool. A credit note says it did exist and is being reversed commercially — releasing there would put the same hours in the next run without anybody asking, which is how a client is billed twice for one afternoon.
Two things that are refused
- A rate of zero
- Free work is recorded by marking the time unbillable, where it stays visible as work that was done. A zero rate puts a line reading 0.00 on a document, which reads as a mistake nobody can explain.
- A project and a client together
- A project already belongs to one, so naming both is either redundant or a contradiction that matches nothing — which reads as the rate being ignored rather than wrong.
Who can do what
| Action | Needs |
|---|---|
| See unbilled time and the rates | finance:view |
| Raise a draft from recorded time | finance:edit |
| Add, change or remove a rate | finance:configure |