You export from QuickBooks. You import to Xero. Three weeks later, your accountant emails: reconciliation won't close. Your GL code structure got partially flattened. Tax settings didn't translate. Multi-currency transactions split unevenly. Custom fields vanished. And now you're hunting line by line through thousands of rows to find where the divergence started. This happens in roughly 60% of migrations. Not because Xero is worse or QuickBooks is broken, but because the two platforms map their accounting logic differently. One platform's assumption becomes another's orphaned edge case. The migration tools flag the obvious stuff—supplier name, invoice number—but leave the structural gaps untouched. The good news: you can catch and fix these nine fields before they become a three-month reconciliation nightmare. This checklist works. I've watched teams use it to cut post-migration audit time from 8 weeks to 2. The nine fields that always export dirty These aren't bugs. They're structural incompatibilities baked into how each platform stores and validates data. Knowing which ones to audit first saves weeks of guessing. 1. GL code hierarchies and account numbers QuickBooks lets you nest accounts five or six levels deep. Xero flattens to two or three. When you export, deeply nested codes either truncate or map to a parent account, silently collapsing expense categories you relied on for cost allocation. QuickBooks exports: 5000-5100-5110-5111 (Payroll > Salaries > Regular > Base) Xero imports: 5111 (Payroll - Regular Base) — the hierarchy collapses, and your cost-center roll-up disappears Catch it: Run a GL code count report in both systems before and after import. If the total GL line items drop by more than 5%, you've lost nesting structure. 2. Multi-currency setup and default accounts QuickBooks sets a default GL account per currency pair. If you deal in USD, SGD, and MYR, each currency has its own revaluation gain/loss account. When you migrate, Xero may not inherit these defaults or may assign them incorrectly, causing foreign exchange entries to post to the wrong account. Audit: Pull a 90-day transaction report filtered by currency. Check that every FX gain or loss posts to the correct account in Xero. Run the same filter in QuickBooks and reconcile the account totals. A variance of more than 2–3% usually signals misrouted FX entries. 3. Tax code mappings and calculation methods QuickBooks has tax codes (Non-Taxable, Taxable, Taxable Purchases). Xero has tax types and rates baked into line items. When you export, a 6% tax code might map to Xero's 6% rate, but the rounding rules or the GL account it posts to can differ. Compound this across 500 invoices and your tax payable account diverges. Impact: A 0.5% rounding error per transaction × 500 invoices = ₹2,500–₹5,000 in unreconciled tax payable by month-end. Audit: Pull the Tax Summary report from both systems for the same period. Compare gross tax collected. Anything over 1% divergence needs manual correction. 4. Customer and supplier address data—billing vs. shipping QuickBooks stores one address per customer; Xero stores billing, shipping, and contact addresses separately. When you export customer records, the mapping tool usually picks billing. Shipping address data orphans. This matters less for accounting, but if you're reconciling customer master data or running an audit on invoice addresses, you'll see missing fields. 5. Invoice line-item GL codes (and custom line allocations) In QuickBooks, you can assign a GL code to each invoice line. Some teams do this for job costing or cost-center allocation. When you export, these line-level GL assignments either don't migrate or map to the item's default account, obliterating custom allocations. Example: A 10-hour consulting invoice splits 6 hours to Project A (GL 4110) and 4 hours to Project B (GL 4120). On export, both hours post to the default Consulting Income account (GL 4000). Your project revenue reports now show zero breakdown by project. Catch it: Audit 20–30 multi-line invoices in both systems. Verify the sum of GL-allocated amounts in QuickBooks matches the item-level sum in Xero. If they diverge, you've lost line-item allocation. 6. Custom fields on invoices, bills, and journal entries QuickBooks lets you attach custom fields (Job Name, Department, Cost Code) to invoices. Xero's custom fields work differently and often don't migrate automatically. If your invoice template or your reporting depends on these fields, you'll lose the data. Xero workaround: Use Tracking Categories instead. But this only works if you set them up before import. If you don't, custom data is orphaned. 7. Bank reconciliation detail (cleared vs. uncleared transactions) QuickBooks marks transactions as cleared, uncleared, or reconciled. Xero tracks these differently—as Authorised or Matched. When you export, the reconciliation status may not map perfectly, and you might lose the history of which transactions cleared