Skip to Content

Odoo QuickBooks Integration: Sync QuickBooks Online with Odoo Accounting

What syncs between Odoo and QuickBooks Online, how payments and US sales tax are handled, and what to set up before the first sync.
12 August 2026 (Updated ) by
Odoo QuickBooks Integration: Sync QuickBooks Online with Odoo Accounting
Gops

Integration guide

An Odoo QuickBooks integration connects Odoo to QuickBooks Online, so customer invoices, vendor bills, credit notes, refunds and payments created in one system reach the other without typing them twice. The TeqStars QuickBooks Connector does this in both directions, with account mappings, scheduled jobs, an import queue and a log of every exchange.

Odoo for operations. QuickBooks Online for accounting. Keep both connected without entering the same financial data twice.

What does an Odoo QuickBooks integration do?

It keeps the accounting documents of Odoo and QuickBooks Online aligned. Each customer invoice, vendor bill, credit note, refund and payment is entered once, in the system where the work happens, and reaches the other system on a schedule, when it is posted or when a user sends it.

When sales, purchasing and day to day operations run in Odoo while the finance team or accountant works in QuickBooks Online, the same transaction often needs attention in both systems. The TeqStars QuickBooks Connector connects these workflows so supported invoices, bills, credit notes, refunds and payments can move between Odoo and QuickBooks Online with controlled automation, accounting mappings and clear processing history.

You can request a demo or see the Odoo QuickBooks Online Integration on the Odoo Apps Store.

Where Odoo and QuickBooks need to work together

Sales and receivables

Customer invoices, credit notes and payments created or updated in one system need to stay aligned with the other.

Purchases and payables

Vendor bills, vendor refunds and bill payments should not require a second round of manual entry.

Accounting control

Mappings, queues, logs and scheduled jobs give the finance team visibility over what was processed and what still needs attention.

Odoo or QuickBooks: do you have to choose one?

No. A business can keep QuickBooks Online as the book its accountant works in and run sales, purchasing and operations in Odoo. The connector lets both stay in use: Odoo creates the documents where the work happens, and QuickBooks Online receives them for bookkeeping, or the other way round when documents start in QuickBooks.

It also suits a business that wants Odoo and QuickBooks to operate together without replacing either system immediately: history can be imported from QuickBooks Online by date range while new documents keep flowing in both directions.

What can be synchronized between QuickBooks Online and Odoo?

Core accounting transactions are supported in both directions. Supporting master data is created or linked when the transaction requires it.

DataQuickBooks Online to OdooOdoo to QuickBooks Online
Customer InvoicesYesYes
Vendor BillsYesYes
Customer Credit NotesYesYes
Vendor RefundsYesYes
Customer PaymentsYesYes
Vendor PaymentsYesYes
Chart of AccountsImport and mapUses configured mappings
Customers and VendorsCreated or linked when requiredCreated when required or exported manually
ProductsCreated or linked when requiredCreated when required or exported manually

Imported documents arrive as drafts

Invoices, bills, credit notes and refunds imported from QuickBooks Online are created in Odoo as drafts, so the team can check them before posting. Imported payments are posted and reconciled with their invoice or bill.

Accounting transactions stay connected, not just copied

Invoices, bills and refunds

Customer invoices and vendor bills can be imported from QuickBooks Online or exported from Odoo. Customer credit notes and vendor refunds are handled separately so receivables and payables stay consistent.

On the Odoo side, supported documents can be sent manually, by scheduled jobs or automatically when the document is posted. The Odoo invoice number is sent as the QuickBooks document number, so both systems show the same number for the same invoice.

Lines without a product, such as section and note lines, stay in Odoo. A negative sales line is sent to QuickBooks as a discount line.

Customer and vendor payments

A payment is useful only when it remains connected with the document it settles. The connector links customer payments to invoices and vendor payments to bills during supported synchronization flows.

Partial and multi-invoice payments are supported as well. If one Odoo payment is allocated across several invoices, the connector sends the exact amount against each QuickBooks invoice. When only part of an invoice is paid, only that paid amount is synchronized and the remaining balance stays open.

When a payment comes from QuickBooks Online, Odoo can create the corresponding payment and reconcile it with the related accounting document where possible. The payment is linked to the first invoice or bill it settles in QuickBooks, so that document must already be in Odoo.

Customer payments are deposited to the bank account mapped for the payment's journal. Vendor bill payments are sent to QuickBooks as check payments and need a mapped bank account.

Use QuickBooks tax calculation from Odoo

For supported US workflows, the connector can use QuickBooks Automated Sales Tax while users are preparing a quotation or supported customer accounting document in Odoo.

Customer and shipping information, product lines, quantities and prices are sent to QuickBooks for calculation. The returned tax information can then be linked or created in Odoo and applied to the document.

  1. Prepare the document in Odoo

    Start a draft quotation, sales order, customer invoice or credit note with a customer, product lines and a shipping address that has a country and a state.

  2. Click Quick Calc Taxes

    The button sits in the header of the draft document. Odoo makes sure the customer and the products exist in QuickBooks Online first, so every product needs an Internal Reference (SKU).

  3. Let QuickBooks calculate

    QuickBooks Automated Sales Tax returns the rates for the shipping address, down to state, county and city district rates. The temporary QuickBooks document used for the calculation is deleted afterwards.

  4. Review the taxes on the lines

    Each returned rate is matched with an Odoo tax or created as one, and the result replaces the taxes on the product lines.

For non US QuickBooks environments, supported exports also handle the appropriate tax included or tax excluded calculation mode, through the setting "Send GlobalTaxCalculation (non-US realms)".

Set up the accounting connection once

Transaction synchronization depends on correct accounting mappings. The connector can import the active QuickBooks Chart of Accounts into Odoo and connect those accounts with the corresponding Odoo accounts.

The button Sync Chart of Accounts reads the active QuickBooks accounts and matches each one with an Odoo account by code or by name. The mappings stay editable in the Account Mappings tab of the QuickBooks connection. Three defaults complete the setup:

  • Default Income Account: the QuickBooks income account for products sent from Odoo
  • Default Expense / COGS Account: the expense account for products used on vendor bills
  • Default Payment Journal: the bank or cash journal that receives payments imported from QuickBooks

Customers, vendors and products are handled when the transaction needs them

Before exporting a supported transaction, the connector checks whether the related customer, vendor or product is already linked with QuickBooks Online.

If the required QuickBooks record does not exist, it can be created and its QuickBooks reference is stored in Odoo for later synchronization.

For products, the Odoo Internal Reference or SKU is used as part of the matching and creation process. Customers, vendors and products can also be exported manually when required, with the action Export/Update to QBO.

  1. Find an existing QuickBooks link

    A record already synchronized carries its QuickBooks ID in Odoo and is used as it is.

  2. Match an existing record where supported

    Products are matched by SKU, then by name. A customer or vendor whose name already exists in QuickBooks is linked when the email matches.

  3. Create the record if it is still required

    New customers and vendors are sent with their name, email and address; products are created as service or non-inventory items.

  4. Store the QuickBooks ID in Odoo

    The ID stays on the Odoo record, so the next document finds the link at the first step.

Choose how synchronization should run

Start manually, automate selected documents later, or combine both approaches.

Automatic on Posting

Automatically export selected customer invoices, credit notes, vendor bills and vendor refunds when they are posted in Odoo.

Customer side and vendor side controls can be enabled independently. The same two switches also send customer and vendor payments when they are posted.

Scheduled Synchronization

Use background jobs for recurring imports and exports, with supported transaction types enabled according to your accounting process.

Invoices, bills, refunds and payments do not all need to follow the same schedule.

Manual Synchronization

Use the synchronization wizard to choose the direction, transaction type and date range.

For QuickBooks imports, a specific document can also be retrieved using its document number.

The scheduled jobs behind it

Scheduled jobWhat it does
QuickBooks: Fetch From QuickBooksReads new QuickBooks documents from the Import From Date on and adds them to the import queue
QuickBooks: Process Import QueueCreates the queued documents in Odoo, a batch at a time
QuickBooks: Process Export QueueSends the Odoo documents waiting for export to QuickBooks Online

How often each job runs is yours to set in Scheduled Actions. The jobs do nothing until Enable Import Cron or Enable Export Cron is switched on for a confirmed connection, and each document type has its own import and export switch. The Import From Date moves forward after every successful run, so a document is fetched once.

Queue based processing for larger jobs

Supported QuickBooks imports can be staged in a processing queue instead of relying on one long running request. This is useful for historical data and larger accounting volumes.

The batch size is configurable. The standard configuration currently processes 30 records per scheduled run.

  • 30documents per scheduled run by default (Cron Batch Size)
  • 100QuickBooks documents at most in one queue row

See where every queued item stands

Each queue row shows its state: Pending, Processed, Done with skips or Error, and each document in it is Pending, Done or Failed. When processing fails, the error remains connected with the relevant queue item so the team can investigate the exact document. Processing a row again skips the documents already done.

Synchronization should not be a black box

Detailed integration logs

QuickBooks integration logs can record the synchronization direction, operation, related Odoo record, document reference, result status, error details and request or response information.

Each log opens the related Odoo record, so a failed operation can be reviewed and the document sent again after the underlying issue has been corrected.

Odoo activities for failures

Administrators can create scheduled Odoo activities for supported synchronization failures instead of expecting the finance or technical team to monitor logs continuously.

The activity type, responsible users and deadline can be configured according to the internal support process.

Built to reduce duplicate records

The connector stores QuickBooks identifiers on synchronized Odoo records and uses additional matching where supported.

For accounting documents, an existing QuickBooks transaction can be linked using the document number where applicable. Product matching can also use item information such as SKU before a new QuickBooks item is created.

On import, a QuickBooks document or payment that is already in Odoo is skipped, so running the same date range twice does not create a second copy.

What if a document is reset to draft?

If a synchronized invoice, bill, credit note or refund is reset to draft in Odoo, the connector attempts to remove the corresponding QuickBooks transaction first.

If QuickBooks does not allow the deletion, Odoo does not silently continue as though both systems still had the same document state: the reset stops and the reason is shown.

A failed export on posting undoes the posting

With export on posting switched on, an invoice or bill that QuickBooks refuses is not posted in Odoo either ("The Odoo post was rolled back"), so the two systems never disagree about it. Fix the cause in the log message and post again.

Connect through the official Intuit authorization flow

The integration uses Intuit OAuth authorization for QuickBooks Online. After the company is authorized, the connector manages the access and refresh tokens required for API communication.

The access token is renewed five minutes before it expires. If Intuit rejects the renewal, the connection returns to draft and asks to authorize again. The connector asks Intuit for accounting access only.

QuickBooks configuration credentials are restricted to the appropriate Odoo accounting management users.

QuickBooks Sandbox

Configure mappings and test synchronization before connecting live accounting data. A new connection starts in Sandbox.

QuickBooks Production

Use the same connector for live accounting workflows after testing is complete. Switching between Sandbox and Production returns the connection to draft, so it is authorized again for the new company.

One QuickBooks company per Odoo company

Each Odoo company has one QuickBooks connection. In a multi-company database, create a connection for each company, each one authorized with its own QuickBooks company.

How to connect QuickBooks Online to Odoo

A practical setup flow for a new QuickBooks Online connection. Have these ready first:

  • Odoo 17.0, 18.0 or 19.0 on Odoo.sh or on-premise, Community or Enterprise: Odoo Online cannot install third-party apps
  • The Python package intuit-oauth installed on the Odoo server
  • A free Intuit Developer account, for the Client ID and Client Secret
  • A QuickBooks Online company, and a sandbox company to test with
  • An Internal Reference (SKU) on the products you sell or buy
  • Automated Sales Tax switched on in QuickBooks, for US sales tax from QuickBooks
  1. Get the Client ID and Client Secret

    Obtain the Client ID and Client Secret from the Intuit Developer platform.

  2. Create the QuickBooks configuration

    Create the QuickBooks configuration and use the Redirect URI provided by Odoo. Odoo shows it on the connection form, ending in /qbo/callback, with a button to copy it into the Intuit app.

  3. Authorize the QuickBooks company

    Sign in through Intuit and connect the QuickBooks company you want to use. The Realm ID (Company ID) and the token expiry dates then show on the form.

  4. Import accounts and choose the jobs

    Import the Chart of Accounts, configure defaults and decide which synchronization jobs should run.

For the full configuration steps, see the QuickBooks Connector Documentation.

When this integration makes sense

A good fit when

  • Sales and operations teams work in Odoo while accounting remains in QuickBooks Online.
  • An internal or external accountant requires QuickBooks while operational users work in Odoo.
  • Invoices, bills and payments should not be entered manually in both systems.
  • The finance team wants controlled automation with clear logs and queues.
  • The business wants Odoo and QuickBooks to operate together without replacing either system immediately.
  • US sales workflows need QuickBooks tax calculation while quotations are prepared in Odoo.

Look at it again when

  • The books are in QuickBooks Desktop: the connector works with QuickBooks Online only.
  • Odoo runs on Odoo Online, which cannot install third-party apps.
  • Stock quantities must sync: products are sent as service or non-inventory items.
  • Journal entries, sales receipts, estimates or purchase orders must move: the connector syncs invoices, bills, credit notes, refunds and payments.

Frequently asked questions

Does Odoo integrate with QuickBooks?

Not out of the box: Odoo has no built-in QuickBooks connection. A connector app such as the TeqStars Odoo QuickBooks Online Integration adds it, syncing invoices, bills, credit notes, refunds and payments between Odoo and QuickBooks Online in both directions.

Does it work with QuickBooks Desktop?

No. The connector is designed for QuickBooks Online and communicates through the QuickBooks Online API.

Which Odoo versions and hosting does it support?

Odoo 17.0, 18.0 and 19.0, Community and Enterprise, on Odoo.sh or on-premise. Each Odoo version is a separate listing on the Odoo Apps Store. It cannot run on Odoo Online, which does not install third-party apps.

Can invoices and bills move in both directions?

Yes. Supported customer invoices, vendor bills, customer credit notes and vendor refunds can be imported from QuickBooks Online and exported from Odoo.

Can payments be synchronized?

Yes. Customer payments and vendor payments are supported, including their relationship with the corresponding invoice or bill where applicable.

Can synchronization run automatically?

Yes. Scheduled imports and exports are available. Supported accounting documents can also be automatically exported when they are posted in Odoo based on the configured settings.

Can QuickBooks calculate tax for an Odoo quotation?

For supported US workflows, QuickBooks Automated Sales Tax can be requested from Odoo using customer, shipping and transaction information.

Is the Chart of Accounts synchronized both ways?

The QuickBooks Chart of Accounts is imported into Odoo and mapped with Odoo accounts.

What happens if a synchronization fails?

The connector records the error in its integration logs. Queue processing errors remain visible against the related queue item, and Odoo activities can optionally be created for responsible users.

Can the connector be tested before going live?

Yes. QuickBooks Sandbox is supported for configuration and testing before connecting a Production company.

Does it sync stock quantities or journal entries?

No. Products reach QuickBooks Online as service or non-inventory items without stock quantities, and journal entries are not synchronized. The connector covers invoices, bills, credit notes, refunds, payments and the Chart of Accounts, with customers, vendors and products created as those documents need them.

Share this post