QuickBooks Online and HubSpot integration
Your accounting lives in QuickBooks Online and your customer relationships live in HubSpot. Connecting the two keeps your customer data and financial records in sync without manual export and re-entry. New customers created in QuickBooks Online appear in HubSpot as contacts. Invoices and payments flow from QuickBooks Online into HubSpot's commerce objects, linked to the right contact. Company records in HubSpot flow back as vendors in QuickBooks Online so your procurement team has the complete picture. ml-connector handles the very different APIs on each side and automates the sync on a schedule you control.
What moves between them
QuickBooks Online customers flow into HubSpot as contacts with billing and shipping details mapped to HubSpot contact properties. Invoices and invoice line items from QuickBooks Online are created as HubSpot invoices linked to the corresponding contact. Payments flow as HubSpot payment records associated with the invoice. HubSpot company records flow back to QuickBooks Online as vendors, enabling your procurement team to maintain a single source of truth for business partners. The sync runs on a schedule you define, typically daily or upon webhook notification.
How ml-connector handles it
ml-connector stores both credential sets encrypted: the QuickBooks Online OAuth 2.0 refresh token and the HubSpot Private App Access Token. Because QuickBooks Online's refresh tokens rotate every 24-26 hours, ml-connector tracks token expiry and automatically re-authorizes before the token becomes stale, preventing authentication chain failure. On the QuickBooks Online side, it polls the CDC endpoint or subscribes to webhooks; because QuickBooks Online webhook payloads are minimal, ml-connector fetches the full customer or invoice record immediately after receiving the webhook notification. On the HubSpot side, it batches customer inserts into contacts and invoice creates into commerce objects, respecting HubSpot's 100-record batch limit and ensuring each invoice is associated with its contact and line items before posting. ml-connector tracks the realm_id (QuickBooks Online company identifier) per customer and the hub_id (HubSpot portal ID) to route requests to the correct instance. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-market B2B SaaS company uses QuickBooks Online for billing and accounting, and HubSpot to track customer relationships and deal pipelines. Before the integration, the billing team exported customer invoices from QuickBooks Online weekly and manually created payment records in HubSpot, and the sales team spent time reconciling customer data between systems. Customer names, billing addresses, and invoice line items frequently went out of sync. With QuickBooks Online and HubSpot connected, each new customer invoice in QuickBooks Online appears in HubSpot automatically, linked to the correct contact and flagged in the deal pipeline. When a company name changes in HubSpot, ml-connector propagates it back to QuickBooks Online. The billing and sales teams now work from a single source of truth, and month-end reconciliation is faster.
What you can do
- Sync QuickBooks Online customers into HubSpot as contacts with billing address, email, and phone number.
- Create HubSpot invoices and line items from QuickBooks Online invoices, linked to the matching contact.
- Map QuickBooks Online payments to HubSpot payment records associated with the correct invoice.
- Flow HubSpot company records back to QuickBooks Online as vendors for procurement and expense tracking.
- Handle QuickBooks Online OAuth refresh token rotation automatically and fetch full records from minimal webhook payloads.
Questions
- What happens when QuickBooks Online's refresh token expires?
- QuickBooks Online refresh tokens rotate every 24-26 hours. ml-connector tracks token expiry and refreshes automatically before the token becomes stale, preventing authentication failures and blocking your sync. You do not need to manually re-authenticate.
- Do I need to set up webhooks on both sides?
- No. ml-connector can poll both systems or use webhooks on either side depending on your preference. QuickBooks Online webhooks fire on invoice and customer events, but payloads contain only the entity ID, so ml-connector fetches the full record immediately. HubSpot webhooks are optional and useful for real-time company updates flowing back to QuickBooks Online.
- What is the realmId and hub_id, and do I need to provide them?
- The realmId is your QuickBooks Online company identifier, captured automatically during OAuth authorization. The hub_id is your HubSpot portal ID, available in your HubSpot account settings. ml-connector stores and uses both to route API requests to the correct instance.
Related integrations
More QuickBooks Online integrations
Other systems that connect to HubSpot
Connect QuickBooks Online and HubSpot
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started