Migrating from Other Platforms

Import contacts, products, invoices, bills, expenses, and more from FreeAgent, Xero, QuickBooks, Sage, IRIS (KashFlow), Stripe, Shopify, and more.

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#

  1. Go to Settings > Import Data
  2. Click Connect FreeAgent
  3. Log into your FreeAgent account and approve access
  4. You'll be redirected back to TaxMTD
  5. 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#

  1. In Xero, go to Contacts > All Contacts > Export
  2. Save the CSV file
  3. In TaxMTD, go to Settings > Import Data > CSV Upload > Xero
  4. Upload the file - columns are auto-detected

For invoices: Business > Invoices > Export

For products: Business > Products and Services > Export

QuickBooks Online#

  1. Go to Sales > Customers > Export to Excel
  2. Save as CSV
  3. Upload to TaxMTD - select "QuickBooks" as the platform

For invoices: Sales > Invoices > Export

Sage Accounting#

  1. Go to Contacts > More > Export
  2. Save the CSV
  3. 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"
  }'
Was this page helpful? Share it.