HubSpot + QuickBooks Online integration

QuickBooks Online holds the invoice, the payment and the customer file that one bookkeeper guards while everyone else queues to ask about it.

Native app

Scope this integration Book a scoping call

Is there a native QuickBooks Online + HubSpot integration?

Yes. The QuickBooks Online app in the HubSpot App Marketplace is HubSpot's own as of September 2026, and for most finance teams it is the right first move at 8 to 24 hours of mapping and validation. It stops when invoice status has to drive a workflow, or when a customer exists twice under two spellings.

Recommended route
Native app
Build effort
8 to 24 hours
In the HubSpot App Marketplace?
Yes, QuickBooks Online by HubSpot
Typical elapsed time
1 to 2 weeks

Marketplace checked September 2026.

Why teams connect QuickBooks Online to HubSpot

A QuickBooks Online company file is usually run by one or two people, and everybody else in the business queues up to ask them questions. Has this customer paid. Are they on hold. Did we ever bill for the second phase. The answers sit in QuickBooks, the questions come from sales and service, and the distance between them is a message and a wait.

That is a small problem until the company grows past the point where one person can answer. Then it turns into three visible costs. Sellers discount for an account that is ninety days overdue. Service keeps working for a customer finance has already stopped invoicing. Somebody creates a second customer record because the first one was spelled differently, and the bookkeeper spends a morning merging them back.

Connecting the two systems is less about moving data than about moving the answer to where the question gets asked. Almost every engagement we scope here lands in the same place: finance keeps the ledger, HubSpot gets a read only view of it beside the deal and the company, and the only thing that ever moves the other way is a closed won deal that legitimately creates a customer. That shape is small enough that the packaged app often covers it, which is why this page spends as much time on when not to build as on how.

What syncs

Five objects cover almost every QuickBooks engagement. The customer becomes a HubSpot company, invoices and payments land as custom objects beside it, items become products, and estimates become deals where quoting genuinely happens in QuickBooks rather than in HubSpot.

Invoices belong on a custom object, not on the deal. A deal is a pipeline record with a stage and a close date, and an invoice is an accounting document with a balance. Forcing one into the other gives you a pipeline full of closed deals that reopen every time finance issues a credit note.

The key is the QuickBooks id, stored in a custom HubSpot property, on every object. Display names are the obvious match key and the wrong one, because bookkeepers rename customers as a matter of routine. Payments key on their own id and associate to the invoice they settle, so a part payment against three invoices resolves correctly instead of landing on whichever one was read first.

Objects that sync between QuickBooks Online and HubSpot
Source object HubSpot object Direction Match key Notes
Customer Company Two way QuickBooks customer id held in a custom HubSpot property The display name changes when the bookkeeper tidies the ledger, the id does not.
Invoice Custom object Into HubSpot Invoice id, with the document number shown to sellers A custom object keeps invoices off the deal, which is a pipeline record.
Payment Custom object Into HubSpot Payment id, associated to the invoice it settles
Estimate Deal Into HubSpot Estimate id Only worth mapping where quoting happens in QuickBooks rather than HubSpot.
Item Product Into HubSpot Item id, with the name as the readable label

Architecture

The packaged route has no architecture you control. The app authorizes against one company file, syncs the fields it supports on its own schedule, and holds its state where you cannot see it. That is the trade, and for a single company file with a stable mapping it is a good one.

A built service is a webhook queue with a sweep behind it. QuickBooks posts an event when an entity changes, the endpoint verifies it and writes the entity id onto a queue, and a worker reads the full record and upserts it into HubSpot as a batch keyed on the QuickBooks id. Associations run as a separate pass, so a replay is safe.

The sweep is what makes it trustworthy. Once a night the service asks change data capture for everything that moved in the last day and reconciles it against what the queue processed. Webhooks get lost. A watermark sweep behind them turns a silent gap into a logged difference.

The service reads the source on a schedule using a changed-since watermark, upserts each record keyed on its source identifier, then runs a separate associations pass.

What the API allows

API style
REST
Authentication
OAuth 2.0
Webhooks
Yes
Changed-since filter
Yes
Sandbox
Yes
Rate limit
500 requests per minute per company file, and 10 requests per second per company file and app

Developer documentation developer.intuit.com

Three ways to connect

The question that decides this one is whether finance data needs to be visible or actionable. If sellers just need to see the invoice and the balance before a call, HubSpot’s own app does that with no service to host and no on-call rotation, and we will tell you so.

It stops being enough at three points. When invoice status has to trigger something, because the app syncs fields rather than firing events. When there is more than one company file, because each one authorizes separately. And when finance needs a field the mapping does not carry. A per-task automation platform is the route we steer away from here: every invoice and payment becomes a billable run, so the bill grows with the ledger while the value does not.

  • Custom middleware

    Possible

    A keyed service earns its cost once invoice status has to trigger a workflow, once more than one company file is in play, or once the native field mapping cannot carry what finance cares about.

  • Automation platform

    Avoid

    A per-task automation platform turns every invoice and payment into a billable run, so the cost grows with the ledger while the value stays flat.

What breaks and how we prevent it

Duplicate customers from name matching

Duplicate customers are the most common failure and the most expensive to unpick. They come from matching on a name. We key on the QuickBooks customer id held in a custom property, and we run a duplicate report over the first week’s writes rather than assuming.

Expired tokens and removed apps

Silent disconnection is hard to notice. A token expires or an admin removes the app, and the sync stops without anything looking wrong. We treat an empty run as a failure, alert on it, and hold the last good watermark so the catch up reads only the gap.

Change data capture’s thirty-day limit

Reaching for the wrong read is common. Change data capture looks back at most thirty days and returns at most a thousand objects, so it is a nightly sweep, not a first load. The initial load is a paged query, run once, with its own checkpoint.

500 requests a minute per file

Throughput bites at cutover. Intuit allows 500 requests a minute against a company file and 10 a second per file and app, and a batch should carry around thirty payloads. A first load that ignores those numbers gets throttled halfway through and leaves the portal half populated. We pace the load, honour the throttle response, and resume from the checkpoint.

Our approach

  1. Scope. We check how many company files exist, which finance fields sellers need, and whether any workflow has to fire on invoice status. That last answer decides whether the packaged app is enough. Budget 4 to 8 hours of discovery and 8 to 24 hours of setup and validation for the native route.
  2. Architect. We agree the field mapping and which side owns the customer record before anything is connected, and we name the trigger that would send this to a build.
  3. Build. We install and authorize the app, review the mapping rather than accepting defaults, and wire the HubSpot workflows that use it.
  4. Validate. We connect a sandbox or test company first, reconcile customer and invoice counts against a QuickBooks report, and check that nothing writes back what finance owns.
  5. Operate. We watch for a sync going quiet, re-check the mapping when the chart of accounts changes, and escalate to a build when the app runs out of room.

Common questions

Does the HubSpot QuickBooks Online app sync invoices both ways?

No. The app brings finance records into the portal so sellers can see them. It is not a route for editing an invoice from HubSpot, and you should not want one. QuickBooks is the book of record, and a sales tool that can rewrite a posted invoice is an audit problem rather than a feature.

How quickly does a QuickBooks Online invoice appear in HubSpot?

That depends on the route. A custom service can subscribe to webhooks and act within seconds of the invoice being saved. The packaged app runs on its own schedule instead, so the honest expectation is minutes to hours. If a workflow has to fire the moment an invoice posts, budget for the build.

What does QuickBooks Online change data capture actually return?

It returns the full payload of every entity that changed inside a look-back window, which reaches back at most thirty days, and a response carries at most one thousand objects. Deleted records come back with a deleted status rather than vanishing. It is the right tool for a nightly sweep and the wrong one for a first load.

Why does one QuickBooks customer turn into two HubSpot companies?

Almost always because something matched on the display name. Bookkeepers rename customers, add a trading name, or fix a spelling, and a name based match then treats the same customer as new. We key every write on the QuickBooks customer id in a custom property, so a rename updates the existing company instead of creating a second one.

What happens when a QuickBooks Online connection stops working?

The sync goes quiet rather than loud, which is the dangerous part. Tokens expire, an admin disconnects the app, or a company file is closed. We treat a run that returns nothing as a failure rather than a success, alert on it, and keep the last successful watermark so the catch up reads only what was missed.

Can we test a QuickBooks Online integration without touching the live books?

Yes. Intuit gives every developer account a sandbox company with sample data, and webhook endpoints are configured separately for sandbox and production. We build and rehearse there first. Cutover is then a token swap against the real company file, with a portal allowlist in the service so the wrong credentials cannot write to the wrong place.

How many QuickBooks Online API calls will a nightly sync use?

Fewer than most people expect, if it is built to read changes rather than everything. Intuit allows 500 requests a minute per company file and 10 a second per company file and app, a query returns at most one thousand entities, and a batch request should hold about thirty payloads. A changed-only nightly sweep sits well inside that.

How long does a QuickBooks Online and HubSpot setup take?

The packaged route runs to 4 to 8 hours of discovery and 8 to 24 hours of setup and validation. Most of that is reviewing the field mapping and reconciling counts against a QuickBooks report, not configuration. Calendar time is usually a week or two, and the long pole is getting an administrator on both sides in the same room to authorize the connection.

Partnerships and accreditations

  • HubSpot Elite Solutions Partner
  • HubSpot Custom Integration Accreditation
  • HubSpot CRM Data Migration Accreditation
  • HubSpot Solutions Architecture Design Accreditation

HubSpot accreditations

  • HubSpot Onboarding Accreditation
  • HubSpot Academy Accreditations

Industry specializations

  • HubSpot Healthcare Industry Specialist
  • HubSpot Financial Services Industry Specialist
  • HubSpot Manufacturing Industry Specialist
  • HubSpot Quote to Cash Capability

Partnerships

  • Google Partner
  • Anthropic Solutions Partner

Scope a QuickBooks Online integration

Send the systems, the direction and the record volume. We reply with a scope and an effort band within one business day.

  • QuickBooks Online

Press Enter or comma to add another system.

Add more detail (optional)

Optional. A sentence or two about the workflow is enough.

We use these answers to scope the work and for nothing else. Privacy policy.

Prefer to talk it through first? Book a technical scoping call

Talk to the people who build these

  • Nijat
  • Sean
  • Prash

Book a scoping call

Where these facts come from
  1. Set up OAuth 2.0 developer.intuit.com
  2. API call limits and throttles developer.intuit.com
  3. Change data capture operation developer.intuit.com
  4. Configure webhooks developer.intuit.com
  5. Sandbox and tools developer.intuit.com