If your bookkeeping lives in Excel or Google Sheets and you've decided to move to Xero, the migration itself is rarely the hard part. The hard part is doing it cleanly: getting opening balances right, deciding what historical detail to bring across, and enforcing a clean cutover so the spreadsheet and Xero don't diverge during the switch. This guide walks through the five steps that get a migration from spreadsheets to Xero done without rework.

Step 1: Audit what's actually in your spreadsheets

Before you import anything, list out what your spreadsheets actually contain. Most small-business books include some mix of: a sales log, a supplier or expenses log, bank transactions, a contact list (customers and suppliers), and inventory or product pricing if you sell physical goods. There's also often a chart of accounts hiding inside, even if you never called it that, your "Category" or "Account" column in the sales log is essentially that.

For each of these, note: how clean it is, how many rows you have, what the date range covers, and what format the column headers are in. The cleaner your inputs, the smoother every later step gets. A weekend of spreadsheet tidying before you start often saves a week of debugging during the import.

Step 2: Set up Xero before importing anything

Resist the temptation to start importing data first. Xero only works well if its core configuration is right, and getting that right after data is in the system is painful.

At minimum, set up:

  • Your organisation details and financial settings (year-end, base currency, tax registration).
  • Your chart of accounts, mapped to the categories you've been using in spreadsheets. Xero's default chart is a sensible starting point; rename and add accounts to match how you actually report.
  • Your tax rates, including any reverse-charge or exempt rates you use.
  • Bank accounts in Xero, with opening balances at your cutover date.

Once these are in, you have a destination ready to receive data. Skip this step and every import will need to be redone.

Step 3: Import the historical data you actually need

This is the step most people overestimate. You usually do not need to bring in years of transaction-level history. What you do need is:

  • Opening balances at the cutover date. Bank balances, accounts receivable (open invoices), accounts payable (open bills), inventory on hand. These let Xero start its own books accurately.
  • Current-year transactions. If you're migrating mid-year, you usually want the year-to-date transactions in Xero so reporting and tax submissions work end-to-end without referring back to the spreadsheets.
  • Contacts. Your customer and supplier list, including payment terms and account numbers.
  • Inventory items. If you sell or track stock, the product list with cost and sell prices.

Older history can stay in the spreadsheet archive. If you really need historical year-end totals in Xero for comparative reports, post them as opening adjustments to retained earnings rather than re-importing every line.

Xero's native CSV import is the fastest way to bring in contacts, open invoices, open bills, bank transactions, and the chart of accounts. The trade-off is that your CSV must match Xero's exact format: specific column names, region-correct date formats, exact tax codes. If your spreadsheets don't match, you'll either reformat them manually or use a tool that maps your files to Xero for you.

Step 4: Cutover, and mean it

Pick a date. From that date forward, all new transactions go into Xero only. The spreadsheet becomes read-only history.

This sounds obvious and is the most commonly broken rule in spreadsheet-to-Xero migrations. People keep entering sales in the spreadsheet "just for this week" while learning Xero, and now two systems hold different versions of the same data. By the time you notice, reconciling them is a week of unpaid work.

Make the cutover stick by:

  • Locking or archiving the spreadsheet on the cutover date (Google Sheets makes this easy with View-only permissions).
  • Telling everyone who used to update the spreadsheet that the system has changed, with a one-page guide to the new Xero workflow.
  • Setting up your post-cutover data flows before the cutover, not after, so there's no gap where data piles up uncategorised.

Step 5: Reconcile and parallel-run

For the first month or two after cutover, plan a quick weekly reconciliation: Xero's bank reconciliation against the actual bank feed, plus a spot-check that the sales and expense numbers match what you'd have expected from the volume of activity.

This is when migration errors surface. Misposted opening balances, duplicate transactions, contacts that need merging, tax rates applied wrongly. Catching them in the first month is much cheaper than catching them six months later at year-end.

What to set up next

Once the migration is done and Xero is your source of truth, the question becomes: how does data keep flowing in? If your business generates files weekly (sales reports from a POS, supplier invoices via email, payroll exports, payment processor statements), you'll be back in spreadsheets within a quarter unless that flow is automated.

EntryRocket is built for that ongoing flow, not the one-time migration. You email the files that come out of your operational systems and they land in Xero as invoices, bills, journals, or bank transactions, in the right shape, every time. If your migration is happening because manual data entry into Xero is the bottleneck you wanted to escape, that's the part to plan for next.