Migrating from Other Platforms
Overview
TaxMTD supports importing data from 14 platforms in three ways:
| Mode | Platforms | How It Works |
|---|---|---|
| OAuth | FreeAgent | Connect your account, auto-import everything |
| API | Stripe, Shopify, WooCommerce, Square, GoCardless, PayPal | Already connected for banking - pull customer/product data too |
| CSV | Xero, QuickBooks, Sage, FreeAgent, Crunch, IRIS (KashFlow), Coconut, Zoho Books | Upload CSV exports, auto-detected column mapping |
Navigate to Settings > Import Data to access the import wizard.
What You Can Import
| Data Type | Description |
|---|---|
| Contacts | Customers, suppliers, and their details |
| Products | Product/service catalogue with prices and SKUs |
| Invoices | Sales invoices with line items |
| Bills | Purchase invoices from suppliers |
| Expenses | Business expenses with categories |
| Projects | Project records for time tracking |
| Time Entries | Billable hours and timeslips |
| Subscriptions | Recurring invoice templates |
FreeAgent (One-Click Migration)
FreeAgent is the most comprehensive import - it pulls contacts, invoices, bills, expenses, projects, and time entries automatically via OAuth.
How to connect
- Go to Settings > Import Data
- Click Connect FreeAgent
- Log into your FreeAgent account and approve access
- You'll be redirected back to TaxMTD
- Click Import Everything or choose specific data types
FreeAgent tokens are long-lived (~20 years) so you won't need to reconnect unless you revoke access.
Stripe
If you already have Stripe connected for bank feed imports, you can also pull:
- Customers - imported as contacts
- Products + Prices - imported as products with pricing
- Invoices - imported with line items and payment status
- Subscriptions - imported as recurring invoice templates
Go to Settings > Import Data, select Stripe under "Connected Payment Platforms", and choose what to import.
Shopify / WooCommerce
Similarly, if Shopify or WooCommerce is connected:
- Customers - imported as contacts
- Products - imported with titles, SKUs, and prices
- Orders - imported as invoices with line items
CSV Import from Accounting Platforms
For platforms without direct API integration (or if you prefer file upload):
Xero
- In Xero, go to Contacts > All Contacts > Export
- Save the CSV file
- In TaxMTD, go to Settings > Import Data > CSV Upload > Xero
- Upload the file - columns are auto-detected
For invoices: Business > Invoices > Export
For products: Business > Products and Services > Export
QuickBooks Online
- Go to Sales > Customers > Export to Excel
- Save as CSV
- Upload to TaxMTD - select "QuickBooks" as the platform
For invoices: Sales > Invoices > Export
Sage Accounting
- Go to Contacts > More > Export
- Save the CSV
- Upload to TaxMTD - select "Sage"
For products: Stock Items > Export
Other Platforms
IRIS (formerly KashFlow), Coconut, Crunch, and Zoho Books all support CSV export. TaxMTD auto-detects the format based on column headers. If auto-detection fails, use the "Generic CSV" option and map columns manually.
Deduplication
TaxMTD prevents duplicate records on re-import:
| Data Type | Dedup Key |
|---|---|
| Contacts | Name (case-insensitive) or provider reference |
| Products | SKU, then name as fallback |
| Invoices | Invoice number, then client + date + total |
| Subscriptions | Provider reference |
Re-importing the same data is safe - duplicates are automatically skipped.
Column Remapping
If auto-detection maps columns incorrectly, the preview step shows dropdown menus above each column. Select the correct TaxMTD field for each CSV column before importing.
Plan Requirement
Platform migration import requires the Pro plan or above. Essential plan users can manually create records.
API Reference
See the Import API documentation for programmatic access to the import endpoints.
Preview Endpoint
curl -X POST https://your-domain.com/api/import/preview \
-H "Content-Type: application/json" \
-d '{
"mode": "csv",
"entityType": "contacts",
"csv": "ContactName,EmailAddress\nJohn Smith,john@example.com"
}'
Import Endpoint
curl -X POST https://your-domain.com/api/import/migrate \
-H "Content-Type: application/json" \
-d '{
"mode": "api",
"platform": "stripe",
"entityType": "contacts"
}'