A FreshBooks retainer tracker your client can bookmark.

FreshBooks tracks the time and ships the monthly invoice. The four weeks between invoices are when clients ask “how many hours do I have left?” HourTab is the URL you send once that answers it — no portal, no client login, no second tool for them to learn.

Free forever for your first retainer · no credit card · CSV in, URL out.

What your client sees

acme.hourtab.com/october
Acme Co. · October retainer
12 of 20 hours used
8 hours remain · resets Nov 1
  • Oct 3 API sync debug 3h
  • Oct 7 Onboarding call 1h
  • Oct 12 Landing copy revisions 2h
  • Oct 18 DB migration review 4h
  • Oct 22 Weekly status 2h

One URL per retainer. Bookmarked once, always current. The item rows come straight from FreshBooks’ Time Tracking export — Date, Notes (or Service), and Duration.

Why HourTab instead of FreshBooks’ client portal

The flow, start to finish

  1. 1. Export from FreshBooks

    Time Tracking → Reports → Detailed Time → pick the cycle date range and the client/project → Export → CSV. Two screens. Available on every FreshBooks plan that includes time tracking (Lite and up).

  2. 2. Paste into HourTab

    Drag the CSV into your HourTab retainer or paste its contents. We auto-map FreshBooks’ standard time-export columns (Date, Notes, Duration) — no manual field setup, no template install.

  3. 3. Send the URL once

    One Slack/email/text to the client: “Bookmark this — it’s your live retainer page, always current.” They do. They stop emailing you mid-month. You stop writing “you have 6 hours left” replies on a Tuesday afternoon.

FreshBooks + HourTab FAQ

Which FreshBooks plan do I need?

Any plan that includes time tracking — Lite, Plus, Premium, and Select all do. The Detailed Time report and the CSV export are not gated to higher tiers. If you’re on classic FreshBooks (the older interface), the export lives under My Account → Reports → Time Entry Details.

What columns do you actually need?

Three: Date, a description (FreshBooks calls this Notes on the Detailed Time report; some exports label it Service), and Duration (in either h:mm or decimal — we accept both). FreshBooks exports a wider set of columns (Client, Project, Team Member, Billable, Rate, Amount); we ignore them for the retainer view. Filter the report to one client / project before exporting and every row in the CSV belongs to one retainer cycle.

Doesn’t FreshBooks already have a client portal? Why a second URL?

The FreshBooks portal is a great invoicing inbox — sent invoices, paid invoices, retainers as a billing object. What it doesn’t show your client (without making them dig) is the in-cycle hours burn-down: where are we right now, halfway through the month? HourTab is the “halfway through the month” view. The two coexist; if anything HourTab reduces FreshBooks portal logins, because the routine status question is already answered.

Can I run a retainer in FreshBooks AND have a HourTab page for the same client?

Yes — that’s the standard setup. FreshBooks owns the contract, the recurring invoice, and the retainer billing object. HourTab owns the public “hours used vs hours bought” URL the client looks at between invoices. They never need to cross.

How does the client see updates?

Re-export the FreshBooks Detailed Time report (same two screens), paste the new CSV into HourTab, done. The public URL updates instantly — same link, new numbers. Most retainer-running freelancers do this once a week during their Friday admin block; some refresh after every billable session. Either is fine — the URL always reflects the last paste.

Your FreshBooks time. A URL your client actually opens.

One email when we launch. That’s the only one you get.