Feature
Reports that turn tracked time into decisions.
Studio and Agency plans unlock the /reports page: filter by date range, client, project, member, billable; group by client / project / member / day; see totals + estimated billable amount; export the same data as RFC-4180 CSV. Owners and Admins see money columns; Members never do.
Plans: Studio · Agency
Free for solo freelancers · No credit card required
What's in it
Shared filter + sort
Same TimeFilterBar that runs the Time page. URL-stateful — share a report URL with a teammate and they see your exact slice. Members are server-pinned to their own userId regardless of URL.
Group by anything
None, Client, Project, Member, or Day. Each group renders a header + subtotal so you can read 'total hours per client this month' without exporting.
Three report types
Time (today): the workhorse. Revenue and Projects tabs render empty states explaining what they'll show — built when the underlying aggregations land, not before.
Owner/Admin-only money
The Rate and Amount columns appear for Owners and Admins. For Members, those columns are server-stripped from the payload — they aren't hidden in the UI, they aren't in the page at all.
RFC-4180 CSV export
GET /api/reports/time.csv mirrors the page's filters and sort. Streams a properly-quoted CSV (commas in client names handled, newlines escaped). Members' CSV never includes the Rate/Amount columns.
Advanced reporting on Agency
Agency plan adds deeper breakdowns — per-member utilization, per-client lifetime value, week-over-week trends. Same gating model, different entitlement key (advancedReporting).
How it works
- 01
1. Open /reports
The page lands on Time → no group → last 30 days. Adjust the filter bar to your slice.
- 02
2. Pick a grouping
Each group block renders header + subtotal. The bottom row is the grand total.
- 03
3. Read or export
Read in-page for ad-hoc analysis. Hit 'Export CSV' for an audit-quality file you can hand to your accountant.
Common questions
Can I see only billable time?
Yes — the Billable filter has three states (All / Billable / Non-billable) and the CSV download honors it.
Does the CSV include un-invoiced and invoiced entries?
Both, by default. The filter bar exposes an 'invoiced' toggle if you want only one. Each row carries the invoice number when one applies, so you can reconcile a report against your AR ledger.
Why can't Members see Amounts?
Members are typically billable producers, not financial stakeholders — your client billing math is org-private. We strip Rate/Amount from the server payload for Member viewers; the columns aren't in the DOM at all. Owners and Admins see everything.
Is there a Revenue report?
It's stubbed on the Reports page with an empty-state explainer. We're shipping the underlying aggregation in a follow-up — when it lands, the empty state goes away and the data shows up. Not before.
Related
Try it free, in two minutes.
Create an account, set up your first client, and log an hour. The invoice will already be on the way to building itself.
Free for solo freelancers · No credit card · Cancel any time