How to Verify a QuickBooks Desktop to Online Migration

Updated 2026-07-27 · 6 min read

To verify a QuickBooks Desktop to Online migration, run the Trial Balance in both systems for the same date and the same accounting method, then compare every account individually — not just the totals. Both files will balance internally even when accounts disagree, so a matching bottom line proves nothing on its own.

Why is comparing the totals not enough?

Because a trial balance always balances. That is what makes it a trial balance.

If $225 of inventory value fails to migrate, QuickBooks Online does not leave your books lopsided — the difference is absorbed somewhere else, most often into Opening Balance Equity, which the migration creates specifically as a holding account. The totals reconcile. The accounts underneath them do not.

QuickBooks Desktop QuickBooks Online Checking4,151.74 Checking4,151.74 Inventory Asset3,200.00 Inventory Asset2,975.00 Retained Earnings15,000.00 Opening Balance Equity225.00 TOTAL32,023.72 TOTAL32,023.72 Both totals agree. One account is out by 225.00, and the difference is sitting in a new account.
The failure that gets missed. Inventory is short by $225, the migration parks the difference in Opening Balance Equity, and the totals still tie out perfectly.

This is why Intuit's own guidance — open both systems, run the reports, compare them by eye — catches less than people assume. It asks you to eyeball dozens of rows across two screens, which is exactly the task humans are worst at.

Which reports should you compare, and in what order?

Start with the Trial Balance, then use the detail reports to explain whatever it flags. Working the other way round means reading thousands of rows looking for something that may not be there.

Order Report What it settles
1 Trial Balance (all dates) Which accounts disagree at all
2 Account Listing Whether an account changed type or vanished
3 A/R Ageing Detail Which invoices did not come across
4 A/P Ageing Detail Which bills did not come across
5 Inventory Valuation Summary Which items changed quantity or value

The Trial Balance narrows thousands of transactions to a handful of accounts. The detail reports then turn "receivables are off by $8,420" into "these three invoices are missing" — which is the answer you can act on.

What goes wrong most often?

What you see What it usually means
Opening Balance Equity has a balance Normal. It is the migration's plug account — but it must be cleared to Retained Earnings once balances are confirmed
Inventory value changed Costing method differences, quantities rebuilt rather than transferred, or items that arrived as non-inventory and lost tracking entirely
Sales tax account renamed Online renames tax accounts after the tax agency and runs its own tax engine
A/R or A/P off Specific invoices or bills did not migrate. Only the ageing detail will say which
An account changed type Invisible in a trial balance if the balance matches, and it moves the account to a different part of your balance sheet
Undeposited Funds off Payments received but not deposited often land differently

The first three are normal migration artifacts. The last three are real problems. Knowing which is which is most of the work.

What traps make the comparison itself wrong?

This is the part almost nobody writes about, and it matters more than the list above — these hand you a confident, wrong answer. We found each one by parsing real QuickBooks report exports.

The report is broken out by month

A Trial Balance exported with "Display columns by" set to anything other than Total carries one Debit/Credit column pair per period. A real export we tested had 36 of them — three years of months — under a heading that read "As of December 31, 2025".

Read the first pair and you are looking at January 2023 while believing you are looking at December 2025. Worse, the report's own TOTAL row is broken out the same way, so the columns still add up. The check passes and the numbers are wrong.

Fix: set "Display columns by" to Total before exporting.

The accounting method is printed at the bottom

Cash versus accrual is the single most damaging mismatch — get it wrong and nearly every account looks off, burying the two real differences in noise.

The trap is where the setting is written. QuickBooks Online prints Accrual Basis as the very last row of the file, after the data, not in the header where Desktop puts it. Anyone checking the top of the report concludes the basis is unknown.

Fix: check both ends of both files, and re-run them if the methods differ.

Subtotal rows get counted twice

Exports include parent-account rollups — a row literally labelled Total 10000 · Checking sitting beneath the accounts it summarises. Add up the column naively and every subtotalled account is counted twice.

Fix: exclude any row whose label begins with "Total", except the grand total.

Excel stores more precision than it shows you

Export the same report to CSV and to Excel and the files disagree. Where the CSV says 129,191.99, the .xlsx contains 129191.98999999999 — the underlying float. Truncate that instead of rounding and you lose a cent on nearly every value.

Fix: round to cents. In a spreadsheet that means ROUND(x, 2), not display formatting, which only changes what you see.

CSV exports stop at 32,770 rows

QuickBooks Desktop's CSV export truncates there, silently. For a Trial Balance you will never hit it; for a General Ledger you will.

Fix: export large reports as Excel.

How do you know you read the whole report?

Before comparing anything, add up the rows you extracted and check them against the report's own TOTAL row. If those two numbers disagree, you dropped a row or double-counted one, and any comparison built on top is meaningless.

It takes thirty seconds, and it is the only thing standing between you and a clean bill of health on data you misread. Do it for both files, every time.

The short version

  1. Run the Trial Balance in both systems, same date, same accounting method
  2. Set "Display columns by" to Total so there is one Debit and one Credit column
  3. Confirm the accounting method at the top and bottom of both files
  4. Add up your rows and check them against the report's own TOTAL row
  5. Compare account by account, not just the totals
  6. Use the ageing and account listing reports to explain whatever the trial balance flags
  7. Sort what you find into expected artifacts and real problems

If the trial balance itself will not tie out, work through the diagnostic order for a mismatched trial balance first. And remember that balances agreeing says nothing about what does not transfer at all.

Or upload the reports and have it done for you — the check is free, needs no account, and names every account and invoice that disagrees.

Related guides