Switching from QuickBooks Online to Xero feels straightforward in marketing copy: export, import, done. The reality is messier. Nine critical accounting fields either don't migrate, map incorrectly, or require manual rebuild. Your team will spend weeks reconciling what QBO structured one way and Xero expects another. This playbook maps those fields, shows you the rebuild timeline, and tells you exactly which reconciliation steps can't be automated. GL account mapping doesn't carry custom account structure QuickBooks lets you customize account naming, numbering schemes, and nesting depth. Xero has its own hierarchy: five-digit codes with built-in account type rules. When you import a QBO chart of accounts into Xero, account names come across, but the mapping is flat. Custom roll-ups and parent-child relationships collapse. What breaks: A QBO chart like 1100 (Current Assets) → 1110 (Cash) → 1111 (Operating Account) imports as three separate accounts at the same level. Xero won't automatically nest them. Manual fix required: Rebuild the parent-child structure in Xero by hand (30 minutes per 50 accounts). Map custom QBO account codes to Xero's standard codes if you want compliance reporting. Verify that all inter-company clearing accounts are correctly flagged in Xero (QBO doesn't track this the same way). Reconciliation risk: If you don't rebuild the structure before posting live transactions, trial balance reports will look correct numerically but your account hierarchy won't match your internal reporting. Budget 4–6 hours. Invoice numbering doesn't port history or sequences QuickBooks tracks invoice number sequences with gaps, skips, and manual overrides. Xero enforces a sequential numbering rule per invoice series. If you've ever renumbered a batch of invoices in QBO, or used custom prefixes that skip, Xero will reject the import or force you to renumber. What breaks: A QBO history like INV-2023-001, INV-2023-003 (skipped 002), INV-2024-0001 (year reset) won't import cleanly. Xero will either reject the gap or force a new sequence. Manual fix required: Export your QBO invoice register with all invoice numbers and dates. In Xero, set invoice numbering rules before importing, so the system knows the expected next number. For any invoices with non-sequential numbers, re-import as historical invoices with a memo explaining the original number (Xero's historical invoice feature allows this). Test the sequence on three new invoices before going live. Reconciliation risk: If customers reference invoice numbers in their systems, and you change those numbers in Xero, your AP team will spend weeks matching payments to invoices. Budget 6–8 hours, plus 10 minutes of testing per invoice type. Inventory costing method doesn't migrate, only balances do QuickBooks lets you choose FIFO, LIFO, or average costing per item. Xero imports inventory balances but not the costing method selection. You have to manually set the costing method in Xero after import. If your methods differ by item, this is a line-by-line rebuild. What breaks: You have 200 SKUs: 150 on FIFO, 50 on average cost. QBO tracks this per-item. Xero imports the balances but defaults all items to weighted average. Your cost of goods sold will differ month-to-month once you correct it. Manual fix required: Export your QBO inventory costing method per item (not in the standard report; you may need your accountant's help). In Xero, go to each item and set the costing method manually. (No bulk edit.) Run a cost variance report comparing QBO's COGS to Xero's during the first month post-migration. Post a one-time journal entry to write down/up inventory to match actual cost. Reconciliation risk: Inventory variance reports will be unreliable for 60 days unless you reconcile monthly. The difference is rarely massive, but it's often enough to trigger audit questions. Budget 3–4 hours for initial setup, then 1 hour monthly for 90 days. Multi-class tracking doesn't map to dimensions or locations QuickBooks Advanced and Plus allow a second "class" dimension (e.g., by department or project, in addition to the customer). Xero doesn't have a built-in "class" field. It uses "tracking categories" instead, and they work differently. When you import, QBO class data either drops or converts to a custom tracking category that your users won't recognize. What breaks: In QBO, you have Customer = Acme Corp, Class = West Region. In Xero, you'd need a tracking category "Region" with value "West Region." But if that category doesn't exist in Xero yet, the import fails or ignores the class field. Manual fix required: Identify all class values used in your QBO data (e.g., product lines, departments, regions). In Xero, create a tracking category for each (e.g., "Department", "Location", "Project"). Use Xero's import wizard to map QBO class values to Xero tracking categories before importing transactions. Verify a sample of 20 transactions post-import to ensure class data landed in the right t