Feature

Bring your data in once, then never look back.

Migrating to a new billing tool dies on data entry. Hoursmith ships two purpose-built importers — Paymo (one-click, full graph) and CSV/Excel (anything else) — that are resumable across browser refreshes, idempotent on re-run, and reversible within 24 hours. Free on every plan because switching shouldn't cost money.

Plans: Free · Studio · Agency

Free for solo freelancers · No credit card required

What's in it

  • Paymo: full graph in one click

    Clients, contacts, projects, tasks, time entries, and historical invoices — including invoice numbers, snapshotted bill-to, and line items. Project rate hierarchy + member mapping respected. Your Paymo API key is used for the run and never persisted past it.

  • CSV / Excel: anything else

    Upload .csv or .xlsx for clients, projects, or time entries. Auto-detect column synonyms; map manually if needed; preview row counts and validation errors; review and run. Multi-sheet Excel is rejected with a clear message (single-sheet only).

  • Idempotent re-runs

    Both importers dedupe by composite natural keys. Re-uploading the same CSV after fixing one cell only adds the changed rows — your earlier edits to imported records survive.

  • Resumable

    Close the tab mid-run. Come back an hour later. The import picks up at the saved cursor. The Paymo API rate limit is honored; the runner backs off on 5xx automatically.

  • 24-hour undo

    Every import job exposes an Undo button for 24 hours after completion. One click reverses every row the run touched — including the activity log entries. After 24 hours the undo expires and the data is committed.

  • Owner-only

    Imports modify the entire workspace. The route + the server actions both require Owner role. Admins can review history; Members never see /settings/imports.

How it works

  1. 01

    1. Pick a source

    Settings → Imports → choose Paymo or CSV/Excel.

  2. 02

    2. Connect or upload

    Paymo: paste your API key for the run only. CSV/Excel: drop the file. We preview row counts and surface any validation errors before you commit.

  3. 03

    3. Map the team (Paymo)

    Match Paymo users to your Hoursmith members so historical time lands on the right person.

  4. 04

    4. Run

    Watch the progress bar (server-sent events). Walk away, come back — close the tab if you want.

  5. 05

    5. Undo if needed

    Within 24 hours, an Undo button on the job page reverses the run cleanly.

Common questions

  • Will my historical invoice numbers stay the same?

    Yes. The Paymo importer preserves invoice numbers, snapshotted bill-to, line items, and currency exactly as they were issued. Your books reconcile across the cutover.

  • What if my Paymo data has gaps (orphan invoices, missing clients)?

    The importer handles orphan invoices (a Paymo bug where the client row was deleted but the invoice was kept) by snapshotting the bill-to text and continuing. Missing parents are logged in the import log; you can fix them in-app afterward.

  • Can I import a partial CSV — say, just new clients?

    Yes. Each entity type (clients / projects / time entries) is its own importer with its own template. Templates are linked from the upload step and at /api/imports/csv/template/[entity].

  • Why is the importer free on every plan?

    Switching is the moment customers decide whether to stay. Gating the importer would just push people back to whatever they were leaving. Imports stay free forever, on Free included.

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

Skip to content