Features
Everything a studio bills with, in one plan.
Nothing below is reserved for a higher tier, and nothing below is metered. What follows is how each part behaves at the edges, since that is where a billing tool either holds or quietly loses money.
Tracking time
Two ways to record an hour, because people work in two ways.
- A running timer
- One at a time per person, enforced by a unique index rather than by hoping.
- A weekly grid
- Project and task down the side, days across. Fill it in on Friday if that is how you work.
- Hours as you think of them
- Type 7:15 or 7.25. An unparseable value leaves the previous figure alone rather than storing zero.
- Several entries a day
- The same task twice on one day, with different notes, stays two entries and shows as their sum.

Approvals
A week is the unit, and a rejection carries a reason.
- Submit a week
- Not an entry at a time. A week belongs to a person and is reviewed as one thing.
- Approve or send back
- Sending back requires a comment, refused in the database and not merely in the form.
- Approved time locks
- It stops being editable, because it is about to be invoiced.
- Reported on, not just recorded
- See unapproved billable value as a figure, so you know what approval is holding up.

Invoicing
From tracked time, or written by hand, and immutable once sent.
- Built from time
- Choose a period, projects and people; group by task, person, project or entry.
- Non-billable at zero
- Pull goodwill onto the invoice as a no-charge line, so the client sees what they were not charged for.
- Totals computed by trigger
- The client never posts a total. A total nobody can reconcile against its lines is a number to distrust.
- Sent means sent
- Line items freeze. Void and reissue leaves a record; a silent edit leaves two versions and no trace.
- A link for the client
- A public invoice on an opaque token, so the person paying does not need an account.
Rates, cost and margin
What an hour bills for, what it costs you, and what is left.
- Rates resolve most-specific-first
- Person on this project, then task on this project, then the project, then the person, then the task default.
- Stamped at write time
- Resolved once in the database, so tracking and invoicing cannot disagree about what an hour was worth.
- Effective-dated, never overwritten
- A raise is a new row with a later date. Last year's margin stays last year's margin.
- Cost rates come from the person
- Not from the task. What somebody costs per hour does not change because they switched jobs for an afternoon.

Clients and what they owe
Who you work for, in their own currency, with the overdue money called out.
- Each client bills in their currency
- Set per client. Totals are never added across currencies into one figure.
- Outstanding and overdue, separately
- Overdue is coloured and labelled, so a page can be scanned for problems.
- Archived, never deleted
- A client whose invoices exist stays referenceable forever; archiving just removes them from pickers.
- Contacts for addressing invoices
- One primary per client, enforced by a unique index.

Expenses
Costs that belong to a job, on the same invoice as the hours.
- Categories and receipts
- Recorded against a project, with the receipt attached.
- Billable or absorbed
- Mark up, pass through at cost, or carry it yourself.
- On the invoice
- Alongside the time, in the client's currency.

Reports
Filtered, saved, and honest about currency.
- Filter by anything that matters
- Client, project, person, task, billable state, approval state, date range.
- Bucketed per currency
- Never summed into one figure across currencies, because that figure would be meaningless.
- Utilization against capacity
- Weekly capacity per person, scaled to the period. Somebody with no capacity recorded returns null, not zero.
- Unpriced and stranded time
- Billable hours with no rate, and billable work nobody has invoiced.

How the arithmetic is done
The parts that would be invisible if they were wrong.
Money is exact, never a float
Every amount is stored in minor units with its ISO currency code and added with exact arithmetic. Rounding happens in one place, and only where someone has named the mode.
Currencies refuse to mix
Adding dollars to euros throws rather than quietly producing a number. Reports bucket per currency, because a single total across currencies is a lie.
Rates are effective-dated
A raise today does not rewrite what a client was billed last year. The rate is stamped onto the entry when it is written, so a historical invoice keeps reproducing the figure actually charged.
Sent invoices do not change
Once a client has a copy, its line items are immutable. Void and reissue leaves a record; a silent edit leaves two versions and nothing saying they differ.
What is deliberately missing
Each of these ships in a competing tracker’s higher tier. None is on a roadmap here.
No screenshots
We do not photograph anyone's screen. A timesheet is a record of work, not evidence against the person who did it.
No GPS or location tracking
Where somebody was standing is not an input to an invoice.
No activity or idle monitoring
Keystroke counts and mouse movement measure compliance, not value, and the studios buying this bill for judgement.
Nothing is ever logged automatically
We will suggest a meeting that has no entry against it. We will never write the entry for you. That line is the difference between helpful and surveillance.