# QuickBooks, CSV and JSON import

> Import invoice history from a QuickBooks IIF file, or clients and invoices from any CSV or JSON file, and see what else the import hub offers.

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

The import hub at **Utilities → Import Data** brings data in from other tools. This page covers the file-based imports: QuickBooks IIF files and CSV or JSON files from anywhere else. For Stripe and Harvest, see [Import from Stripe](https://tillage.ai/docs/integrations/stripe-import) and [Import from Harvest](https://tillage.ai/docs/integrations/harvest-import).

## What's in the import hub

| Import | What it brings in | Status |
|---|---|---|
| **Harvest** | Clients, contacts, invoices and recurring invoices | Available |
| **Stripe Import** | Customers, invoices and active subscriptions | Available |
| **QuickBooks IIF** | Invoice history from a QuickBooks IIF export | Available |
| **CSV/JSON Import** | Clients, or invoices, from any spreadsheet or JSON export | Available |
| **QuickBooks Online** | Direct import from QuickBooks Online | Coming soon |
| **FreshBooks** | Direct import from FreshBooks | Coming soon |

Imports bring data into Tillage only. They don't keep syncing afterwards, and they don't change anything in the tool you're importing from.

## Import a QuickBooks IIF file

IIF is the export format of QuickBooks Desktop. The import reads invoices and their payment status, and matches each invoice's customer to your Tillage clients.

1. In QuickBooks, export your invoices as an `.iif` file.
2. Go to **Utilities → Import Data** and choose **QuickBooks IIF**.
3. **Upload**: drop the file or click **Choose File**. Files must have the `.iif` extension and be 10MB or smaller.
4. **Review**: check how customers were matched.
   - **Exact Matches** are mapped to existing clients automatically.
   - **Fuzzy Matches** are suggestions. Confirm each one or choose a different client.
   - **No Matches** become new clients. Edit the name, or pick an existing client to merge with.
   Then click **Continue →**.
5. **Confirm**: review how many invoices will be created or updated and how many new clients will be added. Tick **I understand and want to proceed with the import.** and click **Import Invoices →**.
6. **Complete**: open **View Invoices** or **View Clients** to check the results.

Things to know:

- Amounts and line items are kept exactly as in the file. Tillage doesn't apply variance or profit margin.
- Each imported invoice is marked with the source "IIF".
- Invoices with a number that already exists in Tillage are updated with the file's data rather than duplicated.

## Import a CSV or JSON file

Use this for any tool that can export a spreadsheet. You can import clients or invoices.

1. Go to **Utilities → Import Data** and choose **CSV/JSON Import**.
2. Under **Import Type**, choose **Clients** or **Invoices**.
3. Upload your file. CSV files need column headers in the first row; JSON files need an array of objects with the same properties. Up to 10MB.
4. In **Map Your Fields**, match each Tillage field to a column in your file. Required fields are marked **Required**.
5. For clients, click **Group Contacts** to review how rows are grouped into companies, so several contacts at one company become one client. For invoices, click **Preview Import**.
6. Check the **Import Summary** and click **Import Clients** or **Import Invoices**.

Import clients before invoices. Invoices are attached to clients by name, so the client has to exist first.

### Client fields

| Field | Required |
|---|---|
| **Company Name** | Yes |
| **Contact Name**, **Email**, **Phone** | No |
| **Address (Full)**, or **Street Address**, **Street Address 2**, **City**, **State/Province**, **ZIP/Postal Code** and **Country** | No |
| **Website**, **Industry**, **Notes** | No |

Map either a full address or its parts. Clients with the same company name as an existing client are skipped.

### Invoice fields

| Field | Required | Notes |
|---|---|---|
| **Client Name** | Yes | Must match an existing client's company name. Case doesn't matter. |
| **Invoice Title** | Yes | |
| **Amount** | Yes | The invoice total. |
| **Invoice Number** | No | Invoices with a number that already exists are skipped. |
| **Issue Date** | No | |
| **Due Date** | No | Defaults to 30 days after the import. |
| **Description** | No | |
| **Status** | No | Use Tillage's values: `draft`, `issued` or `paid`. Defaults to `draft`. |

Rows whose client can't be found are skipped and listed after the import. CSV invoices come in as a single total without line items.

## Related

- [Import your data](https://tillage.ai/docs/getting-started/import-your-data)
- [Clients and contacts](https://tillage.ai/docs/clients/clients-and-contacts)
- [Create an invoice](https://tillage.ai/docs/invoices/create-an-invoice)

---

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
