What You Can Import From QuickBooks Online Into Odoo · Calibre Consulting

Bring QuickBooks Online records into Odoo in the right order.

Which QuickBooks Online records Odoo 19 imports natively, the order to load them, and how invoice attachments can come across.

This guide explains which QuickBooks Online records Odoo's standard import tool can load, the order to load them in, and what happens to the files attached to your invoices and bills. The short answer: the chart of accounts, contacts, open invoices and bills, and journal entries all import from spreadsheets, and taxes are usually mapped to the ones Odoo already provides. Attachments can be imported, but only as encoded text inside the import file with a technical column filled in, so in practice they need a script-generated file. Paid history and old payments are usually better carried as opening balances.

It is written for accountants and owners planning the switch. The steps were verified on Odoo 19.

Before you start

What imports natively, record by record

Step by step: the import order

Each file can only point to records that already exist, so load them in this order. Every list below is reached from the Accounting app; open the gear icon next to the list title and click Import records, where the template download link also appears.

  1. Chart of accounts: Configuration > Accounting > Chart of Accounts. Fix names and codes before anything refers to them.
  2. Taxes: review Configuration > Accounting > Taxes and note which Odoo tax replaces each QuickBooks code.
  3. Contacts: Customers > Customers, then the vendor list. Click Test before Import to catch errors without saving anything.
  4. Open invoices and credit notes: Customers > Invoices. Import one line per invoice for the amount still owed, posted to an AR clearing account, keeping the original date and number.
  5. Open bills and refunds: Vendors > Bills, the same way, against an AP clearing account.
  6. Opening balance entry: Accounting > Journal Entries. One entry dated the day before cutover, with each account's balance from the QuickBooks trial balance, replacing receivables and payables with the two clearing accounts.
  7. Post the drafts: select the imported invoices and bills, open the gear menu and choose Confirm Entries, then post the opening entry.

The clearing accounts are what stop receivables from being counted twice: the invoices and the opening entry each hit the clearing account from opposite sides, so it nets to zero once both are posted.

What happens to attachments

In QuickBooks Online, an attached file is stored as its own record linked to the transaction, so it does not travel inside an invoice export and has to be downloaded separately, usually through the QuickBooks API.

On the Odoo side, the invoice import does expose an Attachments sub-table. Three columns make a file land on the right invoice:

With all three filled, the file shows in the attachments area of the invoice's chatter, the message and history panel beside the record. The import tool's other ways of loading files, by web address or by uploading files named in the sheet, only apply to file fields stored on the record itself, such as a product image, so they do not help here. Encoding hundreds of PDFs into a spreadsheet is a job for a script, which is why attachments are usually a second pass after the invoices exist, keyed on the external IDs given in step 4.

What to leave as opening balances

Choosing a cutover at a fiscal year end or the end of a tax period keeps the split between the two systems clean.

Check that it worked

  1. Open Reporting > Trial Balance for the cutover date and compare every account with the QuickBooks trial balance.
  2. Open Reporting > Aged Receivable and Aged Payable. Totals should equal your open invoice and bill lists.
  3. Look up both clearing accounts. Each should show a zero balance. Then change their Account Type to Off-Balance Sheet so they drop out of the reports.
  4. Open one invoice that had a file attached and confirm the file appears in its chatter.

Version notes

The attachment columns above were tested on Odoo 19. In Odoo 20 the base64 file content field was removed from attachments, so that method was not checked there and may need a different column.

Steps verified on Odoo 19. Menus and labels can differ on other versions.

Common questions

Can Odoo import QuickBooks Online files directly?

No. Standard Odoo has no QuickBooks importer, so data moves through CSV or Excel files mapped with Odoo's Import records tool.

Do invoice attachments come across when importing into Odoo?

Only if the import file includes them. In Odoo 19 the invoice import accepts Attachments columns for the file name, the resource model account.move and the file content as base64 text, and without the resource model the file does not show on the invoice.

In what order should QuickBooks data be imported into Odoo?

Chart of accounts first, then the tax mapping and contacts, then open invoices and bills, then the opening balance journal entry. Each file can only refer to records that already exist.

Should paid QuickBooks invoices and payments be imported into Odoo?

Usually not. Importing a payment does not reconcile it with its invoice, so paid history is normally summarized in the opening balance entry and kept in a QuickBooks export for reference.

Talk to the team.

If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.

Book the call →