HubSpot + QuickBooks Desktop integration

QuickBooks Desktop keeps the books in one company file on a Windows machine. What Intuit's Web Connector lets HubSpot read and write, and the build hours.

Connects by API , iPaaS

Scope this integration Book a scoping call Estimate the cost

Is there an official QuickBooks Desktop + HubSpot integration?

Not from HubSpot or Intuit: as of September 2026 the HubSpot App Marketplace lists one app named for Desktop, QuickBooks Desktop SYNC, Data Lake, AI, MCP by Commercient, which is third-party, and HubSpot's own QuickBooks app is built for QuickBooks Online. We recommend a custom API integration that Intuit's Web Connector calls from the QuickBooks machine on a schedule, at 70 to 150 build hours. It runs only while that machine is up, and a planned move to QuickBooks Online makes it unnecessary.

Recommended route
Custom API integration
Build effort
70 to 150 hours
In the HubSpot App Marketplace?
Yes, QuickBooks Desktop SYNC, Data Lake, AI, MCP by Commercient
Typical elapsed time
4 to 8 weeks

Marketplace checked September 2026.

Why teams connect QuickBooks Desktop to HubSpot

QuickBooks Desktop keeps a company’s books in a single company file on a Windows machine, and every integration has to reach that file where it sits. Intuit’s documentation is plain about the consequence: an application talks to QuickBooks through a request processor over COM, which means the same machine or, configured with care, the same local network. Nothing on the internet can call it directly.

Intuit is also steering new customers elsewhere. In the United States it stopped selling new Desktop Pro Plus, Premier Plus and Mac Plus subscriptions after September 2024, and in Canada Desktop Pro and Premier have not been sold to new subscribers since April 2025. Existing subscribers can renew, Desktop Enterprise is still sold in both countries, and Intuit calls Enterprise its flagship Desktop product. Its 2024 releases were the last annual ones, with continuous updates since.

So the businesses asking are the ones staying: Enterprise users, whose industry editions Intuit lists for contractors, manufacturing and wholesale, retail and nonprofits, and Pro or Premier subscribers who keep renewing. What they want is familiar: the balance, the open orders and the last invoice on the HubSpot company. One decision comes first, though. Will the books stay on Desktop long enough to justify a build, or is the better project a move to QuickBooks Online, where HubSpot publishes its own app?

What syncs

Six objects cover it, all read with qbXML queries and moved one way into HubSpot. Top-level customers become companies, jobs become a custom job object, customer contacts become contacts, sales orders become deals, invoices land on a custom invoice object and items become products.

Jobs are the part that catches people out. QuickBooks keeps customers, jobs and subjobs in one hierarchical list: a job is a customer with a parent, a sublevel above zero and a full name built from its ancestors, joined by colons. One customer query returns all of them. We split them on the sublevel and associate each job to the company at the top of its parent chain.

Keys are QuickBooks identifiers, never names. Intuit’s own guidance is to key list records on the ListID, which unlike the full name is guaranteed not to change, and every transaction carries a TxnID that QuickBooks assigns and guarantees will stay the same. Invoice and order reference numbers stay as readable labels.

Sales orders exist only in Premier and Enterprise. On Pro, where Intuit says sales orders are not available, estimates take their place.

Objects that sync between QuickBooks Desktop and HubSpot
Source object HubSpot object Direction Match key Notes
Customer (sublevel 0) Company Into HubSpot ListID, held in a custom HubSpot property The full name changes when a customer is renamed. The ListID never does.
Job (a customer with a parent) Custom object Into HubSpot ListID, associated through its parent's ListID Jobs and subjobs come back in the same customer query, one sublevel deeper each.
Customer contact (ContactsRet) Contact Into HubSpot The contact's own ListID, with email as the readable match The contact list arrived with qbXML 12.0; older files keep one contact on the customer.
SalesOrder Deal Into HubSpot TxnID, with the order's reference number as the label Pro has no sales orders, so estimates take their place there.
Invoice Custom object Into HubSpot TxnID, associated to the customer or job it bills
Item Product Into HubSpot ListID Items are hierarchical too, so the full name carries the parent item's name.

Architecture

The runtime is Intuit’s own go-between, the QuickBooks Web Connector. It is a Windows application installed where the company file is saved, and it calls our web service over HTTPS on the schedule the user sets, so nothing on the QuickBooks side opens a port. The service implements the SOAP methods the Web Connector expects: authenticate returns a session ticket, sendRequestXML hands over the next qbXML request, and receiveResponseXML takes the answer.

Each session asks for what changed since the watermark, using FromModifiedDate on lists and ModifiedDateRangeFilter on transactions, and pages with an iterator. Deletions come from ListDeletedQuery and TxnDeletedQuery. The service upserts into HubSpot in batches keyed on ListID and TxnID, then runs the association pass. Polling is the only choice: the SDK’s event notifications reach only a program on the same machine, and only while QuickBooks has the file open on screen.

State lives in the service: a watermark per object, the FileID the Web Connector stored in the company file, and the last restore time. A replay is a request for a modified-date range. A later write back sends CustomerAdd or SalesOrderAdd, and a modify carries the record’s EditSequence, which QuickBooks checks first.

The Web Connector on the QuickBooks machine calls a web service over HTTPS on its schedule. The service answers with qbXML queries for changes since its watermark, then upserts into HubSpot on ListID and TxnID and links jobs, orders and invoices to companies.

What the API allows

API style
SOAP
Authentication
SOAP session token
Webhooks
No
Changed-since filter
Yes
Sandbox
Yes
Rate limit
Not documented

Developer documentation developer.intuit.com

Three ways to connect

On Desktop every route puts software on the machine that holds the company file, so the real choice is whose software, and how much it can do.

A custom API integration uses the Web Connector Intuit supplies and a service we run. It reads changes, deletions and restores, keys on ListID and TxnID, and can write back through QuickBooks’ own validation.

A managed sync on Skyvia puts Skyvia’s agent on the QuickBooks machine instead. Skyvia documents syncing QuickBooks Desktop with cloud apps, but the agent must run as an application under the same Windows user as QuickBooks, so a session has to stay signed in.

Commercient’s QuickBooks Desktop app is the packaged third route, a third-party sync whose mapping and support stay with Commercient. And if the books are moving to QuickBooks Online anyway, the QuickBooks Online page covers HubSpot’s own app, which may make a Desktop build unnecessary.

  • Managed sync on Skyvia

    Possible

    Skyvia documents syncing QuickBooks Desktop with cloud apps through its agent, which suits a stable one-way mapping. The agent has to run as an application, not a service, under the same Windows user as QuickBooks, so a signed-in session has to stay up.

  • Marketplace app

    Possible

    Commercient's QuickBooks Desktop listing is a third-party sync whose mapping and support stay with Commercient. It suits a standard customer and invoice copy where nobody on your side wants to run a service.

What breaks and how we prevent it

Jobs returned as customers

A customer query returns every customer, job and subjob in one list. A sync that maps each row to a HubSpot company turns one client with twelve jobs into thirteen companies. We branch on the sublevel from the first run, write jobs to their own object and associate each one through its parent.

Deletions older than three months

ListDeletedQuery returns only what was deleted in the previous three months. A sync that pauses longer, with the Web Connector left closed, can no longer see what disappeared. When the last good run is older than that, the service runs a full key comparison instead of a delta.

Modified times from another clock

In multi-user mode QuickBooks stamps a change with the clock of the machine that holds the data file, not the one running QuickBooks, and the two can drift. Intuit recommends moving the last sync time a few hours back. We do that on every run and rely on keyed upserts to make the overlap harmless.

A restored company file

A company file restored from a backup loses whatever changed after that backup, and a delta read cannot see the loss. Intuit’s guidance is to compare the company’s last restore time with the last sync, so each run checks it first, and a restore newer than the last sync triggers a full reread.

The wrong company file open

When the Web Connector cannot open the company it expects, a service can fall back to whatever file is open. We check the FileID stored in the company on the first response of every session, and stop if it does not match.

Our approach

  1. Scope. We confirm the edition and year, where the company file lives, whether it runs in multi-user mode or with a hosting provider, and whether a move to QuickBooks Online is planned.
  2. Architect. We fix the objects, the ListID and TxnID keys, the job mapping, the watermark per object and the Web Connector schedule.
  3. Build. The service is built against a not-for-resale copy and a copied company file, with the Web Connector pointed at a test endpoint and a portal allowlist from the first commit.
  4. Validate. We compare customer and job counts and open invoice totals with QuickBooks reports, and walk the differences with the bookkeeper.
  5. Operate. We alert when a scheduled session does not arrive, keep replay available, and run a full comparison after any restore or long pause.

Common questions

Does HubSpot's own QuickBooks app work with QuickBooks Desktop?

HubSpot builds its QuickBooks app for QuickBooks Online, and its setup article names only QuickBooks Online throughout. For a Desktop company file, the HubSpot App Marketplace lists one app named for Desktop, QuickBooks Desktop SYNC, Data Lake, AI, MCP by Commercient, with about 120 installs in the marketplace's own count. Beyond that, a Desktop file needs the Web Connector route or a move to Online.

Can a business still buy QuickBooks Desktop Pro or Premier?

Not as a new subscriber. Intuit stopped selling new Desktop Pro Plus, Premier Plus and Mac Plus subscriptions in the United States after September 2024, and stopped selling Desktop Pro and Premier to new Canadian subscribers in April 2025. Existing subscribers can keep renewing, and Desktop Enterprise is still sold in both countries. That timeline belongs in any decision to build.

How often does QuickBooks Desktop sync with HubSpot through the Web Connector?

On the Web Connector's schedule, which the user sets and cannot set below one minute in its own screens. Intuit is clear that the schedule is a minimum gap rather than a guarantee, and that nothing runs while the Web Connector is closed. Most finance data is fine hourly, so we agree an interval in discovery and alert when a session does not arrive.

What happens when QuickBooks Desktop is closed at sync time?

The session fails and nothing is lost. The Web Connector reports that it could not reach QuickBooks, most often because QuickBooks is not running, no company file is open or a dialog box is waiting. Our service records the missed session and alerts on it, and the next successful run reads everything modified since the last watermark. Authorizing unattended mode, which starts QuickBooks in the background, removes the first cause.

Why do QuickBooks Desktop jobs turn into extra HubSpot companies?

Because QuickBooks lists jobs and subjobs as customers with a parent, and a customer query returns them all together. Mapping every row to a company creates one company per job. We map rows with a sublevel of zero to companies, write deeper rows to a job object, and key everything on the ListID, which never changes, rather than the full name, which does.

When does a QuickBooks Desktop sync need a full reload?

In three cases Intuit describes. Deleted list records are reported only for the previous three months, so a longer pause needs a full comparison. A company file restored from a backup needs a full reread, which the last restore time reveals. And balances and quantities on hand change through transactions without the account or item being marked modified. We check for all three on every run.

Does QuickBooks Desktop for Mac work with a HubSpot integration?

Not through Intuit's SDK, which Intuit says covers the QuickBooks desktop family except QuickBooks for the Mac, and the not-for-resale copies Intuit gives developers exclude the Mac as well. Intuit also stopped selling Mac Plus to new US subscribers after September 2024. For a Mac company file, we would look at a move to QuickBooks Online first.

What does a QuickBooks Desktop and HubSpot integration take in hours?

Allow 10 to 20 hours of discovery and 70 to 150 hours of build for six objects with watermarks, deletion checks, replay and reconciliation, including the Web Connector setup. Discovery covers the edition and year, where the company file lives, multi-user mode, any hosting provider and the plan for QuickBooks Online, because that plan can make a one-time load the better buy.

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

  • Anthropic Solutions Partner

Trust and compliance

We design integrations to support the security and privacy rules your business works under, and we build them on independently audited platforms.

How we build

  • Sandbox first. We build and test in a sandbox before anything reaches production.
  • Fail-closed allowlists. An integration runs only against the HubSpot accounts it is approved for.
  • Least-privilege access. Each integration gets only the API scopes it needs.
  • Secrets in a vault. Keys and tokens live in a secrets vault, never in plain text.
  • Sensitive data scoped early. Discovery covers sensitive data, access controls and any BAA or data-processing needs.
  • A compliance package for regulated industries: audit logging, field-level encryption and sensitive-data handling.

Scope a QuickBooks Desktop integration

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

  • QuickBooks Desktop

Type any system and its version, such as Sage 300 or Sage 50. Press Enter or a comma after each one.

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