QuickBooks Online holds your transaction history, but the export is incomplete. Custom approval workflows vanish. Multi-currency exchange rates don't port cleanly. Tax code logic stays behind in QBO, invisible in your new platform. Most teams discover this gap 30 days post-migration, when their accountant asks why the Q3 audit trail doesn't match GL history. A deliberate 14-day pre-migration audit prevents the orphan data nightmare. This playbook maps what transfers clean, what rebuilds in Xero or Zoho, and what you archive in QuickBooks as read-only reference. What QuickBooks exports cleanly QBO's standard export generates a CSV with transaction-level detail: invoice number, date, amount, account coding, customer name, memo. This is the spine of your data. It ports to Xero, Zoho, or Wave with minimal friction—the chart of accounts aligns, GL postings match, transaction dates flow through. Transaction detail alone is not audit-trail completeness. Audit trail includes who changed what, when, and why . QuickBooks tracks this internally—every edit to an invoice, every approval, every payment match—but the export does not include that metadata. Xero will begin tracking changes from day one of your new instance, but your QBO history becomes an archive, not a living record. This matters for three reasons: Tax audit defensibility. If the IRS or tax authority asks "show me the original invoice and every change to it," you have QBO archives plus Xero/Zoho records from migration forward. The chain is clear if you label it. Approval workflow visibility. If your process requires manager sign-off on invoices over ₹50K, and QBO tracked that approval, your new platform won't see the approval history unless you document it separately. Variance investigation. When a customer disputes an invoice amount, or your CFO notices GL drift in month 8, you need to trace back to the original transaction and every change. An audit log—even a simple one kept in QBO—saves hours of detective work. The 14-day pre-migration audit: Four reconciliations you must do Before you export anything, run these four checks. They take 2–3 hours, prevent surprises, and give your accountant proof that migration is clean. 1. General Ledger reconciliation Pull your QBO trial balance as of the day before migration. Reconcile it line by line against your bank statements, credit card feeds, and loan documents. Every account balance must match external reality—bank balance, loans, customer deposits held as liabilities. Why? If you migrate while GL is out of balance, you inherit the error in your new platform. Xero will import the incorrect balance, and you'll spend weeks chasing a problem that started in QBO. Red flags that block migration: Checking account balance in QBO differs from your actual bank balance by more than ₹500 "Suspense" or "Clearing" accounts with balances (these are holding tanks for unresolved transactions) Loan balance in QBO does not match your lender's statement Sales tax payable account is more than 15 days stale (indicates unremitted tax liability) 2. Accounts Receivable aging report Generate a full AR aging from QBO, listing every open invoice by customer and days outstanding. Cross-check against your email confirmations and customer portals. If a customer insists an invoice is paid, but QBO shows it open, resolve it before migration. Why? Xero and Zoho will import open invoices as-is. If you migrate dirty AR, your new platform inherits disputed invoices, and dunning workflows chase phantom debt. It's demoralizing for customers and creates confusion in your accounting records. Action items: Contact customers with invoices over 45 days old; confirm they're actually paid or disputed For invoices marked paid in email but open in QBO, match the payment in your bank feed or mark the invoice as written off Note the total AR you're migrating; it should match your QBO balance sheet 3. Accounts Payable aging report Pull your AP aging: every open bill by vendor and days outstanding. Check it against your recent vendor statements. If a vendor says a bill is paid but QBO shows it open, reconcile before you move. Why? Open AP in Xero or Zoho will trigger payment reminders. If the bill is already paid, you'll issue duplicate payments or waste time investigating discrepancies. 4. Tax code inventory and mapping QuickBooks uses "sales tax codes" or "tax codes" to track which invoices are taxable and which are exempt. Each code ties to a tax rate (e.g., 6% SST in Malaysia, 10% GST in Singapore). When you export QBO, the tax code labels come with the transactions, but the logic does not. Xero and Zoho use different tax code structures. Xero calls them "Tax Types"; Zoho calls them "Tax Groups." If you don't map QBO tax codes to Xero/Zoho equivalents before import, your invoices may fall into the wrong tax category, and your monthly tax reconciliation will fail. Mapping process: List every tax code active in QBO (e.g., "SGD_GST_10", "MYR_SST_6", "Zero Rat