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:

ModePlatformsHow It Works
OAuthFreeAgentConnect your account, auto-import everything
APIStripe, Shopify, WooCommerce, Square, GoCardless, PayPalAlready connected for banking - pull customer/product data too
CSVXero, QuickBooks, Sage, FreeAgent, Crunch, IRIS (KashFlow), Coconut, Zoho BooksUpload CSV exports, auto-detected column mapping

Navigate to Settings > Import Data to access the import wizard.

What You Can Import

Data TypeDescription
ContactsCustomers, suppliers, and their details
ProductsProduct/service catalogue with prices and SKUs
InvoicesSales invoices with line items
BillsPurchase invoices from suppliers
ExpensesBusiness expenses with categories
ProjectsProject records for time tracking
Time EntriesBillable hours and timeslips
SubscriptionsRecurring 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 TypeDedup Key
ContactsName (case-insensitive) or provider reference
ProductsSKU, then name as fallback
InvoicesInvoice number, then client + date + total
SubscriptionsProvider 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"
  }'