A Sage 200 to Xero migration can look successful at first glance and still be wrong underneath. The Trial Balance may balance while customer balances, supplier balances, banks, VAT, foreign currency or transaction allocations do not properly reconcile.
We have reviewed Sage 200 to Xero migrations where the problems only became obvious after go-live: dummy control accounts, merged customer and supplier records, incomplete contacts, incorrect tax treatment, unreconciled banks and transactions imported in a way that changed what they represented.
That is why a successful migration is not simply an import that completes without an error. It is a migration where the accounting history remains useful, traceable and reconcilable to Sage 200.
What are the most common Sage 200 to Xero migration mistakes?
The most damaging mistakes are usually caused by forcing differences to balance, losing the meaning of transactions, or validating only headline figures. In real migration reviews, we have seen apparently successful conversions hide problems in aged debtors and creditors, VAT, bank reconciliation, retained earnings and contact history.
A Trial Balance that balances does not prove a Sage 200 to Xero migration is correct. It is one validation point. The data underneath it still needs to reconcile.
1. Forcing the Trial Balance to balance
One of the most serious problems we have encountered is the use of additional debtor or creditor control entries to make the migrated Trial Balance agree.
This can make the headline numbers appear correct without resolving the underlying difference. If the customer ledger, supplier ledger or individual transactions do not support the control-account balance, the migration has not been reconciled simply because the Trial Balance totals match.
How to avoid it: reconcile control accounts back to the underlying aged ledgers and investigate differences rather than posting balancing figures to make them disappear. Any legitimate migration adjustment should be documented and explainable.
2. Merging customers and suppliers incorrectly
Sage 200 can contain separate customer and supplier records with the same or very similar names. Xero uses a shared contact structure, so contact mapping needs to be deliberate.
We have reviewed migrations where customer and supplier records were merged simply because their names matched. The result was transaction histories and statements that no longer reflected the source system correctly.
How to avoid it: build and review the contact mapping before import. Where one organisation legitimately acts as both customer and supplier, preserve the accounting history carefully rather than assuming identical names mean identical records.
3. Migrating incomplete customer and supplier records
A contact list is not just a list of names. Missing or incomplete customer and supplier information can make it harder to validate balances, identify transactions and support the finance team after go-live.
In migration reviews, we have seen incomplete contact data sit alongside aged-ledger differences and misposted transactions. That makes investigation much harder because the audit trail between Sage 200 and Xero has already been weakened.
How to avoid it: agree which contact fields are required, clean obvious duplicates deliberately and validate the migrated contact population against the source before sign-off.
4. Getting historical VAT treatment wrong
Matching an invoice total is not enough if its tax treatment changes during migration. We have seen historical sales transactions imported as non-taxable even though the original Sage 200 transaction carried VAT and should be represented accordingly in Xero.
This matters because the historical data should still make accounting sense when someone investigates a transaction later. Migrated transaction history and previously filed VAT returns are related, but they are not the same thing; Xero does not recreate old filed returns simply because historical transactions have been imported.
How to avoid it: map tax rates deliberately, validate net, VAT and gross values, and compare tax treatment with the source data. For more detail, see our guide to historical VAT and GST when moving to Xero.
5. Misclassifying overpayments and refunds
Not every bank movement should become a generic Spend Money or Receive Money transaction. Overpayments, refunds and other settlement activity have an accounting relationship to customers, suppliers and documents.
We have reviewed migrations where those relationships were lost and the movement was recreated as an ordinary bank transaction. The bank value may look right, but customer or supplier statements and the transaction trail no longer tell the same story as Sage 200.
How to avoid it: identify transaction types before transformation and preserve their accounting meaning wherever Xero supports an appropriate representation.
6. Recreating historical bank reconciliation manually
Historical bank data needs a controlled migration and reconciliation method. Re-keying or manually reconciling large volumes of historical items in Xero introduces unnecessary opportunity for inconsistency and makes the migration harder to evidence.
We have encountered migrated organisations where bank accounts had never been fully reconciled back to the source position. That can leave the finance team starting in Xero with uncertainty on day one.
How to avoid it: define the bank cut-off, migrate the required transaction history systematically and reconcile the resulting Xero bank position to the agreed Sage 200 source reports.
7. Checking only the Trial Balance
This is the mistake behind many of the others. A Trial Balance is essential, but it cannot tell you whether contacts have been merged, VAT has been changed, invoices are allocated correctly or individual bank items have been represented properly.
A robust validation should go underneath the Trial Balance into the General Ledger, aged receivables, aged payables, VAT/tax, banks, control accounts, foreign currency and selected transaction-level checks.
Our Xero migration validation and reconciliation guide explains these checks in detail.
8. Ignoring retained earnings and historical cut-off issues
Historical migrations span accounting years, so brought-forward positions, year-end journals and retained earnings need careful treatment. We have reviewed migrations where retained earnings did not reconcile even though other headline balances appeared close.
Sage 200 is also accounting-period driven in ways that do not map perfectly to Xero's date-driven reporting. Year-end adjustments can therefore produce differences if transaction dates, accounting periods and the migration cut-off are not understood before processing.
How to avoid it: agree the historical start point and cut-off, identify year-end and prior-period adjustments, and reconcile the opening position plus each relevant historical period rather than treating retained earnings as a balancing destination.
9. Going live with unresolved differences
A known reconciliation difference does not become less important because the deadline has arrived. Once a team starts posting live activity into Xero, separating migration issues from new accounting activity becomes more difficult.
Sometimes a migration can be repaired. Sometimes the underlying migrated data has been compromised enough that starting again is the safer option. The important decision is to make that assessment before unresolved differences become embedded in the live system.
How to avoid it: complete the agreed reconciliation, document genuine exceptions and obtain review/sign-off before the migrated organisation becomes the accounting system of record.
10. Not agreeing the validation evidence before the migration
Businesses often spend a lot of time discussing how many years will be migrated and very little time asking how they will know the result is correct.
Before work starts, you should know which source reports will be retained, what will be reconciled, what evidence you will receive and how exceptions will be handled. This is particularly important for multi-entity, foreign-currency or heavily customised Sage 200 environments.
How to avoid it: make reconciliation part of the migration scope, not an optional check at the end. Ask what happens if the Trial Balance does not reconcile, whether aged ledgers and banks are checked, and how legitimate source-to-Xero differences will be documented.
A real migration lesson: “balanced” and “reconciled” are not the same thing
We have been asked to review failed Sage 200 to Xero migrations where the initial symptoms were reconciliation headaches after go-live. Looking underneath the headline balances exposed combinations of dummy control accounts, incomplete customer and supplier records, retained-earnings differences, unreconciled banks, tax errors and transaction-classification problems.
Those cases are why we treat reconciliation as part of the migration itself. A good result should not require the finance team to spend the next few months discovering what changed.
How to cross-check a Sage 200 to Xero migration yourself
Do not rely only on a reconciliation pack or a statement that the migration is complete. Perform your own cross-checks. The best tests are not the easiest transactions: deliberately choose records that are more difficult to transform and therefore more likely to expose a mapping or allocation problem.
Pick the sample yourself. Choose transactions directly from Sage 200 and then find the same records in Xero. If possible, do not tell the migration provider in advance which transactions you are going to test.
- An overpayment: check that it is still represented as an overpayment against the correct contact, rather than becoming a generic Receive Money or Spend Money transaction.
- A receipt allocated across several invoices: check a many-to-many or one-to-many allocation, not just a simple one-payment-to-one-invoice example. Confirm the same documents are settled and the remaining balances agree.
- A part-paid invoice: verify the original invoice, the payment allocation and the outstanding amount.
- A credit note or refund: check that its relationship to the customer, supplier and original accounting history has not been lost.
- A foreign-currency transaction: compare source currency, base-currency value, exchange rate and outstanding position where relevant.
- A VAT transaction using a less-common tax code: compare net, VAT and gross values, not just the invoice total.
- A business that exists as both a customer and supplier: confirm the records and histories have not been merged incorrectly.
- A newly created contact close to cut-off: check that late additions in Sage 200 were included in the final extraction and did not disappear between trial and final migration.
- A journal with multiple lines, departments or cost centres: make sure the detail has not been flattened or mapped to the wrong Xero Tracking category.
- An unusual control-account transaction: if your Sage 200 data contains legitimate direct postings or corrections, trace them specifically rather than assuming the control balance proves they came across correctly.
Reconcile sideways, not just top-to-bottom
A good check does not stop at Sage Trial Balance → Xero Trial Balance. Cross-check Sage debtors to Xero aged receivables and then to the debtor control account; Sage creditors to Xero aged payables and the creditor control; Sage bank ledgers to the migrated bank position; and Sage VAT detail to the tax treatment of the migrated transactions.
The numbers should agree to the source and make sense inside Xero. That is the difference between importing figures and proving a migration.
Red flags to look for in the migrated Xero organisation
Cross-check what came across, but also look for things that did not exist in Sage 200. New accounts and journals are not automatically wrong, but they should always have a clear explanation and supporting reconciliation.
Review the Xero Chart of Accounts and journals for unfamiliar descriptions such as Debtors Control Adjustment, Creditors Control Adjustment, Migration Difference, Suspense, Conversion Balance or Historical Adjustment. Providers may use different names, so the label itself is not the issue.
The question is simple: what does this balance represent? If an account or journal has been added purely to make the Trial Balance agree while the aged ledgers or underlying transactions still differ, the reconciliation problem has been hidden rather than solved.
Other warning signs include unexpectedly duplicated or merged contacts, large volumes of generic Spend Money/Receive Money entries where Sage held customer or supplier transactions, banks that cannot be reconciled to the agreed cut-off, unexplained retained-earnings differences and VAT values that do not match the source transaction detail.
Do not trust migration promises blindly
Not every migration provider delivers what they promise
We wish we did not have to include this section, but we have reviewed enough failed migrations to know that genuinely poor migration work exists.
We have seen businesses pay thousands of pounds for Sage 200 to Xero migrations that were presented as complete, only to discover afterwards that the data did not properly reconcile. Problems have included dummy debtor and creditor control accounts, unreconciled banks, incorrect VAT treatment, incomplete customer and supplier records, merged contacts, incorrect transaction classifications and retained-earnings differences.
If a provider promises the world, be curious about how they intend to deliver it. Ask for evidence, not just impressive numbers.
A polished website, a large headline migration count or a confident sales pitch does not prove experience with complex Sage 200 historical migrations. Moving opening balances, running a standard automated conversion and rebuilding years of Sage 200 transactional history are very different projects.
If a provider says they have completed hundreds or thousands of migrations, ask what systems those migrations involved. If they promise 100% accuracy, ask how accuracy is measured. If they say everything will reconcile, ask exactly which reports will be supplied. If they claim extensive Sage 200 experience, ask for relevant examples, independent reviews or references from comparable projects.
Price is not proof of quality either. We have reviewed failed migrations that were not cheap. Paying thousands of pounds does not guarantee that the migration methodology, validation or reconciliation is robust.
These are not awkward questions. You are handing over years of financial history and you are entitled to understand exactly how it will be transformed, tested and signed off.
- How many Sage 200 to Xero migrations have you completed, rather than migrations in general?
- Can you show examples involving a business of similar size, history and complexity?
- Can I speak to a previous Sage 200 client or review independent feedback?
- What exactly will you reconcile after migration?
- Will I receive the reconciliation evidence, or simply be told that the figures balance?
- How do you handle overpayments, part payments and receipts allocated across multiple invoices?
- How do you handle historical foreign currency and exchange rates?
- How are Sage 200 departments and cost centres mapped?
- How do you prove VAT treatment has been preserved?
- What happens if something does not reconcile?
- Will you introduce balancing journals, suspense accounts or additional control accounts? If so, why?
- Can I review the migrated Xero organisation before accepting the work?
If something sounds too easy, too fast or too perfect, ask more questions — not fewer.
What should a Sage 200 to Xero reconciliation pack contain?
A reconciliation pack should let someone other than the migration provider understand why the migrated Xero organisation can be trusted. The exact reports depend on scope, but for a detailed historical migration we would normally expect evidence covering the key accounting balances and the exceptions identified during the work.
- Source and migrated Trial Balance at the agreed cut-off, with any genuine differences explained.
- Aged receivables and aged payables reconciled both to Sage 200 and to the relevant Xero control accounts.
- Bank balances and reconciliation evidence at the agreed cut-off.
- VAT/tax checks appropriate to the historical scope, including transaction-level testing where required.
- Foreign-currency checks where the business uses multiple currencies.
- Retained earnings/opening-position checks across the historical start point and year ends.
- Exception evidence for items that cannot map one-for-one between Sage 200 and Xero.
- A record of sample transaction cross-checks, including complex allocations rather than only straightforward invoices.
The purpose is not to create paperwork for the sake of it. It is to make the migration explainable. If a difference exists, you should be able to see what caused it, how it was treated and why the resulting Xero data is still correct.
Sage 200 details that also need planning
The ten mistakes above focus on failures that can damage the migrated accounting history. There are also several Sage 200-specific differences that need to be designed into the migration from the beginning.
Accounting periods and transaction dates
Sage 200 reporting can depend on accounting periods as well as dates. Xero is primarily date-driven. Year-end or prior-period adjustments therefore need to be understood and mapped deliberately.
Foreign currency
Historical foreign-currency transactions need more than converted GBP values. Source currency, exchange rates and the resulting base-currency position may all matter to the audit trail and reconciliation.
Departments and cost centres
Sage 200 structures do not automatically become a good Xero Tracking structure. Naming, case, combinations and reporting requirements should be reviewed before mapping rather than copied blindly.
Accruals, prepayments and deferred income
Recurring or system-generated accounting treatments may need to be represented differently in Xero. The objective is to preserve the accounting result and useful history without pretending the two systems work identically.
Add-ons and bespoke Sage 200 structures
Sicon, WAP, Projects, Manufacturing and bespoke developments can affect where information lives and what needs to be extracted. No two Sage 200 databases should be assumed to have the same migration path.
Questions to ask before a Sage 200 to Xero migration
- What exactly will be migrated: opening balances, detailed history, or both?
- How will the Trial Balance, aged debtors, aged creditors and banks be reconciled?
- How will VAT/tax treatment be validated?
- How are customer and supplier records mapped where names overlap?
- How are overpayments, refunds, allocations and foreign-currency transactions handled?
- What happens if the migration does not reconcile?
- What reconciliation reports or exception evidence will you receive?
- Can you review the migrated organisation before final handover?
- Has the provider handled Sage 200 environments with a similar level of complexity?
Independent reviews, references and comparable case studies are useful, but the technical questions above are just as important. A provider should be able to explain how the accounting data will be validated, not simply how it will be imported.
What does a successful Sage 200 to Xero migration look like?
Ideally, it is quite boring. The finance team can open Xero, find the history they expected, trace balances back to Sage 200 and continue working without unexplained differences.
The Trial Balance reconciles. The aged ledgers support the control accounts. Banks agree to the defined cut-off. VAT and tax treatment is explainable. Contacts, allocations and transaction types still make sense. Any legitimate difference between Sage 200 and Xero is documented rather than hidden.
For the full process, see our step-by-step Sage 200 to Xero migration guide, or explore our Sage 200 to Xero migration service.
Planning a Sage 200 to Xero migration?
Tell us how your Sage 200 environment is structured, how much history you need and whether the project includes multiple entities, foreign currency or restructuring.

