# Import from Harvest

> Connect Harvest with a personal access token and sync clients, contacts, invoice history and recurring invoices into Tillage.

- URL: https://tillage.ai/docs/integrations/harvest-import
- Section: [Integrations](https://tillage.ai/docs/integrations)

If you've been invoicing in Harvest, you can bring your clients, contacts and invoice history into Tillage, and turn Harvest's recurring invoices into billing schedules. The import reads from Harvest; it never changes anything there. You can run it again whenever you like.

## Connect Harvest

You'll need a Harvest personal access token and your account ID.

1. Go to [Harvest Developer Settings](https://id.getharvest.com/developers) and create a new personal access token. Use a Harvest user with Administrator or Manager permissions so contacts can be read.
2. Copy the token and your **Account ID**.
3. In Tillage, go to **Utilities → Import Data** and choose **Harvest**. You can also start from **Team Settings → Import** with **Configure Harvest**.
4. Enter the **Personal Access Token** and **Account ID**, then click **Save & Connect**.

When the connection works, you'll see **Connected to Harvest**. Credentials are stored encrypted. To change them later, click **Change**, then **Update & Test**.

## Run the import

1. On the Harvest import page, under **What to sync**, choose any of:
   - **Clients & contacts**: client records and their contact people. Existing records are updated; no duplicates.
   - **Contacts only**: re-sync contacts for clients you've already imported from Harvest.
   - **Invoice history**: invoices with their line items. New invoices are added and existing ones updated.
   - **Detect recurring patterns**: find recurring invoices while syncing invoice history.
2. Optionally set an **Invoice date range (optional)** with **From date** and **To date**. Leave them empty to import everything.
3. Click **Sync Now**.

**Sync Progress** shows each step as it runs. Large accounts can take a few minutes.

Records are matched on their Harvest ID, so you can run the sync again to pick up changes without creating duplicates.

## How invoices come across

| In Harvest | In Tillage |
|---|---|
| Draft | **Not Sent** |
| Open or sent | **Issued** |
| Paid or closed | **Paid** |

Amounts and line items are kept exactly as they were in Harvest. Tillage doesn't apply variance or profit margin to imported invoices.

Importing doesn't email anything to your clients. Invoices keep the date Harvest sent them, though, so if you've turned on [overdue reminders](https://tillage.ai/docs/invoices/send-and-get-paid#overdue-reminders), unpaid imported invoices past their due date will start getting Tillage reminders. Mark any you've already collected as paid first.

## Recurring invoices

With **Detect recurring patterns** on, Tillage groups invoices that came from the same Harvest recurring invoice and creates a billing schedule for each group:

- **Frequency** is worked out from the gap between invoices: weekly, monthly, quarterly, every six months or annually.
- **Amount** is the average of the group's invoices.
- **Next issue date** is one period after the latest invoice.
- The schedule is **Active** and set to create draft invoices for you to review. It isn't linked to a payment method, so nothing is charged automatically.

> **Important:** Review each imported schedule in [Billing schedules](https://tillage.ai/docs/invoices/billing-schedules) before its next issue date: check the amount and date, and pause any you don't want. Then stop the matching recurring invoice in Harvest so the client doesn't receive both.

## What doesn't come across

The import covers clients, contacts, invoices and recurring invoices. Time entries, projects, expenses and estimates aren't imported. Clients who paid Harvest invoices online haven't saved a payment method with Tillage; they'll do that the first time they pay a Tillage invoice.

## Troubleshooting

- **Connection fails**: check the token hasn't been revoked and the account ID matches the token's account.
- **No contacts synced**: confirm contacts exist under each client in Harvest, and that the token's user has Administrator or Manager permissions.

## Related

- [Import your data](https://tillage.ai/docs/getting-started/import-your-data)
- [Billing schedules](https://tillage.ai/docs/invoices/billing-schedules)
- [QuickBooks, CSV and JSON import](https://tillage.ai/docs/integrations/quickbooks-and-csv-import)

---

All docs: https://tillage.ai/docs.md  
Site index for AI assistants: https://tillage.ai/llms.txt  
Sign up free: https://app.tillage.ai/signup
