Short answer: a clean QuickBooks to Odoo migration comes down to five things. Pick a cut-over date at the start of a period. Map your chart of accounts and sales taxes before importing anything. Bring open invoices and bills across one by one, not as lump sums. Set the inventory valuation method on purpose. And before you switch QuickBooks off, prove that the trial balance, AR and AP agings, bank balances and inventory value in Odoo match QuickBooks to the cent.
That last step is where most migrations quietly go wrong. Everything imports, the system looks fine, and three months later the balance sheet doesn't tie and nobody knows why. Below is the checklist we use as accountants on QuickBooks Online and QuickBooks Desktop migrations for businesses in the US and Canada, followed by the mistakes we see most often and a realistic timeline.
When moving from QuickBooks to Odoo makes sense
QuickBooks is a good accounting system. Businesses usually move to Odoo when accounting is no longer the only thing they need to run in one place. Common triggers:
- Inventory across several warehouses, with landed costs, lots or serial numbers
- Sales, purchasing, manufacturing or eCommerce running in separate apps that need re-keying into QuickBooks
- Several entities or currencies that need consolidated reporting
- Month-end close relying on spreadsheets to work out cost of goods sold or margin
If none of these apply, staying on QuickBooks may be the better choice. If you're unsure, an independent ERP selection review before you commit can save a lot of money.
What to export from QuickBooks first
Before touching Odoo, pull these reports as at the cut-over date and save them. They are both your import source and your tie-out evidence.
| Report or list | Used for |
|---|---|
| Trial Balance | Opening balances and final tie-out |
| Chart of Accounts list | Account mapping |
| A/R Aging Detail | Open customer invoices |
| A/P Aging Detail | Open vendor bills |
| Customer and Vendor contact lists | Contacts, terms and tax settings |
| Products and Services list | Products, prices and accounts |
| Inventory Valuation Summary | Opening stock quantities and value |
| Last bank and card reconciliation reports | Bank opening balances and uncleared items |
| Sales tax liability report | Tax payable tie-out |
| Fixed asset register (if kept) | Asset cost and accumulated depreciation |
The 10-step checklist
1. Choose the cut-over date
Migrate at the start of a month, ideally the start of a quarter or financial year. Close the books in QuickBooks for the prior period first: bank and credit cards reconciled, sales tax returns filed, payroll posted. A mid-month cut-over means splitting transactions across two systems, and that is where duplicates and gaps creep in.
2. Decide how much history to bring
You have three options:
- Opening balances only. Fastest and cleanest. QuickBooks stays available for history.
- Opening balances plus open items. What most businesses should do. Every unpaid customer invoice and vendor bill comes across individually so payments can be matched in Odoo.
- Full transaction history. Expensive, slow and rarely worth it, unless a lender, auditor or regulator needs comparative reporting from inside the new system.
3. Map the chart of accounts
Don't copy the QuickBooks chart of accounts line for line. Use the migration to clean it up. Every account in Odoo needs the right type (receivable, payable, bank and cash, current assets, fixed assets, income, cost of revenue, expenses and so on), because Odoo builds its balance sheet, profit and loss and aged reports from those types. A wrong type is the most common reason reports look odd after go-live.
4. Rebuild sales taxes properly
US businesses relying on QuickBooks automated sales tax need to set up Odoo taxes and fiscal positions for each state where they have nexus, or connect a sales tax service such as AvaTax, which Odoo supports. Canadian businesses need GST/HST, PST and QST set up with the right recoverable and payable accounts. Test a handful of real invoices from different provinces or states before go-live.
5. Import customers, vendors and products
Clean the lists first: merge duplicates, archive inactive records, and fix payment terms. For products, decide which are stockable, which are consumables and which are services, and set each product category's income and expense accounts. That decision drives cost of goods sold for every sale afterwards.
6. Choose the inventory valuation method on purpose
QuickBooks Online values inventory on FIFO. QuickBooks Desktop uses average cost by default. Odoo lets you choose standard cost, average cost or FIFO for each product category, with periodic or perpetual (automated) valuation. Pick the method that matches how you want to report margin, set it before you import stock, and bring quantities in at the cost that matches QuickBooks. If you pay duty and freight on purchases, set up landed costs so they reach product cost rather than sitting in an expense account.
7. Bring open invoices and bills across individually
Import each open customer invoice and vendor bill with its original date, number and due date, posted against an opening balance or clearing account. When the customer pays, the payment matches the real invoice in Odoo. A single "opening AR" journal looks quicker, but it breaks aged reports and payment matching for months.
8. Post the opening trial balance
Post one opening journal for everything that isn't an open item: bank balances, fixed assets and depreciation, loans, equity and retained earnings. Bank accounts should open at the reconciled QuickBooks balance, with any uncleared cheques or deposits brought in separately so the first bank reconciliation in Odoo works.
9. Tie out before you switch off QuickBooks
This is the step that separates an accountant-led migration from a data import. In Odoo, as at the cut-over date, check:
- Trial balance matches QuickBooks account by account
- AR and AP aging totals match, customer by customer and vendor by vendor
- Each bank balance matches its last QuickBooks reconciliation
- Inventory valuation matches the inventory asset account
- Sales tax payable matches the last return plus the current period
- The opening balance or clearing account used for imports nets to zero
Any difference, however small, gets explained and fixed before go-live. Keep the tie-out workpapers. Your auditor or reviewer will ask for them.
10. Run the first month close carefully
Treat the first month end in Odoo as part of the project. Reconcile every bank and card account, review the first sales tax figures against what QuickBooks would have produced, and check margins by product. Problems with account types, taxes or inventory settings show up here, while they're still cheap to fix.
Six mistakes we see most often
- Leaving a balance in Opening Balance Equity. QuickBooks parks unexplained amounts there. Clear it into the right accounts before you migrate, or you carry the problem into Odoo.
- Forgetting undeposited funds. Customer payments sitting in QuickBooks' undeposited funds (payments to deposit) account need to be deposited or brought across as reconciling items, or the bank won't tie.
- Recording transactions in QuickBooks after cut-over. Agree a hard stop date with the team. Anything entered in QuickBooks after it must be re-entered in Odoo, or it disappears.
- Importing negative inventory. Negative quantities in QuickBooks distort Odoo's valuation from day one. Count and correct stock first.
- Testing in the live database. Do a full trial import in a duplicate or test database, tie it out, then repeat the import in the live database.
- Treating it as an IT project. Developers can move data. Someone who understands the accounts needs to decide how it should land and sign off that it ties.
A realistic timeline
For a small business with reasonably clean books, inventory in one warehouse and opening balances plus open items, a typical plan looks like this:
- Week 1: agree scope and cut-over date, export reports, clean lists and the chart of accounts
- Week 2: configure Odoo: accounts, taxes, fiscal positions, product categories and valuation
- Week 3: trial import in a test database, tie-out, fix and repeat
- Week 4: close QuickBooks, final import into live Odoo, sign off the tie-out and go live
Multiple entities or currencies, several warehouses, manufacturing or full history all extend this. Most of the time goes on clean-up and tie-out, not the import itself.
Frequently asked questions
How long does a QuickBooks to Odoo migration take?
For a small business with clean books and opening balances plus open items, around four weeks is typical. Inventory complexity, multiple currencies, several entities or full history all add time.
Can I keep using QuickBooks for history?
Yes. Most businesses keep QuickBooks available for prior years and save full reports before cancelling. Check Intuit's current read-only access terms before you cancel your subscription, and export everything you may need first.
Should payroll move to Odoo?
Not necessarily. Many US and Canadian businesses keep their existing payroll provider and post a summary payroll journal into Odoo each pay run. Decide this early, because it affects the chart of accounts and the bank reconciliation process.
Can I migrate from QuickBooks Desktop as well as QuickBooks Online?
Yes. The checklist is the same. Desktop exports lists and reports to Excel in a slightly different format, and its inventory is usually on average cost, which affects how you set up valuation in Odoo.
Need a hand with your migration?
We lead QuickBooks to Odoo migrations as accountants: chart of accounts, taxes, inventory valuation and a full opening-balance tie-out you can hand to your auditor. See our migration service or get in touch.