You've picked NetSuite. Now someone has to move years of contacts, invoices, bills and payments out of Xero
without breaking the books.
There are seven ways to do it. This guide puts them side by side: what each one moves, what it costs, how long
it takes, and who checks the result.
The short answer
Only need balances and open invoices? Export from Xero and load it with NetSuite's Import Assistant, or have your implementation partner include it.
More →
Need the full history, signed off? SuiteMigration moves all of it as native NetSuite records and checks each one against Xero. A conversion service is the done-for-you alternative.
More →
Have engineers, or many Xero organisations? Write code against both APIs, and budget for proving the result.
More →
SM
By the SuiteMigration team. We make one of the seven options, so
every claim about the others links to its source.
The seven options at a glance.
Who does the work, how much history you get, what it costs and how long it takes. Click a row for the full card.
Figures come from each vendor, Xero or Oracle; estimates are marked as ours. Sources are at the foot of the page.
What actually moves.
Three layers. Every method handles the first two; the third is where they differ.
Master data
3%
Contacts, the chart of accounts, items and tracking categories. Every method handles these.
Open items
Inside the 97%
What's still owed at cutover: unpaid invoices and bills, unused credits and opening balances. Enough to run day to day.
History
97%
Every past transaction, with payments still matched to what they paid. Most of the rows, and most of the work.
Share of rows for a typical mid-market company: about 7k master-data records against 217k transactions.
How much history you bring, and whether it arrives as real transactions or summary journals, decides how much of
Xero you can switch off. Our
scoping guide
helps you draw the line.
Where your Xero data lands in NetSuite
In Xero
In NetSuite
Contacts
Customers and vendors Xero keeps both in one list. NetSuite splits them.
Chart of accounts
Chart of accounts Every account needs a NetSuite account type.
Tracking categories
Classes, departments or locations Or a custom segment. Xero allows two active categories. [8][9]
Items
Items Inventory, non-inventory or service.
Invoices and credit notes
Invoices and credit memos
Bills and supplier credits
Vendor bills and vendor credits
Payments
Customer payments and bill payments Applied to the invoices and bills they settled.
Spend and receive money
Checks and deposits
Manual journals
Journal entries
Won't come across on its own
Plan for these before kickoff, whichever method you choose, and ask whoever quotes the work what else is out.
✕File attachments, which move separately
✕Repeating invoice and bill templates, set up again as NetSuite memorized transactions
✕Payroll, which is handled apart from the ledger
✕Custom reports, rebuilt as NetSuite reports or saved searches
Four Xero limits that shape your choice.
From Xero's own documentation. They matter most if you export by hand or read Xero through its API.
500
transactions per export
Invoices, bills and credit notes leave in batches. 124,812 invoices is about 250 exports.
Costs nothing to start, but you rebuild every transaction yourself and nothing checks the result.
Export contacts, accounts and transactions from Xero as CSV, reshape them into NetSuite's import templates, and load them with the Import Assistant at up to 25,000 records a job. Fine for balances. For years of history it means hundreds of exports, because transactions leave Xero 500 at a time.
Right call when
A small company moving balances only, with someone who has run NetSuite imports before.
Limits
Payments link to invoices only by ID, so invoices must load first. Nothing compares what posted with what you exported.
The usual choice when NetSuite is being implemented anyway. How much history comes across depends on the scope.
Data migration becomes one part of the implementation. Partners such as Versich, Eventura, Six Lakes Consulting and Cooper Parry Digital offer Xero to NetSuite moves. Open balances are the usual baseline, and Versich says two to three years of history is a common extra. Only a partner will also set NetSuite up for you.
Right call when
You're implementing NetSuite with a partner and can live without full transaction history.
Limits
The statement of work sets the scope, so check what "data migration" covers. Partner availability usually sets the schedule.
Who
Partner consultants
History
Open balances by default; history if scoped
Test runs
Sandbox, then production
Accuracy checks
Partner-led checkpoints
Source systems
Xero
Cost
Part of the implementation
Timeline
6 to 10 weeks (Versich) to 3 to 6 months (Eventura)
A quoted price to do the move for you. You still check the result.
ClonePartner, Cloud Accounting and Switch My Books all quote for Xero to NetSuite migrations. ClonePartner, for example, shares its field mapping as a spreadsheet for your team to approve, runs sample migrations first, and says most jobs take 1 to 5 business days.
Right call when
One organisation, a fixed budget, and a team that will review the sample and check the final load.
Limits
Accuracy claims are the provider's own. Timing depends on Xero's API limits and how quickly your team reviews.
Sensible if you already pay for one. Built to keep systems in sync, not to move years of history once.
Workato has connectors for both Xero and NetSuite. Skyvia connects the two directly and offers one-off migration as well as sync, and Zapier links them for event-by-event automations. Whichever you use, you build the flows, the mapping and the checks.
Right call when
The platform is already paid for and will keep running after go-live.
Limits
No rollback and no reconciliation beyond an error log, and Xero's daily API limit caps how fast it can read.
Full control, at the highest effort. Proving the result is your job too.
Read Xero through its Accounting API and write to NetSuite through REST, since Oracle switches SOAP off in 2028. Xero returns up to 1,000 records a page, so 124,812 invoices take about 125 calls, within the 5,000 a day each connected app gets. The full ledger through the Journals endpoint needs Xero's Advanced tier.
Right call when
You have engineers, an unusual data model, or many Xero organisations to move the same way.
Limits
Batching, retries, NetSuite's governance limits and the reconciliation are all yours, and the reconciliation is most of the work.
Impressive in a demo, not yet something you'd sign off. We haven't tried it on Xero.
Xero publishes an open-source MCP server, and Oracle's NetSuite AI Connector lets an agent create and update records. Each write handles one record per call, with no bulk tool. In our QuickBooks test, 319 records took about 4.3 seconds each, and every invoice posted with zero tax while each call reported success.
Right call when
A proof of concept, or testing your mapping before you pick a method.
Limits
One record per call, no rollback, and errors that pass unnoticed. NetSuite's connector won't run as Administrator, and Xero's terms bar training AI on API data.
Who
The agent, supervised by you
History
A few hundred records (our QuickBooks test)
Test runs
Sandbox only; no rollback
Accuracy checks
None unless you build it
Source systems
Xero
Cost
Model tokens plus supervision
Timeline
About 12 hours per 10,000 records at our test rate
Built only for this job: full history as native NetSuite records, checked record by record.
The one we make. Connect your Xero organisation and it moves every layer, history included, as native NetSuite records with payments applied. Push to a sandbox as often as you like, then reconcile at total and record level before you go live. The free Readiness Audit checks your Xero data first.
Right call when
History matters, someone must sign off the books, and the source is Xero or QuickBooks.
Limits
Data only. It doesn't configure NetSuite or run your implementation, so it won't replace a partner if you need one.
Our scores, from what each vendor documents rather than our own tests. Three dots is best. Checked October 2026.
Only a platform built for the job scores top marks on both
full history and
accuracy checks, the two columns that decide whether the books can be
signed off.
What each way costs.
Published prices where they exist. The biggest cost in every row is people's time, which nobody publishes.
A migration can create every record, report no errors and still leave the books wrong. The trial balance won't catch it.
The load log says
✓
Complete
217,359 transactions created. No errors.
The trial balance says
✓
Agrees
Totals match at cutover, because the errors cancel out.
The customer ledger says
✕
Wrong
A customer who paid in March still shows as owing.
How it happens with Xero data
Payments
Xero can't edit a payment, only delete it, so deleted payments sit beside live ones. A load that ignores status brings back payments that no longer exist.
Xero decides whether a contact is a customer or a supplier from its transactions. A quick summary read leaves out those flags, plus addresses and contact people, so a tool can't tell which NetSuite record to create.
Comparing each Xero transaction with its NetSuite record, one by one.
SuiteMigration runs that comparison on every record; with the other
methods it's a step to plan and staff. It's the
Accuracy checks column in the comparison, and
our reconciliation post
shows the kind of mismatch it finds. In
our own QuickBooks test,
every call succeeded and receivables still came up short.
Which way fits.
Two questions settle most of it: does the history have to live in NetSuite, and does someone have to sign off that it's right?
Good for read-only checks against a sandbox. We've only tested it on QuickBooks, so treat it as a trial run.
If two options tie, pick the one that can prove the data landed correctly.
How every migration runs.
Five stages, whoever does the work, with the Xero details to watch at each one.
XeroNetSuite
Prepare
Tidy Xero and decide how much history to bring.
Watch for
Duplicate contacts
Unreconciled bank lines
Your history cut-off date
Map
Decide where each account, tracking category and tax rate lands.
Watch for
NetSuite account types
Where tracking categories go
Tax rates to tax codes
Load
Load into a sandbox first, in the right order.
Watch for
Contacts and items before invoices
Payments after their invoices
Exports of 500 at a time, by hand
Reconcile
Compare NetSuite with Xero, not just the totals.
Watch for
Deleted payments, voided invoices
Aged receivables and payables
Trial balance, period by period
Go live
Stop posting in Xero, load the last days, switch over.
Watch for
Transactions entered during cutover
Opening bank balances
Who signs off
The same five stages apply whichever of the seven ways you choose; what changes is who does stages two to four.
FAQ
Xero to NetSuite migration: common questions
Quick answers to what finance teams, partners and developers ask first.
Not as it comes out. Xero exports transactions 500 at a time, and NetSuite's Import Assistant needs its own templates, at up to 25,000 records a job. Expect to reshape every file, and to load invoices before the payments that settle them.
Seven: export and import it yourself, use your implementation partner, hire a conversion service, use an integration platform, write code against both APIs, point an AI agent at both systems, or use a platform built for the job. The real differences are how much history arrives and who proves it's right.
Yes, though not every method makes it practical. By hand, most teams stop at open balances because transactions export 500 at a time. Partners often include two or three years if it's in scope. Conversion services and migration platforms such as SuiteMigration bring the full history across.
Usually to one of NetSuite's classifications: classes, departments or locations, or a custom segment you create. Xero allows two active tracking categories, so each can have its own home. Decide while mapping, before anything loads.
It depends on how much history you bring and who does the work. Partners quote 6 weeks to 6 months for the whole implementation, of which data is one part. ClonePartner says most of its migrations take 1 to 5 business days. By hand, expect weeks at mid-market volume. SuiteMigration runs take days, including sandbox review.
Tie the trial balance period by period, then compare aged receivables and payables customer by customer. Totals can match while individual records are wrong, so the strongest check compares each Xero transaction with its NetSuite record.
It can work if you already have one. Workato and Skyvia both connect the two systems, and Skyvia offers one-off migration as well as sync. You still build the flows, the mapping and the checks, and each app's Xero limit of 5,000 calls a day (1,000 on Starter) caps how fast it reads.
Not reliably yet. Xero's and Oracle's MCP tools write one record per call, with no bulk or rollback tool. In our QuickBooks test, every call reported success while every invoice posted zero tax. We haven't tested Xero.
The free Migration Readiness Audit reads your Xero data and lists the validation errors, mapping conflicts and
data problems a migration would hit, before you commit to a method.