Who can use this: anyone with the right permission on a project — staff log their own time, approvers review submissions, project owners view customer-side approvals. URL / Route: time entries live under a project:
/finance/projects/{project}/time(finance.projects.time.index). Detail:create,store,edit,update,submit,destroy. Approval:time.approval.index,approve,reject. Customer-side:time.customer-approval.index. Plan / feature gate:feature:tracker.manage_projectsANDfeature:tracker.timesheets. Approval queue additionally requiresfeature:tracker.time_approval. Permissions:timesheets.view,timesheets.create,timesheets.approve.
Purpose
Timesheets let staff log hours against a project, optionally with a billable rate, so the hours can be:
- billed to the customer via a time-and-materials invoice,
- costed against the project's budget for profitability reporting,
- approved by a project lead (and optionally the customer) before being locked.
Every time entry lives under a specific project — there is no global timesheet; you always log time to a project. See Projects & Finance for the project setup that has to exist first.
Step by step
Browse time entries for a project
Open the project, then click Time in the side tab. Each row shows the date, person, task / description, hours, rate (if billable), total, and status (Draft / Submitted / Approved / Rejected / Invoiced).
Log time
Route: finance.projects.time.create / store. Permission: timesheets.create.
- Click Log time.
- Set the Date.
- Pick the Person (defaults to you).
- Pick the Task or service item, if the project uses tasks.
- Enter the Hours (decimal — e.g.
1.5for 1h 30m). - Billable / Non-billable toggle. Billable lines also need a Rate, which defaults from the task / person rate set on the project.
- Add a Description of what was done.
- Save as Draft, or Save and submit.
Submit for approval
Route: finance.projects.time.submit. Permission: timesheets.create.
If the project has approval turned on (feature:tracker.time_approval), entries must be submitted before they can be invoiced or counted in profitability. Submitting locks the entry and sends it to the approver queue.
Approve / Reject (project lead)
Route: finance.projects.time.approval.approve / reject. Permission: timesheets.approve.
The approver opens the project's Time approval tab — every submitted entry is listed. Approve marks the entry ready; Reject sends it back with a note so the submitter can edit and resubmit.
Customer approval view
Route: finance.projects.time.customer-approval.index. Permission: timesheets.view.
For projects where the customer signs off on time before invoicing, this read-only view shows every approved-but-not-yet-invoiced entry grouped by week. Share the link with the customer's portal user or export it as a PDF for them to sign.
Invoice approved time
When you create a time-and-materials invoice for the project, you can pick Pull approved time — Solabooks lists every approved-and-not-yet-invoiced entry and lets you tick which to bill. Selected entries become invoice lines (description, hours, rate) and are marked Invoiced so they aren't billed twice.
Edit / Delete a draft
Route: finance.projects.time.edit / update / destroy. Permission: timesheets.create.
Draft entries are freely editable / deletable. Submitted, Approved, or Invoiced entries are read-only — ask the approver to reject (which sends them back to Draft) or void the invoice.
Common mistakes
- "My approved time isn't on the invoice." Approved time stays on the project until you explicitly pull it onto an invoice ("Pull approved time" on the new-invoice form). It doesn't auto-bill.
- "This entry says 'non-billable' but I want to bill it." Toggle Billable on the entry and set a Rate. Non-billable lines still count as project cost but produce no revenue.
- "The rate is wrong on the invoice." Rates default from the person/task rate on the project at the time you logged the entry. To change the rate on an already-logged entry, the approver rejects it; the submitter fixes and resubmits.
- Entries vanish when project is archived. Archived projects hide their time on the default list. Toggle the Archived filter to see them.
- Customer can't approve via the portal. The customer-approval URL needs to be shared explicitly — there's no auto-email. Send the URL from the customer-approval tab.
Behaviour and rules
- Time entries do not post to the GL by themselves. They only hit the books when included on an invoice — at which point the normal invoice posting writes revenue + AR.
- Cost vs revenue. A timesheet line carries both a cost (person's cost rate, used in project profitability) and an optional bill rate (used when invoicing). The two are independent — non-billable lines still contribute cost.
- Approval is optional. Without
feature:tracker.time_approval, entries skip the approver queue — they're considered approved as soon as they're saved. - Period lock. Logging and editing time are NOT period-locked (no GL impact). Invoicing the time is — see Fiscal years and lock dates.
Permissions / restrictions
- View / create own entries:
timesheets.{view,create}. - Approve / reject:
timesheets.approve. - Invoice approved time: standard
sales.invoices.create.
Related
- Projects & Finance — project setup, tasks, and rates.
- Project profitability — how logged hours contribute to project P&L.
- Invoices — time is billed by pulling approved entries onto an invoice.
- Customer portal — customer-side time-approval view.
- Workflow & approvals — internal approval gate before billing.
- Mileage — kilometres logged alongside hours for the same project.
- Reports — Timesheet Details, Timesheet Profitability.