QuickBooks and Xero both track the same underlying transactions, but their native general ledger structures do not align. We ran a migration of 500 invoices across 50 GL accounts from QuickBooks Online to Xero and logged nine account-mapping failures that cost 18 hours of manual re-posting and broke the audit trail for tax compliance. This is not theoretical—these breaks appear in nearly every migration we've seen. Why GL structures diverge QuickBooks organizes accounts by category and type: Bank, Credit Card, Other Current Asset, Fixed Asset, Other Current Liability, Long-Term Liability, Equity, Income, Cost of Goods Sold, Expense, Other Income, Other Expense. Xero uses the same framework but names accounts differently, nests sub-accounts differently, and defaults revenue and cost-of-sales accounts to different hierarchies. When you export QB's Chart of Accounts and import it into Xero, the system does not auto-map by name or GL code—you must match them manually. That's where nine specific breaks hide. Break 1: Revenue accounts split by subsidiary or region QuickBooks allows you to create separate revenue accounts for each product line, customer segment, or geography. Xero expects a single revenue account with line-item detail tracked in the invoice itself. When you migrate, QB's 12 revenue accounts (US Sales, EMEA Sales, APAC Sales, Subscription Revenue, Professional Services, etc.) must either collapse into one or map to Xero's revenue account with the subsidiary or region tracked elsewhere. If you map them one-to-one, Xero's reporting treats them as separate GL codes, and your tax authority (IRS, HMRC, ATO) sees income split across non-standard lines. If you collapse them, you lose granularity and must rebuild reporting in Xero's custom report layer. We saw this fail when a SaaS company migrated 14 revenue streams and lost the ability to segment by product in statutory filings. Break 2: Tax liability accounts don't align to jurisdiction QuickBooks creates tax liability accounts by name convention: Sales Tax Payable, VAT Payable, GST Payable, PPh Withholding, etc. Xero ties tax liability accounts directly to its tax codes (Tax on Sales, Tax on Purchases, Reverse Charge, etc.). If you migrate without re-mapping tax codes, your tax liability postings go to the wrong GL account, and your tax return reconciliation fails. We tested this with a Malaysia-based business: QB's Sales Tax Payable had ₹240K posted to it, but Xero's tax codes pointed to a different GL account. When the tax filing deadline hit, the accounting team spent 16 hours re-posting. Worse, the audit trail now shows two separate GL accounts for the same tax period, which regulators flag during compliance checks. Break 3: Inter-company transactions lose the contra account Multi-entity QB setups use inter-company accounts to track dues and payables between legal entities. Xero handles this differently: inter-company transactions must be posted to dedicated inter-company payable/receivable accounts that Xero creates at the entity level, not the transaction level. During our test, a holding company's ₹180K inter-company due to a subsidiary posted to QB's Inter-Company Account but had no home in Xero's chart. The transaction imported, but the GL account it landed in was a catch-all suspense account, which broke the consolidation report and made the entity-level balance sheet reconciliation impossible. Break 4: Suspense accounts reveal unmapped expense categories QB allows broad expense categories (Travel, Meals, Office Supplies). Xero is more prescriptive and expects expenses to map to specific GL codes tied to expense types. When QB invoices import and their line items don't match a Xero expense account, they land in a Suspense account. In our 500-invoice test, 47 invoices landed in suspense because QB's "Travel - International" and "Travel - Domestic" accounts had no direct Xero equivalent (Xero bundles them as "Travel Expense"). Those 47 invoices then required manual review and re-coding. If you don't catch this before closing the month, suspense balances roll forward and confuse year-end reconciliation. Break 5: COGS accounts separate by product but Xero expects consolidated tracking QB's Cost of Goods Sold section often includes accounts like COGS - Product A, COGS - Product B, COGS - Consulting. Xero's default is a single COGS account with cost tracked via the invoice line-item detail. If you don't consolidate these before migration, your COGS GL codes fragment, and your gross margin reporting breaks. A food distributor we worked with had 8 COGS accounts (Produce, Dairy, Frozen, Dry Goods, etc.); they mapped 1:1 to Xero, but Xero's native profit-and-loss reports couldn't segment by product category anymore. They had to rebuild reporting in a BI layer, adding 3 days of work post-migration. Break 6: Accumulated depreciation accounts don't depreciate in lock-step QB ties fixed asset accounts to their accumulated depreciation accounts by account p