QuickBooks to Xero migration: a clean, step-by-step guide
9 min read Accounting The Adapters team
Last updated July 2026
To migrate from QuickBooks to Xero, map the chart of accounts to Xero account types first, move contacts with a dedupe key so customers and vendors do not double up, then carry open invoices and bills with their outstanding balances so aged reports match on day one. Run a test into a trial Xero organization and reconcile it before you cut over. Do it in that order and the books tie out from the first login.
Field mapping auto-plugged · tap a port to rewire
Plug a source port into
Transform on this cable
JSON in
JSON out
5 sample records ready
Key takeaways
- Chart of accounts first. Map every QuickBooks account to a Xero account type before anything else moves, or the reports come out wrong.
- Dedupe contacts on a stable key. Match on name and email so a customer that exists in both systems is not created twice.
- Carry balances, not history. Move open invoices and bills with their outstanding amounts; you rarely need every closed transaction.
- Test into a trial org. Reconcile a dry run before cutover so you find mapping mistakes on a throwaway, not on your live books.
Can you transfer data from QuickBooks to Xero?
Yes. You can move contacts, the chart of accounts, open invoices and bills, and account balances from QuickBooks to Xero. Xero itself offers a free assisted migration for QuickBooks Online in some regions, and third-party tools and integration platforms move the data by reading the QuickBooks API and writing to the Xero API. The data transfers. The work is deciding what should become what.
A migration is really a mapping problem wearing a moving-day costume. Both systems hold customers, accounts, invoices, and bills, but they name the fields differently and, more importantly, they type accounts differently. Get the account types right and everything downstream lines up. Get them wrong and your profit and loss statement reads like fiction. A QuickBooks to Xero migration that maps fields explicitly, rather than dumping a CSV and hoping, is the difference between a clean first month and a week of cleanup.
What moves from QuickBooks to Xero, and what does not?
Not everything should come across, and trying to force it usually causes the mess. Here is a realistic view of what to migrate, what to bring as opening balances, and what to leave behind in read-only QuickBooks.
| Data | Migrate it? | How to handle it |
|---|---|---|
| Chart of accounts | Yes, first | Map each account to a Xero account type before any transactions move |
| Customers and vendors | Yes | Migrate as Xero contacts, deduped on name and email |
| Open (unpaid) invoices and bills | Yes | Carry the outstanding balance so aged reports are correct |
| Account opening balances | Yes | Enter as a conversion balance dated to your cutover |
| Paid, closed historical transactions | Usually no | Keep read-only QuickBooks access for history; do not re-import |
| Reconciliations and bank rules | No | Rebuild bank feeds and rules natively in Xero |
| Attachments and audit log | No | Stay in QuickBooks; export copies if you need them for compliance |
The instinct to bring every closed transaction across is the one to resist. Xero starts clean from a cutover date with conversion balances, and your old QuickBooks file stays available for the rare historical lookup. Migrating years of paid invoices mostly imports risk: duplicate entries, mismatched taxes, and reconciliations that will never tie out.
How do I migrate the chart of accounts from QuickBooks to Xero?
Export the QuickBooks chart of accounts, then map each account to a Xero account type, because Xero groups accounts by type (revenue, current asset, expense, and so on) and drives its reports from that type. An account that lands in the wrong type does not just look odd; it silently moves numbers between your balance sheet and your profit and loss. This mapping is the single most important step in the whole migration.
QuickBooks account types do not map one to one onto Xero types, so a lookup table you control beats any automatic guess. Decide, for example, that QuickBooks "Other Current Asset" accounts become Xero "Current Asset," and that a clearing account keeps its type rather than being flattened into a bank account. The field-level mapping below is the core of it.
| QuickBooks object and field | Xero object and field | Notes |
|---|---|---|
Account.Name |
Account.Name |
Keep names, but Xero account codes must be unique |
Account.AccountType |
Account.Type |
Map through a lookup you approve; this drives every report |
Customer.DisplayName |
Contact.Name |
Dedupe against existing Xero contacts on name and email |
Customer.PrimaryEmailAddr |
Contact.EmailAddress |
Normalize case before matching |
Invoice.DocNumber |
Invoice.InvoiceNumber |
Preserve so payments still reference the right invoice |
Invoice.Balance |
Invoice.AmountDue |
Carry only the outstanding balance, not the original total |
Bill.DueDate |
Bill.DueDate |
Keeps payables aging correct from day one |
How long does a QuickBooks to Xero migration take?
A straightforward small-business migration takes a few days to a couple of weeks of elapsed time, most of it spent checking rather than moving. The data transfer itself is fast; the chart-of-accounts mapping, a test run, and reconciliation are what set the pace. Xero's own assisted migration typically completes within a few business days once you submit the file.
The projects that drag are the ones that skip the dry run. Migrate into a trial Xero organization first, reconcile the opening balances against your last QuickBooks reports, and only then repeat the run into your live org on a chosen cutover date, ideally the first day of a period. Doing it twice on purpose is far faster than untangling a bad cutover once.
How do I keep open invoices and balances correct?
Carry each open invoice and bill with its outstanding balance, not the original amount, and set an opening conversion balance per account dated to your cutover. That way Xero's aged receivables and payables reports match the numbers you closed QuickBooks on, and customer payments that arrive after the switch still apply to the right invoice.
Reconcile immediately after cutover: aged receivables total, aged payables total, and each bank and clearing account balance should equal the closing figures from QuickBooks. If a number is off, it is almost always an account that mapped to the wrong Xero type, so fix the mapping rather than patching the balance. Once the ledgers are clean, chasing the invoices that were open at cutover is easier, and you can even automate the follow-up on those unpaid invoices so cash keeps moving while you settle into the new system.
Does Xero integrate with QuickBooks after the switch?
There is no supported live two-way sync between QuickBooks and Xero, and you would not want one running permanently, because two accounting systems writing the same ledger is a recipe for drift. The clean model is a one-time migration to Xero, then keep QuickBooks read-only for historical reference until you no longer need it.
What you do want after the switch is Xero connected to the rest of your stack: your store, your payment processors, and your CRM. That is ordinary operational integration, and it is where a data integration platform earns its keep. If you sell online, a Shopify Xero integration posts orders, fees, and payouts so the bank feed reconciles, using the same mapping approach as the migration itself.
QuickBooks to Xero migration checklist
Run the migration in this order and the risky steps land on a test org, not your live books:
| Step | What to do |
|---|---|
| 1. Pick a cutover date | Use the first day of a month or quarter to keep periods clean |
| 2. Map the chart of accounts | Match every QuickBooks account to a Xero account type |
| 3. Migrate contacts | Move customers and vendors, deduped on name and email |
| 4. Carry open items and balances | Bring unpaid invoices, bills, and conversion balances |
| 5. Test into a trial org | Reconcile the dry run against your closing QuickBooks reports |
| 6. Cut over and reconcile | Repeat into the live org, then verify aged reports and balances |
| 7. Rebuild feeds and rules | Reconnect bank feeds and recreate rules natively in Xero |
You can watch the field-by-field mapping before you commit to anything. The live demo lets you pick QuickBooks and Xero and see a real record transform, and the flat pricing means a migration month does not cost more than any other. If you are weighing tools in general, our data integration cost guide lays out the math.
Move from QuickBooks to Xero without breaking the books
Map the chart of accounts, dedupe contacts, and carry balances with a test run you reconcile first. Flat price from $49 a month.