Tax mapping is the #1 cause of post-launch QBO sync errors. Get this right once, before turning on real sync, and you won't think about it again.

How tax mapping works

When a Run a Call invoice has a tax rate:

  • Run a Call looks up the QBO tax code by name.
  • If found, the line posts with that tax code; QBO calculates the tax line.
  • If not found, the sync fails with "Tax code not mapped".

Set it up

Settings → QuickBooks → Tax.

You'll see every tax rate in Run a Call on the left, with a dropdown next to each:

State sales tax (6.75%) → [State sales tax 6.75 ▾]
County tax (0.5%)       → [Cuyahoga County 0.5 ▾]
Combined rate (7.25%)   → [State sales tax 6.75 (with County 0.5) ▾]
Tax-exempt              → [Out of scope ▾]

For each, pick the corresponding QBO tax code from the dropdown.

Edge cases

Single rate vs combined

Some states want a single rate on the invoice (6.75% state + 0.5% county shown as one 7.25% line). Some want them broken out.

ApproachWhat to do
Single combinedMap to QBO's combined tax code (set up in QBO under Taxes → Set up tax).
Broken outMap each Run a Call rate to its own QBO code, and apply both rates to the same invoice line.
Note

The right answer depends on your state — ask your accountant if you're not sure.

Tax-exempt

Tax-exempt customers should have:

  • The Tax exempt flag on their customer record.
  • A QBO tax-exempt code mapped to it (typically Out of scope or Non-taxable).

The QBO invoice will post with no tax, and you'll have a tax-exempt code on it for proof if the state asks.

Use tax / reverse charges

If you have line items where you (the buyer) owe the tax rather than the customer:

  • Set up a Use tax line item in your pricebook.
  • Map it to a QBO tax code that posts to Use tax payable.
  • Don't apply customer-facing sales tax to that line.

This is unusual — most HVAC shops don't deal with it.

Setting a default

Settings → QuickBooks → Tax → Default for unmapped.

If an unmapped tax rate ever shows up on an invoice, this default is used as a fallback so the sync doesn't break.

Tip

Best practice: create a QBO tax code called To classify set to 0%. Map the default to it. Any time it's used, you'll see To classify on a QBO invoice and know to fix the underlying mapping.

Multi-state shops

If you operate in multiple states:

  • Add each state's rate(s) in Run a Call.
  • Each state's QBO tax code (you may need separate QBO tax agencies under Taxes).
  • Customers get the correct rate based on their service address.

For complex multi-state setups (10+ jurisdictions, automated tax calc), talk to support about TaxJar or Avalara integration.

Verify before going live

Important

There's no dry-run or sandbox toggle. Verify with a real, small invoice:

  1. Pick a low-value customer and create a small taxable invoice in Run a Call.
  2. Send it; record a payment if you want to test that step too.
  3. Open the synced invoice in QBO and confirm the tax code is correct, the tax line shows, and the total matches.

Fix any mapping mismatches before invoicing the rest of your customers.