Portmux is a Xero to QuickBooks migration service that moves your Chart of Accounts, customers, suppliers, invoices, bills, and bank reconciliation history into QuickBooks Online with opening balances tied to Xero's trial balance to the penny.
Xero and QuickBooks share the same accounting fundamentals (double-entry, accrual, bank rec) but differ in dimensional reporting (Xero uses Tracking Categories; QuickBooks uses Classes and Locations) and tax handling (Xero has flexible Tax Rates; QuickBooks Online uses Automated Sales Tax in the US). The migration's job is to translate cleanly between the two without losing transaction detail or audit trail.
Xero COA migrated to QuickBooks COA with account numbers, types, and tax codes preserved; Xero account codes carried forward.
Xero Contacts split into QuickBooks Customers and Vendors based on transaction history; contacts that are both become both records linked by the original Contact ID.
Sales Invoices (Approved, Paid, Voided) migrated to QuickBooks Invoices with line items, applied payments, and Tax Rate translated to QuickBooks tax codes.
Purchase Bills migrated to QuickBooks Bills with line items, expense accounts, applied bill payments, and attached supplier documents.
Xero bank account histories migrated to QuickBooks bank accounts with reconciled flag preserved and last-reconciled date carried forward.
Historical bank reconciliations preserved as QuickBooks reconciliation records so the audit trail of who reconciled what is intact.
Xero Manual Journals migrated to QuickBooks Journal Entries with original posting date, narration, and account splits.
Xero Inventory Items migrated to QuickBooks Items with tracking method, default sales/purchase accounts, and current quantity-on-hand.
Two Xero Tracking Categories mapped to QuickBooks Classes and Locations (QBO Plus); third-and-beyond categories become Tags or custom fields.
Xero Bank Rules (auto-categorize transactions on import) re-implemented as QuickBooks Bank Rules with the same conditions and target accounts.
Active Repeating Invoices in Xero migrated to QuickBooks Recurring Templates with the same schedule and customer.
Files attached to invoices, bills, and contacts migrated to QuickBooks Attachments with parent record linkage preserved.
We connect to Xero via OAuth 2.0 with Accounting Read scope and to QuickBooks Online via OAuth 2.0 with full company access. The Xero Accounting API enumerates Organisation, COA, Contacts, Invoices, Bills, Bank Transactions, and Manual Journals. Within 48 hours you see a full data inventory and a COA mapping draft for your controller's review.
COA mapping is locked first since every transaction depends on it. Tracking Categories are mapped to QuickBooks Classes and Locations. Contact split logic is defined (Customer-only, Vendor-only, both). Tax Rates map to QuickBooks Sales Tax codes; if you use US-based Xero with Avalara, we connect Avalara to QuickBooks during cutover.
QuickBooks Online file loaded with full transaction history. Trial balance, AR aging, AP aging, and bank balances reconciled to Xero to the penny. On cutover day, Xero is set to read-only (or downgraded to Free), QuickBooks becomes authoritative, and we run a final delta of post-cutover Xero transactions.
Every migration has its own gotchas. Here's what we plan for on this specific path.
Xero allows two Tracking Categories per organization. QuickBooks Online Plus allows Classes and Locations (effectively two dimensions). If your Xero org uses only two Tracking Categories, the mapping is clean. If you've used custom fields in Xero or need a third dimension, we use QuickBooks Tags or a custom field as a workaround.
Xero Tax Rates are flexible (you define name, rate, and assigned account). QuickBooks Online uses Automated Sales Tax (for US) or VAT codes (for international). US Xero migrations require re-deriving each Customer's tax setup; international migrations preserve VAT codes more directly.
Xero supports multi-currency natively. QuickBooks Online Plus supports multi-currency but with stricter rules (exchange rate locked at posting date; no foreign currency revaluation by default). We re-post foreign-currency transactions at the original Xero exchange rate so historical reporting matches.
Xero Payroll and QuickBooks Payroll are separate products with different state/locale support. We do not migrate payroll history automatically, instead we work with your payroll provider on a separate parallel track. Year-to-date payroll figures are migrated as opening balance journals so W-2s/T4s remain accurate.
Single-system migrations like Xero to QuickBooks run as Track A engagements: one source, one destination, up to 1M records, 4–6 weeks. Final price depends on object volume, custom field count, and integrations, scoped on a 20-minute call before any commitment. See full pricing →
Tell us what's in the source, where it's going, SaaS or custom, and when you need to be live. You'll walk away with a scoped quote, a named engineer, and a go-live date.