Skip to main contentGBOSSTABTime and Billing

Projects

Clients and projectsWhat a project is, when to use one, and per-project rates.

Projects (projects)

A project (internally TAB calls these projects, and you'll see the word in a few places like the Require project firm setting) is a unit of work for a client. "2025 Tax Return", "Q3 Bookkeeping", "SOC 2 Readiness", anything with a name and, optionally, its own billing rate.

When you log time you pick a client first. You can stop there and the entry is billed against the client's default rate. Or you can pick a project under that client, and the entry gets pinned to a specific engagement.

Why use projects

You don't have to use projects. A small firm with simple billing can just log against the client and call it done. Projects unlock:

  • Per-engagement hours. Detail reports surface the project name, so you can see "we spent 14 hours on Acme's 2025 tax return" instead of just "we spent 47 hours on Acme this year."
  • Per-project rates. Each project can carry its own default_hourly_rate_cents that overrides the client's default in the rate resolution chain.
  • Better context in approvals. When a manager reviews a 6-hour entry, "Acme, 2025 Tax Return" tells them more than "Acme."

When projects are required

Your admin can flip a firm setting called Require project on every entry (stored as require_project). When on, the backend rejects any timer start (or manual entry save) without a project picked, and the Start timer modal flips the project field's label from Project (optional) to Project with a red asterisk so the requirement is obvious before submit.

Creating a project

Project creation is desktop-only today. The web UI doesn't have a "new project" button anywhere, not on the Clients page, not in the Start timer modal.

On the desktop client:

  1. Open the desktop app and pick a client in the timer form.
  2. Next to the Project (optional) dropdown, click the + New link.
  3. A modal opens. The client is pre-filled. Type a project name (e.g. "2025 Tax Return") and, optionally, a Default rate (USD/hr) that overrides the client's rate for this project.
  4. Click Create project.

The new project becomes immediately available across every device, the desktop just POSTs to the same backend as the web. The project row has no built-in date range; it's either active or inactive. (The modal doesn't expose the date range, and the schema doesn't have one either.)

Coming soon: creating projects from the web UI. Until then, if your team is web-only, ask whoever has the desktop app installed to add new projects as the work comes in.

Project rates and the resolution chain

A project's default_hourly_rate_cents sits inside the rate resolution chain. When an entry needs a rate, TAB checks rate cards first, then the project rate, then the client rate, then the user rate. Set a project rate when the engagement is priced differently from the client's usual work.

The full chain is documented in Rate cards and how rates are picked.

Related