Migrating from QuickBooks Desktop

Bring your entire QuickBooks history into Kantivo -- accounts, contacts, invoices, bills, and payment records -- all stored locally in your PostgreSQL database.

⚠️ Important fix in v1.1.122 (May 2026) -- re-import recommended:

QuickBooks Online's Excel Journal export formats every dollar amount over $1,000 with a thousands-separator comma (6,718.82, 12,500.00). Older Kantivo builds were stopping at the first comma when reading those cells, so any amount $1,000+ silently truncated to its leading digits -- 6,718.82 imported as $6, 12,500.00 as $12. Amounts under $1,000 imported correctly. If you imported QuickBooks history before v1.1.122, your bank balances are likely wildly off. Update to v1.1.122 (or later), delete the affected company, and re-import. The new parser strips commas, dollar signs, and parens-as-negative on every import path.

What's new in v1.1.122 (May 2026):
  • Live progress bar on Phase 3 imports. Large QuickBooks histories (10,000+ transactions) used to land a single quiet "Importing..." button. Now an overlay shows a percentage bar, the current/total counter, and a stage label, refreshing every 25 transactions or 250ms over the existing socket -- no more wondering whether the import is still running.
  • Inline "Create new account" inside Resolve Import Suspense. When a suspense entry has no good destination in your existing chart, click the new + Create new account... option in the dropdown to spawn a small in-modal form (number, name, type) right there. The form pre-fills smart defaults from the suspense original name -- leading account numbers split out automatically, type guessed from keywords like "sales" (Income) or "checking" (Bank). No leaving the modal.
  • "None -- I'll import my own accounts" company option. Creates a truly empty Chart of Accounts so your QuickBooks chart can come in clean via Phase 1.
  • Phase 3 default migration date fixed. Skipping Phase 2 used to default to today, which silently filtered out every historical transaction. It now defaults to 1900-01-01 so a full-history import imports everything by default.
Earlier highlights (v1.1.115):
  • Resolve Import Suspense -- bulk-remap tool. If your import created "(IMPORT SUSPENSE)" accounts, the Resolve Import Suspense button on the QuickBooks Import screen reassigns every entry in one batch with suggested targets. See the Troubleshooting section below for the full walkthrough.
  • Smarter account matching. Account names with extra spacing, parenthetical category labels, or leading account numbers now resolve against your chart by number first, then normalized name -- far fewer suspense accounts auto-created.
  • Check numbers populate from the import so they appear correctly in the bank register and Write Check edit modal.
  • Wizard resets when you switch companies -- no more leftover file references or migration dates leaking into the next import.

Why Kantivo's Migration Tool Stands Apart

Typical migration utilities only transfer your chart of accounts. Kantivo goes further by pulling in your full transaction history: every customer invoice, every payment received, every vendor bill, and every bill payment -- with the relationships between them preserved.

The result is that your accounts receivable and accounts payable aging reports are accurate from the moment the import completes. Customer and vendor balances carry over correctly, and there is no need to re-enter years of historical records by hand. Everything lands in your local database where it stays private and under your control.

Best Practice: Run a practice import first. Set up a temporary test company inside Kantivo, import your QuickBooks data into it, and verify the results. Once satisfied, remove the test company and perform the import into your production company.

Data That Gets Transferred

Category Details Included
Chart of Accounts Numbers, names, account types, hierarchical parent/child structure, and descriptions
Customers Contact names and details (generated automatically from imported invoice records)
Vendors Supplier names and details (generated automatically from imported bill records)
Customer Invoices Invoice numbers, dates, individual line items mapped to income accounts, and calculated totals
Customer Payments Dates, amounts, deposit account designations, and linkage to the original invoices
Vendor Bills Bill reference numbers, dates, line items mapped to expense accounts, and totals
Bill Payments Payment dates, amounts, the accounts used for payment, and linkage back to the source bills

Preparing Your QuickBooks Data for Export

Exporting the Chart of Accounts

  1. Inside QuickBooks Desktop, open Lists > Chart of Accounts
  2. Use Ctrl+A to highlight every account in the list
  3. Open the Excel menu and choose Export All Accounts
  4. Save the resulting file in CSV format

Exporting Customer Activity (Invoices and Payments)

  1. Navigate to Reports > Customers & Receivables > Transaction List by Customer
  2. Adjust the date range to All (or whichever period you want to bring over)
  3. Select Excel > Create New Worksheet
  4. Open the worksheet in Excel and re-save it as a CSV file

Exporting Vendor Activity (Bills and Payments)

  1. Navigate to Reports > Vendors & Payables > Transaction List by Vendor
  2. Set the date range to All
  3. Select Excel > Create New Worksheet
  4. Open the worksheet in Excel and re-save it as a CSV file
Critical: You must use the specific report names described above. Alternative reports from QuickBooks may lack the granular transaction-level data that Kantivo requires for a complete import.

Running the Import Inside Kantivo

  1. Open Settings > Data Import (alternatively, launch the import through Accountant Tools)
  2. Choose QuickBooks Desktop Import as the source
  3. Upload the three CSV files you exported:
    • Your Chart of Accounts CSV
    • The Transaction List by Customer CSV
    • The Transaction List by Vendor CSV
  4. Examine the Auto-Mapping Preview -- Kantivo's engine automatically aligns QuickBooks account types with the corresponding Kantivo categories
  5. Make manual corrections to any mappings that need adjustment (the majority will be correct out of the box)
  6. Press Preview Import to review a summary of everything that will be brought in
  7. Press Import to execute the migration and populate your local database

How the Transaction-Level Import Works

The real power of Kantivo's migration lies in deep transaction-level reconstruction. Here is what the system does behind the scenes:

How Invoices Are Reconstructed

How Payments Are Linked to Invoices

How Bills and Vendor Payments Are Handled

Common Issues and Fixes

Totals do not add up after import

Discounts, credits, or write-offs applied within QuickBooks can cause minor total mismatches. Kantivo flags these with a warning but completes the import regardless. Examine the flagged invoices afterward to confirm accuracy.

Certain accounts appear as unmapped

When Kantivo cannot determine the correct account type for a QuickBooks entry, it places it in an "Unmapped Accounts" list. You can manually assign the right type before finalizing the import.

My checking balance looks inflated, and I see "(IMPORT SUSPENSE)" accounts

When the importer encounters a transaction posted to an account name it cannot match against your chart, it parks the offsetting entry in a placeholder named {Original Name} (IMPORT SUSPENSE). The bank or expense side of the entry posts correctly, but the matching half lands in the suspense bucket -- so accounts like Checking show every outflow without the corresponding credits. Across hundreds of transactions, this can make a balance appear off by tens of thousands or more.

The fix is one-click in v1.1.115 and later:

  1. Open QuickBooks Data Import from the sidebar.
  2. At the bottom of the phase-selection screen, click 🩹 Resolve Import Suspense.
  3. For each suspense account, review the suggested target (when one is found) and pick the correct real account from the grouped dropdown if the suggestion is wrong or missing.
  4. Leave the Delete after merge checkbox on for any rows whose suspense account you want removed once empty.
  5. Click Resolve Selected. Kantivo reassigns every transaction entry in a single batch, recalculates affected balances, and -- where requested -- removes the empty suspense accounts.

Run your Income Statement and Balance Sheet afterward to confirm the figures now reconcile. If a row has no obvious target, leave its dropdown blank to skip it on this pass and revisit later -- the tool can be run again at any time.

The same customer or vendor appears more than once

Minor name variations in QuickBooks (for example, "ABC Corp" versus "ABC Corp.") will produce separate records. After the import, use Customers > Merge or Vendors > Merge to consolidate duplicates.

Dates are displaying incorrectly

Verify that QuickBooks exported dates in a recognizable pattern (MM/DD/YYYY). If the dates look wrong inside Kantivo, review the regional settings on your Windows machine, as they influence how CSV date fields are interpreted.

Stuck on something? Reach out to our team at support@kantivo.app. Attach your CSV files (redact any sensitive figures) and we will work through the issue with you.