Skip to content

Sage Intacct to Xero Migration: How a 5-Day Financial Data Migration Was Completed

Sage Intacct to Xero migrations are data transformations, not simple transfers. This guide covers entity mapping, API extraction, structural incompatibilities, a day-by-day timeline, and post-migration validation.

Raajshekhar Rajan Raajshekhar Rajan · · 7 min read
Sage Intacct to Xero Migration: How a 5-Day Financial Data Migration Was Completed
TALK TO AN ENGINEER

Planning a migration?

Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.

Schedule a free call
  • 1,500+ migrations completed
  • Zero downtime guaranteed
  • Transparent, fixed pricing
  • Project success responsibility
  • Post-migration support included

Moving financial data from Sage Intacct to Xero is not a simple export-import job. Intacct is a multi-entity, multi-dimensional ERP. Xero is a streamlined accounting platform built for smaller organizations. The structural gap between them is the real challenge — not the timeline.

This post documents what actually happens during this migration path: what transfers cleanly, what gets flattened, what breaks, and how to validate the result.

Why Sage Intacct to Xero Migrations Are Structurally Complex

Sage Intacct supports true multi-entity consolidation, user-defined dimensions (locations, departments, classes, projects), and deep transactional history across modules like GL, AP, AR, and fixed assets. Xero does not have direct equivalents for most of these structures.

This means the migration is not just a data transfer — it is a data transformation. Key structural incompatibilities include:

Sage Intacct Capability Xero Equivalent Migration Impact
Multi-entity consolidation Separate Xero organizations (no consolidation) Each entity migrates independently. Inter-company transactions require manual reconciliation post-migration.
User-defined dimensions (e.g., Location, Department, Class, Project) Tracking Categories (max 2 active) Most dimensions get flattened or dropped. Only the two most critical can map to Xero tracking categories. Others must be archived or concatenated into description fields.
Chart of Accounts (unlimited depth) Chart of Accounts (flat, with account types) Account hierarchy is lost. Sub-accounts flatten into Xero's single-level structure. Account type mapping (Intacct → Xero) requires manual review.
AP / AR with custom fields Bills / Invoices (limited custom fields) Custom field data that does not map to a Xero-native field is typically moved to line-item descriptions or lost.
Fixed Assets module No native fixed assets module Fixed asset registers do not migrate into Xero. They must be maintained externally (e.g., in a spreadsheet) or handled through a Xero add-on.
Attachments on transactions Attachments via Xero Files Attachments can transfer, but the linking mechanism differs. Each attachment must be re-associated with its corresponding Xero transaction.
Historical transactions (multi-year) Journal imports or opening balances Full transaction history can be imported as journals, but Xero's reporting will not replicate Intacct's dimensional breakdowns on historical data. Most migrations use a fiscal year cutoff: detailed transactions for the current period, opening balances for prior years.
Contacts (customers + vendors unified) Contacts (single contact type) Intacct separates customers and vendors. Xero uses a single contact record. Duplicates must be merged or flagged during migration.
Warning

The most common mistake in a Sage Intacct to Xero migration is assuming the data will "just fit." Xero's tracking category limit of two means that any Intacct environment using three or more dimensions will lose granularity. Decide which dimensions matter before extraction — not during import.

How the Sage Intacct API Extraction Works

Sage Intacct does not offer a bulk data export button. Extracting data at scale requires API access, which means setting up authentication and understanding the available endpoints.

OAuth App Setup

To connect to the Sage Intacct Web Services API, the account owner must generate an OAuth application within their Intacct tenant. The steps:

  1. Navigate to Company → Web Services Authorizations in the Sage Intacct admin panel.
  2. Create a new Web Services sender ID (or use an existing one if your subscription includes API access).
  3. Generate API credentials — a sender ID and sender password — that authorize external applications to make API calls.
  4. Provide the company ID, user ID, and user password for the specific Intacct entity being migrated.
Info

API access is not available on all Sage Intacct subscription tiers. Confirm that your contract includes Web Services access before planning a migration timeline. If it does not, Sage can typically enable it, but this adds lead time.

Once credentials are in place, data extraction happens through Intacct's XML-based API. The key objects to extract typically include:

  • GLENTRY / GLBATCH — General ledger transactions
  • APBILL / APPAYMENT — Accounts payable bills and payments
  • ARINVOICE / ARPAYMENT — Accounts receivable invoices and payments
  • GLACCOUNT — Chart of accounts
  • CONTACT — Customer and vendor records
  • DEPARTMENT / LOCATION / CLASS — Dimensional data
  • SODOCUMENT — Sales order documents (if applicable)

The API supports pagination through readMore tokens, and rate limits depend on your Intacct subscription tier. For large datasets, extraction runs are typically batched by module and date range.

Importing Into Xero

Xero accepts data through two primary channels:

  • Xero API (OAuth 2.0) — Best for programmatic imports of invoices, bills, contacts, bank transactions, and manual journals. Rate-limited to 60 calls per minute per connection.
  • CSV import — Available for contacts, chart of accounts, invoices, and bank statement lines. Useful for smaller datasets or one-time loads, but limited in what it can carry (no attachments, no custom field mapping).

For migrations involving thousands of records, the API path is the only viable option. CSV imports hit formatting and volume limits quickly, and they cannot handle attachment linking or transaction-level metadata.

Fiscal Year Cutoff Strategy

Most Intacct-to-Xero migrations do not transfer the full transaction history record-by-record. Instead, the standard approach is:

  1. Set a cutoff date — typically the start of the current fiscal year.
  2. Import opening balances as a single journal entry in Xero as of that cutoff date.
  3. Import detailed transactions only for the period after the cutoff.
  4. Archive historical Intacct data separately (PDF reports, data exports) for audit and compliance purposes.

This approach avoids bloating Xero with years of dimensionally-rich data it cannot properly report on.

A 5-Day Migration Timeline: What Each Day Looks Like

We completed this migration path for a client in five business days. Here is the general structure of how an aggressive timeline breaks down:

Day Activity
Day 1 API credential setup, entity scoping, data audit. Confirm which Intacct modules are in use, which contain data, and which Xero structures they map to. Agree on fiscal year cutoff date.
Day 2 Full data extraction from Sage Intacct via API. Transform extracted data into Xero-compatible formats. Resolve dimension-to-tracking-category mapping decisions.
Day 3 Test import into a Xero trial or sandbox organization. Identify gaps — missing contacts, unmapped accounts, attachment failures. Run initial trial balance comparison.
Day 4 Fix mapping issues found in Day 3. Re-import corrected data. Reconcile AR aging, AP aging, and bank balances between Intacct reports and Xero.
Day 5 Final production import into the live Xero organization. Post-migration validation (see below). Client sign-off.
Info

A five-day timeline is achievable but requires pre-work: API access must already be confirmed, the Xero organization must be set up, and the client must be available for real-time decisions on dimension mapping and cutoff dates. Without that readiness, plan for two to three weeks.

Post-Migration Validation

Data integrity confirmation is the step most migration providers skip or hand-wave. Here is what a proper validation looks like for this migration path:

  1. Trial balance comparison — Pull the trial balance from Intacct as of the cutoff date. Compare it line-by-line against Xero's trial balance for the same date. Every account must match.
  2. AR aging reconciliation — Compare the aged receivables report from both systems. Open invoice counts and total amounts must align.
  3. AP aging reconciliation — Same process for payables. Outstanding vendor bills must match.
  4. Bank account balances — Verify that each bank account balance in Xero matches the corresponding Intacct bank register.
  5. Contact count verification — Confirm that the number of active customers and vendors in Xero matches the source. Check for duplicates caused by the customer/vendor merge.
  6. Attachment spot-check — Randomly select 20–30 transactions and verify that attachments are present and linked to the correct record in Xero.
  7. Tracking category spot-check — For transactions that carried dimensional data in Intacct, verify that the mapped tracking categories appear correctly in Xero.

If any discrepancy is found, trace it back to the transformation layer — not the source or destination. The mapping logic is where errors live.

Common Failure Modes in This Migration Path

  • Dimension loss without documentation. The client agrees to flatten dimensions during migration, then six months later their CFO asks why departmental reporting is gone. Document every mapping decision in writing before migration begins.
  • Opening balance mismatches. If the cutoff journal does not account for retained earnings, the Xero balance sheet will not balance. Always include a retained earnings line in the opening balance journal.
  • Duplicate contacts. Intacct allows a single entity to be both a customer and a vendor. Xero uses one contact record. If not de-duplicated during transformation, the contact list doubles.
  • Attachment orphaning. Attachments extract from Intacct as files, but linking them to the correct Xero transaction requires matching on invoice/bill numbers. If numbering schemes change during migration, attachments land unlinked in Xero Files.
  • Rate limit throttling on Xero's API. At 60 calls per minute, importing 10,000+ records takes careful batching. Naive implementations hit 429 errors and stall.

Frequently Asked Questions

What data can you migrate from Sage Intacct to Xero?
Chart of accounts, GL transactions, AP bills and payments, AR invoices and payments, contacts (customers and vendors), and bank transactions can all transfer. Fixed assets, multi-entity consolidation structures, and most user-defined dimensions beyond two cannot migrate directly into Xero due to platform limitations.
How long does a Sage Intacct to Xero migration take?
With API access pre-confirmed and the Xero organization set up, an aggressive migration can be completed in five business days. Without that preparation, plan for two to three weeks.
What gets lost when migrating from Sage Intacct to Xero?
Multi-entity consolidation, dimensional reporting beyond two tracking categories, account hierarchy depth, fixed asset registers, and custom field data that has no Xero equivalent. These structural differences must be addressed in the migration plan before extraction begins.
Does Sage Intacct allow data export via API?
Yes, but API access requires Web Services authorization, which is not included in all subscription tiers. The account owner must generate API credentials (sender ID, sender password, company ID) in the Intacct admin panel.
How do you validate a Sage Intacct to Xero migration?
Post-migration validation includes trial balance comparison, AR and AP aging reconciliation, bank account balance verification, contact count checks, and spot-checks on attachments and tracking category assignments.

More from our Blog

7 Costly Mistakes to Avoid When Migrating Financial Data
Accounting

7 Costly Mistakes to Avoid When Migrating Financial Data

One error can corrupt your entire history. This in-depth guide reveals the 7 costliest mistakes to avoid, including botching opening balances, incorrect data mapping, and failing to run parallel reports. We cover the "what not to do" pitfalls, from "Garbage In, Garbage Out" to ignoring multi-currency complexities. Read this before you migrate to ensure 100% data integrity, avoid tax season nightmares, and achieve a stress-free "go-live" on your new accounting system.

Raajshekhar Rajan Raajshekhar Rajan · · 15 min read