Migration

Nothing goes live until the trial balance ties

A botched migration does not cause an outage. It causes wrong numbers that nobody notices until a year-end review, which is far worse. So we treat reconciliation as a gate rather than a report — the migration cannot advance past a period that does not agree to the penny.

Their QuickBooksas filed
1000 · Cash412,880.14
1200 · Accounts receivable286,401.00
2010 · Accounts payable(94,220.55)
4000 · Revenue(1,842,110.00)
6000 · Operating expense1,237,049.41
Trial balance0.00
erp.io shadow ledgercomputed
1000 · Cash412,880.14
1200 · Accounts receivable286,401.00
2010 · Accounts payable(94,220.55)
4000 · Revenue(1,842,110.00)
6000 · Operating expense1,237,049.41
Trial balance0.00

184 consecutive days tied · variance $0.00

Reconciled per account, per periodRead-only until cutoverFixed price after diagnostic

The pipeline

Six stages. Two of them are gates.

A gate is not a checkpoint someone signs off under deadline pressure. It is a condition the pipeline enforces: a variance sends the work back to mapping, and is never waived.

Extractread source, no writesMapaccounts, customers, vendorsLoadinto a staged tenantReconciletrial balance, per periodgate · must tieReviewyour controller signsCut oversource goes read-onlygate · must tievariance → back to mapping, never waivednothing advances past a gate until the trial balance agrees to the penny

What moves

Six categories, and the detail inside each one.

Chart of accounts

Mapped, merged where you want it merged, and approved row by row before anything loads. Dead accounts get retired rather than carried forward for another decade.

Customers and vendors

Deduplicated against the twelve spellings of the same company name, with open balances tied to their control accounts.

Open items

Unpaid invoices and bills with their original dates, terms, and ageing intact — because ageing that resets at cutover is worse than useless.

Historical detail

One to two years of transactional history as standard, which is what an auditor expects and what keeps the migration verifiable.

Fixed assets

Cost, accumulated depreciation, method, and remaining life — not just net book value, which is the shortcut that breaks next year.

1099 and tax history

Year-to-date vendor payment totals so January filing does not require the old system to still be running.

What we migrate, and what we deliberately do not

The standard scope is opening balances plus one to two years of transactional detail. This is not us being lazy about the rest — it is the scope that auditors expect and the one that stays verifiable. A full-history migration is available, quoted separately, and we will usually try to talk you out of it.

The reason is that historical fidelity decays. Transactions from six years ago were entered under a chart of accounts that has since been restructured, by people who have left, under conventions nobody documented. Moving them creates a body of data that looks authoritative and reconciles to nothing. Keeping the old system available read-only for the statutory retention period costs a fraction as much and is what most auditors actually prefer.

Migrated history that nobody can reconcile is not an asset. It is a liability with good formatting.

Closed periods stay closed

We never rewrite a period your accountant has signed. Prior-year balances arrive as opening balances, and the signed statements remain the record for those years. If a prior period genuinely needs restating, that is an accounting decision your CPA makes deliberately — not a side effect of a data load.

The variance report is the deliverable

Every migration produces a per-period, per-account variance report showing that the loaded balances agree with the source. Early runs show variances, and that is the process working — timing differences, unmapped accounts, and classification disagreements surface in week one instead of detonating on a cutover weekend.

You keep that report. It is what you hand your auditor when they ask how you know the conversion was complete, and it is the single artefact that makes the difference between a migration you can defend and one you have to explain.

Cutover, when the shadow ledger has been running

If you have been on Connect, this is much less of an event. The shadow ledger has already been reconciling against your books daily for months, so the migration is not a load and a leap — it is turning off the write-back on a ledger that has already demonstrated it agrees. We will not sell a cutover until three consecutive closed months have tied at zero variance, which is a gate on our revenue as well as on your risk.

Source systems

Where you are coming from.

QuickBooks Desktop is its own project

Desktop is a genuinely different piece of work from QuickBooks Online — QBXML, the SDK, IIF files, and direct company-file access rather than a modern API. It is quoted separately and takes longer. Any vendor treating them as one line item has not done a Desktop conversion.

Questions

What people ask first.

How long does a migration take?
A single-entity QuickBooks Online conversion with two years of history is typically three to four weeks from kickoff to cutover, most of which is reconciliation and review rather than data movement. Multi-entity and Desktop take longer. We give a fixed timeline with the scope.
Can we run both systems in parallel?
Yes, and if you came through Connect you already have been — that is what the shadow ledger is. For direct migrations we run a parallel period before cutover and reconcile it, which is the same principle compressed into weeks.
What happens to the old system?
Keep it read-only for your retention period. It costs very little and it is what your auditor will want for prior years. We help you plan the wind-down but we do not recommend switching it off at cutover.
Who signs off that the migration is correct?
Your controller or CPA, against the variance report. We will not declare a migration complete on our own authority, because the person who has to defend the numbers should be the person who accepted them.
What does it cost?
Ledger cutover starts at $18,000 for a single entity and $45,000 for multi-entity with intercompany history. Full-history migrations and QuickBooks Desktop are quoted after a diagnostic.

Get a written migration scope.

Source system, entity count, volume, and history depth. You get a fixed price and a timeline, not a range.