Billing & Time
Time tracking & expenses
Track every billable hour and project cost, then convert them to invoices in one click. CoPortal has a live timer, a global sidebar shortcut, a dedicated time log page, and full team visibility — so no billable time slips through the cracks.
Where to access the timer
There are two ways to start tracking time:
- •Global sidebar shortcut (Log Time) — available on every page. Click Log Time in the sidebar to open a floating modal. Select any project, start the live timer or log manually. Use this when you're context-switching between projects or want to log without leaving what you're doing.
- •Project time panel — open any project and click the Time & Billing tile in the overview, or click Time & Billing in the panel bar. The full timer panel shows your live timer, all logged entries, and invoice tools for that project.
Live timer
Click the green Play button to start timing. The elapsed time ticks in real-time. While the timer is running you can:
- •Type a description of what you're working on
- •Link the session to a specific task on the board
- •Select a retainer to log the time against
Click Stop to end the session — a time entry is saved automatically with the elapsed duration (subject to any rounding rules you've set).
Timer persistence
The timer survives page refreshes and navigation. If you start a timer on a project, switch to another page, and come back — the timer picks up where it left off. The elapsed time is stored locally and restores automatically when you return to the project within 24 hours. The sidebar also shows the running elapsed time so you always know a timer is active.
Manual time entry
In the Time & Billing panel, click + to add a manual entry. In the sidebar modal, click Log manually. Fill in:
- •Description — what was worked on
- •Duration — hours and minutes
- •Date — defaults to today
- •Task — optional link to a board task
- •Billable — toggle on/off
- •Hourly rate — defaults to your workspace rate, overridable per entry
- •Retainer — optional, if the client has an active retainer
Hours budget
Every project can have a quoted hours budget. Open the project, click Edit in the header, and set an hours budget (e.g. 40h). The timer widget then shows a progress bar:
- •Violet — under 80% of budget used
- •Amber — 80–99%, getting close
- •Red — over budget, with the overage amount shown
This gives you early warning of scope creep before it becomes a billing dispute. Pair it with the existing expense scope-creep alert for full cost control.
Time rounding
Professional billing often rounds up to the nearest increment. Go to Settings → Workspace and set a Time rounding rule — options are none, 6, 10, 15, 30, or 60 minutes. When set, every time entry (from the timer or manual entry) is rounded up to the nearest increment before saving. A note confirms the rounding when you stop the timer.
Converting time to invoices
In the Time & Billing panel, each billable, un-invoiced entry has a checkbox. When any unbilled entries exist, an amber Invoice time → banner appears — click it to auto-select all unbilled entries. Then:
- •Add to existing invoice — appends selected entries as line items to a draft invoice
- •Create new invoice — generates a new draft invoice pre-filled with the selected entries, quantity in hours, unit price at rate, and total calculated
Entries marked as invoiced are greyed out with an "invoiced" label and can no longer be selected.
Time log page (/time)
The Time page in the sidebar gives a workspace-wide view of all logged time. Use it for end-of-week billing reviews, capacity planning, and reporting.
Filters and range
Filter by time range (7 days, 30 days, 90 days, all time), specific project, or billable status. The stats at the top update live as you filter.
Time log tab
All entries grouped by week, showing the description, project, date, billable status, and value. Each week shows a subtotal of hours and billable value.
By project tab
Each project ranked by total hours logged in the selected period. Shows total hours, billable hours, and billable value. Proportional bar makes it easy to spot where time is going.
By team member tab (Studio & Agency)
All entries attributed by team member — who logged what, how many hours, their billable rate (% of logged time that is billable), and billable value. Useful for capacity reviews and understanding utilisation across the team.
created_by value will be attributed to the workspace owner in the team view.Showing time to clients
By default, the time log is hidden from clients in their portal. To share it, open the project, click Edit, and toggle Time log visibility to Visible to client. The client will then see a full time log in their portal project view, including the hours budget progress bar if one is set.
This is useful for hourly engagements where the client pays for time and wants transparency. Leave it hidden for fixed-price projects or retainers where the hours breakdown is internal.
Retainer time logging
If the project's client has an active retainer, a retainer dropdown appears in the timer and manual entry form. Select it to log the time against the retainer's hours-included allowance for the current billing cycle. See hours used vs included in the Retainers view.
Expenses
Open any project and click the Expenses panel to log costs associated with the project.
Logging an expense
Click + Add expense and fill in:
- •Description — what was spent on
- •Amount — the cost in rands
- •Category — Travel, Software, Subcontractors, Equipment, Other
- •Date — when the expense was incurred
- •Billable — whether to pass this cost on to the client
- •Receipt — optional file upload
Adding expenses to invoices
Billable expenses work the same way as time entries — select them in the Expenses panel and click Add to invoice or Create invoice from selected.
Profitability
All time (at hourly rate) and expenses feed into project profitability calculations in Analytics. Accurate time logging = accurate margin data. The scope creep alert in each project fires when actual costs (time + expenses) exceed the linked quote amount.