Skip to content
Migration Guide

Bring your time history.
$1 per member.

Miru gives you time tracking, invoicing, and team management for $1 per user per month. Open source and self-hostable. Here's how to preview, import and check your time history.

app.miru.so
Your new Miru dashboard

Three reasons to stop paying Harvest prices

$9 to $11/seat vs $1/member

A 20-person team on Harvest: $2,160/year billed annually, $2,640 paid monthly. The same team on Miru: $240/year. That's not a rounding error. That's a junior developer's annual tool budget.

Open source, not a black box

Miru's open-source core is MIT-licensed and available on GitHub. Self-host it. Audit it. Fork it. Harvest is a closed product you rent. When they change the API or raise prices, you have zero recourse.

A real CLI

Harvest has no CLI. If you're a developer, you're switching to a browser tab every time you log hours. Miru has a full CLI — time, invoices, expenses, reports. All from your terminal.

Five steps to a checked import.

1

Export your time entries from Harvest

Log into Harvest. Go to Reports > Detailed Time. Set the date range to cover all history you want to keep. Click Export CSV. Save the file. Keep the original export. See Harvest's export instructions.

If you track expenses, save a separate expense export for your records. This import handles time entries only; it does not import expense, invoice or payment records.

2

Create your workspace and add your team

Go to app.miru.so/signup. Create your organization. $1 per member per month. No sales call. No 47-field form. Add the people whose time you are importing before the preview. Match their Harvest names, or choose an existing teammate in the import screen when names differ. Mapping does not create a member.

3

Preview and import in your browser

Sign in as a workspace owner or admin and open Settings → Import Harvest. Choose your Detailed Time CSV (up to 20 MB) and click Preview import. The preview does not create clients, projects or time entries.

Review row issues, warnings and teammate matches. Fix the export or map unmatched names, then preview again. When the result is correct, click Import time entries. The completed receipt shows imported, skipped and failed rows and remains available after reload.

Prefer the terminal?

$ curl -fsSL https://miru.so/install.sh | sh
$ miru login --email you@example.com
$ miru import --file harvest-export.csv --format harvest --dry-run

Resolve unmatched people and row errors, then repeat the preview until it is correct. To create the entries, run the same command without --dry-run. Keep any --map arguments you used in the successful preview.

$ miru import --file harvest-export.csv --format harvest

Need help? Ask about migration before sending your team's export.

4

Check the imported history

Check the receipt for failed or skipped rows. In Miru, compare hours by person, project and date range with your Harvest export. Check a few notes and billing statuses. Review project-member rates and create a draft invoice from imported unbilled time before sending it. Hours are rounded to whole minutes; historical rate changes are not preserved per entry. Keep your original CSV and resolve any differences before switching the team over.

5

Switch when the checks pass

Start tracking new time in Miru once your team has verified the import. Keep access to any expense, invoice or payment records you still need. Cancel Harvest only after those records and your time history are accounted for.

Questions you're probably asking

Will I lose my time entry data?
Import a Harvest Detailed Time CSV in Miru's Settings → Import Harvest. Preview the import, resolve row errors and unmatched people, then import and compare totals. Expense, invoice and payment records are not included. Keep those exports separately. The CLI remains available too.
How long does the migration actually take?
It depends on your history and team size. Allow time to match people, resolve CSV errors and reconcile totals after the import. Keep Harvest available until you've checked the result.
Can I run both tools side by side?
Yes. Run Miru in parallel for a week or two if you want. Log time in both places. Compare the experience. When you're ready, cancel Harvest. There's no commitment, no annual contract on our end.
What about my Harvest integrations?
Miru has a full REST API, a CLI, and Stripe integration. If you were using Harvest's API, switching to Miru's API is straightforward — same REST patterns, similar endpoints. For Zapier or Make workflows, point them at Miru's API instead.
Do you support Harvest's project structure?
The importer matches or creates clients and projects, and maps people to existing Miru teammates. Review warnings about shortened names or restored archived records. Check project-member rates before invoicing: historical rate changes are not preserved per entry.

Preview your first import.

Start with a preview. Verify your history. Then move your team to $1 per member per month.

One plan. No tiers. See pricing · All migration guides