For agencies

Built for the way agencies actually bill.

Retainers that auto-invoice. Project P&L with real margin %. Cost rate vs billable rate, with per-person-per-project overrides. Designed for small business US shops, not 200-seat enterprises.

14-day trial · No credit card required
Built around agency workflows

Five reasons small agencies pick us over Harvest or Toggl.

Most time-tracking tools were built for individuals or for enterprises and then stretched to fit agencies. SB Time Tracker was built for agencies first โ€” every feature exists because a partner-led shop asked for it.

Agency essentials

Five things every agency needs that most trackers fumble.

Retainers that auto-bill

Set a 40-hour or $5K monthly retainer. The auto-invoice service generates next month's invoice on the 1st. Burn-down view tracks hours used vs purchased.

Cost rate vs billable rate

Two rates per person. The P&L report uses both. Margin % isn't a guess โ€” it's revenue minus cost, surfaced per project.

Per-project rate overrides

Senior consultant bills $250 on one client and $200 on another? Set the override on the project. Reports honor the hierarchy automatically.

Team-based access

Group people into the Brand team or the Dev team. Assign teams to projects and clients. New hires get access on day one without 30 permission flips.

Auto-overdue dunning

The invoice goes overdue โ†’ polite reminder โ†’ firm reminder โ†’ final notice โ€” on a cadence you set. You stop chasing.

The retainer problem

"How much of the 40 did we use?"

Most tools force you to fake retainers as projects with hour budgets — which works until you need to invoice the unused balance, roll over hours, or run a P&L on the actual retainer revenue. We built retainers as a first-class concept: hours-or-fee, with rollover policy and burn-down per period.

  • First-class retainer model — not a project workaround
  • Hours-based or fixed-fee retainers
  • Monthly, quarterly, or custom periods
  • Rollover or expire — your call per retainer
  • Burn-down view at any point in the period

See invoicing โ†’

Retainer burn-down
The margin problem

"Are we actually making money on this client?"

If you only track billable rate, every project looks profitable. If you track cost rate alongside it, you can see which clients are actually paying for your senior bench. The Profitability report does the math: revenue − cost, per project, per period.

  • Project P&L with revenue, cost, margin, margin %
  • Drill from any project to entry-level detail
  • Sort by margin % to find your best and worst clients
  • Past-budget projects flagged in red
  • CSV export for the partner who wants to model it themselves

See reports โ†’

Profitability report
The utilization problem

"Should we hire?"

The Utilization report compares logged hours against weekly capacity (40h default, override per person), split into billable vs total. Three weeks at 110% billable on a senior is a hiring signal. Three weeks at 60% is a different signal. You stop deciding based on vibes.

  • Per-user weekly utilization
  • Billable % and total %, side by side
  • Capacity-aware (40h default, override per person)
  • Heatmap across the team
  • Weekly + monthly rollups

See reports โ†’

Team utilization heatmap
The chasing problem

"Did anyone send the reminder?"

Net 30 invoice goes overdue → Day 1 polite email → Day 14 firm email → Day 30 escalation. The dunning service runs on its own schedule, in your branding. You only step in if the client actually responds with a question.

  • Auto-overdue on due-date passage
  • Three-stage dunning cadence (configurable)
  • Each stage uses your own templates
  • Stops automatically on payment
  • Per-invoice dunning audit trail

See invoicing โ†’

Dunning email schedule
If you're switching

Migrate from Harvest in under an hour.

CSV import accepts standard Harvest exports. Time entries, projects, clients, and people come over with names preserved.

Feature SB Time Tracker Harvest
Price per user (annual) $7/mo $13.75/mo
First-class retainer model โœ“ Included Workaround via projects
Recurring invoices from retainers โœ“ Included Limited
Cost rate vs billable rate split โœ“ Included Limited
Project P&L with margin % โœ“ Included โ€” Not available
Per-user-per-project rate override โœ“ Included Limited
Auto-overdue + dunning emails โœ“ Included Manual
Team-based access (with Team Leads) โœ“ Included Permission groups
CSV import from Harvest โœ“ Included n/a
See full comparison โ†’

Agency questions we get a lot

We have 5 people. Will this fit?

Yes — that's the sweet spot. We built this for small business shops. The pricing is per-user, the workflows assume a partner or owner is doing approval and invoicing, and the reports answer the questions a partner-led shop actually asks.

Can subcontractors log time?

Yes. Add them as Employee or Manager users. Set their cost rate to what you actually pay them, their billable rate to what the client pays. Profitability report nets the difference automatically.

What if we have non-billable internal projects?

Internal projects (R&D, marketing, ops) are first-class. They count toward total utilization but don't show up on client reports or invoices. Mark them non-billable and the rate fields disappear.

Can clients see their own invoices?

Yes. The /features/portal page covers this — each client contact gets a read-only login to see their open / paid invoices and approved hours. Hosted card pay arrives Q2 2026 via Stripe Connect.

What about non-US agencies?

We're US-only today. USD pricing, US-format dates, US tax-rate model (a single rate per invoice, no VAT logic). Multi-currency and international tax are roadmap — Q4 2026 at the earliest. If you need them today, stay on Harvest.

What's the typical setup time?

Under an hour. Create the tenant, import Harvest CSV, set rates per user, set up your first retainer. We'll send a check-in email on day 3 and day 10 of the trial.

Built for agencies. Priced for agencies.

$7/user/mo. 14-day trial. CSV import on day one. Real P&L on day two.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.