Map Odoo Taxes to QuickBooks Tax Codes

Odoo taxes and QuickBooks tax codes are different objects, and how they are matched depends on where your company is. US companies rely on QuickBooks Automated Sales Tax, everyone else maps tax codes explicitly.

US companies

Under Automated Sales Tax, QuickBooks calculates the tax itself — it only needs to know whether a line is taxable. The connector sends:

  • TAX for lines that carry a tax in Odoo.

  • NON for lines that carry none.

QuickBooks then applies the right state, county and district rates from the customer’s shipping address. You do not need to map individual tax codes.

Tip

To see the same breakdown inside Odoo before the document is exported, use Calculate Sales Tax with Quick Calc Taxes.

Non-US companies

Outside the US, QuickBooks expects an explicit tax code per line. The connector reads it from the QuickBooks Tax Code field on the Odoo tax.

Set it at Invoicing ‣ Configuration ‣ Taxes, on the tax form, next to the price-included setting. Enter the QuickBooks TaxCode Id for that tax.

Important

A tax with an empty QuickBooks Tax Code exports its lines as NONnon-taxable. The document goes through, but QuickBooks applies no tax to it. A warning naming the taxes involved is written to the log every time this happens, so check Invoicing ‣ QuickBooks ‣ QuickBooks Logs and filter on the Tax Fallback (Export) operation after your first exports.

Note

The field is visible to users with the Billing Administrator access right.

Tax-included and tax-excluded

To keep the inclusive versus exclusive setting consistent between the two systems, turn on Send GlobalTaxCalculation (non-US realms) on the Automation tab of the connection. The connector then reads the Tax Included setting of the document’s taxes and sends the matching mode with every exported invoice, bill, credit note and vendor refund.

Warning

Leave this off for US companies. QuickBooks treats the field as read-only under Automated Sales Tax and rejects the export. The setting is hidden when the company’s country is the United States.

See Automation settings for the full behaviour, including how documents that mix inclusive and exclusive taxes are handled.

Taxes on imported documents

When a document comes from QuickBooks, the connector resolves each line’s tax in this order:

  1. A tax mapping for that QuickBooks tax code, in the right direction (sales or purchase). Where several exist, the one whose tax-included setting matches the document is preferred.

  2. An existing Odoo tax with the same percentage, direction and company.

  3. A new Odoo tax named QBO Tax <percent>%, created with the document’s tax-included mode.

Lines whose QuickBooks tax code is NON, or that carry no tax percentage, are imported without tax.

Note

Tax mappings are created for you — by Calculate Sales Tax with Quick Calc Taxes when it resolves a new QuickBooks rate, and when the connector creates a tax during an import. You do not normally create them by hand.

Tip

If imported documents keep creating near-duplicate taxes, the underlying cause is usually an Odoo tax with the right rate but the wrong direction (sales versus purchase) or the wrong tax-included setting. Fix the existing tax, and later imports will reuse it.