TL;DR
HubSpot and QuickBooks Online connect three ways: the native HubSpot Marketplace app (fastest, no code, syncs contacts, products, and invoices), Zapier (flexible triggers, poll-based, best for custom workflows), and Make or direct API (real-time, fully custom, requires technical setup). Most teams should start with the native app. Use Zapier or Make when the native app does not cover a specific workflow. The integration eliminates double-entry between sales and finance, keeps customer records synchronized, and gives finance visibility into pipeline before invoices are issued.
Why Connecting HubSpot to QuickBooks Matters
Sales teams live in HubSpot. Finance teams live in QuickBooks. Without an integration, data moves between these two systems manually — through exports, copy-paste, and email threads.
The cost of that manual process compounds fast. A contact created in HubSpot when a deal closes needs to exist in QuickBooks before an invoice goes out. A payment recorded in QuickBooks should update the deal record in HubSpot. When those updates happen manually, they happen late, partially, or not at all.
The consequences are concrete: finance issues invoices to wrong addresses, sales reps cannot see whether a customer has paid, and revenue reports in HubSpot include closed-won deals that have not generated cash. Connecting the two systems removes all three failure modes.
Beyond data accuracy, the integration creates operational leverage. When a deal closes in HubSpot, the corresponding invoice drafts automatically in QuickBooks. When a payment is received in QuickBooks, the deal record in HubSpot updates. Finance and sales are always looking at the same customer picture without either team requesting updates from the other.
Requirements Before You Start
Check all of these before beginning any connection method. Missing requirements are the most common reason integrations fail on the first attempt.
| Requirement | Details |
|---|---|
| HubSpot permissions | Super Admin or App Marketplace access. Standard users cannot install integrations. |
| QuickBooks account type | QuickBooks Online only. QuickBooks Desktop and sandbox accounts are not supported by the native app. |
| QuickBooks user role | Company Admin in QuickBooks Online to complete OAuth authorization. |
| HubSpot plan | The native QuickBooks integration is available on all HubSpot plans, including Starter. |
| Custom transaction numbers | Disable custom transaction numbers in QuickBooks before connecting. Enabled custom numbers cause invoice creation conflicts. |
| Non-US tax handling | If your QuickBooks account is outside the US, all synced invoices must include tax (VAT, HST, or GST). Invoices without tax will fail to sync. |
Once these requirements are confirmed, choose the connection method that matches your technical capability and data complexity.
Method 1: Native HubSpot QuickBooks App (Recommended)
The native integration is the correct starting point for most teams. It requires no code, takes under 30 minutes to configure, and covers the three most common sync use cases: contacts, products, and invoices.
Open the HubSpot App Marketplace
In HubSpot, click the Marketplace icon in the top navigation bar. Select App Marketplace from the dropdown. Search for "QuickBooks Online."
Click Install App
On the QuickBooks Online listing page, click Install app. HubSpot redirects you to Intuit's OAuth authorization screen.
Authorize with your Intuit credentials
Sign in to QuickBooks Online with your Company Admin account. Select the correct QuickBooks company from the dropdown if you manage multiple companies. Click Connect to grant HubSpot access.
Complete Guided Setup for each object
HubSpot redirects you to Guided Setup automatically. This one-page flow covers Contacts, Products, and Invoices. Configure each object in sequence before saving.
Guided Setup: Contacts
HubSpot contacts sync to QuickBooks customers. For each sync, set the direction: HubSpot to QuickBooks only, QuickBooks to HubSpot only, or bi-directional.
Set the conflict resolution rule. This determines which system wins when the same field is updated in both places simultaneously. For most teams, HubSpot should win on contact name and email. QuickBooks should win on billing address and payment terms.
Add sync filters if needed. A sync filter prevents all contacts from syncing — for example, only sync contacts where lifecycle stage equals Customer. This keeps QuickBooks clean and avoids creating customer records for leads and prospects.
Guided Setup: Products
HubSpot products sync to QuickBooks Products and Services. Bi-directional sync is available. If your product catalog lives in QuickBooks, set the sync direction to QuickBooks to HubSpot. If HubSpot is the source of truth for your product library, reverse the direction.
Map the income account for each product category. QuickBooks requires every product to be linked to an income account. This mapping must be configured before invoices will sync successfully.
Guided Setup: Invoices
Invoice sync is one-directional in the native app: HubSpot to QuickBooks. Create invoices in HubSpot from a deal record, and the integration sends them to QuickBooks for accounting and collection.
Configure which invoices sync using filters. The recommended filter is Invoice Status equals Pending or Paid. This prevents draft invoices from appearing in QuickBooks before they are finalized and sent to customers.
Click Save and start sync
After configuring all three objects, click Save and start sync at the bottom of Guided Setup. The initial sync runs immediately. For large data sets, allow 10 to 30 minutes for the first sync to complete.
Verify the sync in both systems
In HubSpot, open a contact record that should have synced. Check the Integrations card on the right sidebar — it should show QuickBooks Online with a green status. In QuickBooks, confirm the corresponding customer record exists with the correct fields populated.
Start with the native app. Add Zapier or Make only when the native app cannot cover a specific use case.
Method 2: Zapier Integration
Zapier connects HubSpot and QuickBooks through automated workflows called Zaps. Each Zap has a trigger (an event in one app) and one or more actions (operations performed in the other app). Zapier is the right choice when the native app does not support a specific trigger or when you need multi-step logic before data reaches its destination.
When to Use Zapier Instead of the Native App
- You need a workflow the native Guided Setup does not support — for example, creating a QuickBooks estimate when a HubSpot deal reaches a specific pipeline stage.
- You need conditional logic before data syncs — for example, only create a QuickBooks customer if the deal value exceeds a set threshold.
- You need to notify a team member in a third app at the same moment data moves between HubSpot and QuickBooks.
Setting Up a HubSpot to QuickBooks Zap
Create a new Zap in Zapier
Log in to Zapier. Click Create Zap. Select HubSpot as the trigger app.
Choose your HubSpot trigger event
Common trigger choices: New Deal, Deal Stage Changed, New Contact, Contact Updated, or New Invoice. For a deal-to-invoice workflow, select Deal Stage Changed and filter to your Closed Won stage name.
Connect your HubSpot account
Zapier prompts you to authenticate HubSpot via OAuth. Grant the required permissions. Standard user access with CRM permissions is sufficient for most triggers — Super Admin access is not required for Zapier.
Set up the QuickBooks action
Select QuickBooks Online as the action app. Choose the action event: Create Customer, Create Invoice, Create Payment, or Create Product/Service. Connect your QuickBooks account via OAuth with Company Admin credentials.
Map fields between the two apps
Zapier shows available fields from the HubSpot trigger and required fields for the QuickBooks action. Map each QuickBooks field to the corresponding HubSpot value. Required QuickBooks fields for invoice creation: Customer, Item, Quantity, Rate, and Due Date.
Test the Zap and turn it on
Zapier provides a test function using real or sample data. Confirm the QuickBooks record is created correctly before turning on the Zap. Verify all required fields populated without errors before going live.
Zapier Polling Delay
Zapier checks for new trigger events every 5 to 15 minutes depending on your plan. On Free and Starter plans, the polling interval is 15 minutes. Data does not move in real-time. If immediate sync is required — for example, to issue an invoice the moment a deal closes — use the native app or Make with webhooks instead.
Method 3: Make (Formerly Integromat) or Direct API
Make provides webhook-based triggers and a visual scenario builder. Unlike Zapier, Make runs scenarios in real-time when a webhook fires. This makes it suitable for time-sensitive workflows where a 15-minute delay is unacceptable.
Direct API integration using the HubSpot API and QuickBooks Online API requires developer resources. It is the right choice for complex data transformation logic, high-volume sync requirements, or organizations that need a fully owned integration without third-party dependency.
Setting Up a Make Scenario
Create a new scenario in Make
Log in to Make. Click Create a new scenario. Add HubSpot as the first module. Select Watch Events (webhook-based) for real-time triggering, or choose a polling module for scheduled sync.
Configure the HubSpot webhook
In HubSpot, go to Settings, then Integrations, then Private Apps. Create a webhook subscription for the object and event type — for example, Deal property change for dealstage. Paste the Make webhook URL into HubSpot's webhook target URL field.
Add a QuickBooks Online module
Add the QuickBooks Online module to your scenario. Connect your QuickBooks account via OAuth. Choose the action: Create Invoice, Create Customer, Create Payment, or Update Invoice.
Build transformation logic between modules
Make's scenario builder lets you add Router modules (conditional branching), Iterator modules (for line items), and Aggregator modules (to combine data from multiple HubSpot sources before sending to QuickBooks). This is where Make surpasses Zapier in flexibility for complex data structures.
Test, schedule, and activate
Run the scenario in test mode with a real HubSpot event. Verify the QuickBooks output is correct. Set a scheduling cadence if using polled triggers, or leave it event-driven for webhook mode. Activate the scenario when testing passes.
Direct API: Key Endpoints
For development teams building a custom integration, the primary endpoints are:
- HubSpot CRM API:
GET /crm/v3/objects/contacts,GET /crm/v3/objects/deals, andPOST /crm/v3/objects/invoicesfor reading deal data and pushing invoice records. - QuickBooks Online API:
POST /v3/company/{companyId}/customerandPOST /v3/company/{companyId}/invoicefor creating customers and invoices. Authentication uses OAuth 2.0 with a refresh token that expires every 100 days — plan for token renewal in your integration logic.
For most operators, Make covers the custom logic use case without requiring API development. Reserve the direct API path for enterprise-scale integrations that need full control over error handling, retry logic, and data transformation.
FAIRVIEW FOR REVENUE TEAMS
Connect HubSpot and QuickBooks in one platform
Fairview's Data Connection Layer connects to HubSpot, QuickBooks, and 8 other tools to surface the complete revenue picture — deals, invoices, and cash flow in one view.
Book a DemoWhat Data Syncs Between HubSpot and QuickBooks
Understanding exactly what moves — and what does not — prevents the most common post-integration surprises. The diagram below covers the native app sync behavior. Zapier and Make can extend this to any HubSpot or QuickBooks object that has API access.
Payments do not sync automatically via the native app. Use a Zapier Zap to update HubSpot deal properties when payment is recorded in QuickBooks.
What Does Not Sync via the Native App
- Payments. Payments received in QuickBooks do not sync to HubSpot deal records. Use Zapier with a QuickBooks New Payment trigger to update a custom HubSpot property when payment is recorded.
- Refunds. Refunds require manual credit memo creation in QuickBooks. Refunds processed through HubSpot Payments do not automatically generate QuickBooks credit memos.
- Estimates and quotes. QuickBooks estimates do not have a HubSpot equivalent in the native sync. Use Zapier or Make to bridge HubSpot Quotes to QuickBooks Estimates if needed.
- Companies to customers. The native app maps HubSpot contacts to QuickBooks customers, not HubSpot companies. For B2B teams that bill companies rather than individuals, configure the sync to pull the company name field from the associated company record, or use Zapier to map HubSpot companies directly to QuickBooks customers.
- Payment processing fees. Stripe or HubSpot Payments processing fees do not create QuickBooks expense entries. These require manual recording by the finance team.
Field Mapping Reference
Field mapping is where most integration configurations break down. The tables below show the default field mappings for the native app and the most common custom mappings teams add.
Invoice Field Mapping
| HubSpot Invoice Field | QuickBooks Invoice Field | Notes |
|---|---|---|
| Invoice Number | Invoice Number | Disable custom transaction numbers in QuickBooks to avoid conflicts. |
| Contact (associated) | Customer | Contact must exist in QuickBooks as a customer before the invoice syncs. |
| Line Items (product + quantity + price) | Line Items | Products must be synced to QuickBooks Products and Services first. |
| Invoice Date | Invoice Date | Direct map. Time zone is set by your QuickBooks account region. |
| Due Date | Due Date | Pulled from payment terms if not set explicitly on the invoice. |
| Discount (order-level) | Discount Line Item | One-time order-level discounts are supported. Line-level discounts require manual mapping. |
| Tax | Tax Code | Required for non-US accounts. Add as a line item linked to a QuickBooks tax account. |
| Notes / Memo | Memo | Only the first 1,000 characters sync. Truncation occurs silently — keep memos brief. |
Custom Field Mapping
The native app supports custom field mapping for teams with HubSpot Data Hub. Custom mappings allow sync of PO numbers, shipping methods, tracking numbers, and any custom properties created in HubSpot. Without Data Hub, you are limited to the default mappings above. Zapier and Make have no such restriction — any field visible in the HubSpot or QuickBooks API can be mapped without additional subscriptions.
Common Errors and How to Fix Them
Most HubSpot to QuickBooks sync failures trace back to one of five root causes. The panel below covers each error, its cause, and the exact fix to apply.
How to Check Sync Error Logs
In HubSpot, navigate to Settings, then Integrations, then Connected Apps. Click on QuickBooks Online. The CRM syncs table shows every object that attempted to sync, its status, and the error detail if the sync failed.
When an invoice fails to sync, a banner appears at the top of the Invoices index page in HubSpot with a direct link to the sync failure log. The log shows the exact QuickBooks error message — specific enough to identify the fix without further investigation in most cases.
For persistent errors after applying the documented fixes, disconnect and reconnect the integration from the Connected Apps settings page. This forces a fresh OAuth token and resolves permission-related errors that persist after account credential changes.
Best Practices for Keeping Data Clean After Integration
An integration that runs without errors is not the same as an integration that produces clean, usable data. These practices separate teams that get compounding value from the integration from those that spend time fixing data problems every month.
1. Use Sync Filters — Less Is More
Do not sync every HubSpot contact to QuickBooks. Only contacts in the billing process belong in QuickBooks. The correct filter is lifecycle stage equals Customer, or deal stage equals Closed Won. Syncing all contacts creates thousands of customer records in QuickBooks that will never have an invoice attached — making QuickBooks search, reporting, and reconciliation harder.
2. Establish a Single Source of Truth for Each Field
Decide in advance which system owns each field. Billing address should be owned by QuickBooks — finance teams update it when invoices are disputed or returned. Contact name and email should be owned by HubSpot — sales teams update it from calls and meetings. Document this ownership in your CRM hygiene protocol and configure conflict resolution in Guided Setup to match.
3. Normalize Data Before Activating the Sync
The integration moves whatever data is in HubSpot into QuickBooks. If phone numbers are stored in 12 different formats across your contacts, QuickBooks receives 12 different formats. Clean your data before activating the sync, not after. The data normalization guide for multiple sources covers the field-by-field cleaning process for CRM and billing data.
4. Test With a Subset of Records Before a Full Sync
Before running a full sync, use the sync filter to target 10 to 20 test contacts. Verify each record in QuickBooks manually. Confirm field mappings, name formats, and address fields are correct before opening the filter to the full contact database. This prevents a bulk sync from creating thousands of records that need manual correction.
5. Monitor Sync Errors Weekly
Set a calendar reminder to check the QuickBooks sync error log in HubSpot every Monday. Small errors left unchecked compound into data gaps that take hours to reconcile at month end. A five-minute weekly check catches 95% of problems before they become significant.
6. Protect Invoice Records from Edits in QuickBooks
When invoice sync is active, do not edit HubSpot-created invoices directly in QuickBooks. Edits made in QuickBooks to HubSpot-originated invoices do not sync back — the two records diverge permanently. All invoice edits should happen in HubSpot, which then pushes the updated version to QuickBooks on the next sync.
How Fairview Connects HubSpot and QuickBooks at the Reporting Layer
Connecting HubSpot to QuickBooks solves the data entry problem. It does not solve the analysis problem. Sales teams can see whether an invoice was created. Finance teams can see whether it was paid. Neither team can easily see the complete picture — which deals are making money, which customers carry the highest margin, and where revenue is leaking between pipeline and cash receipt.
Fairview's Data Connection Layer connects to HubSpot, QuickBooks, and 8 other tools to surface that complete view automatically. Instead of building a custom report that joins HubSpot deal data with QuickBooks payment data manually, Fairview does it continuously — surfacing deal-to-cash cycle time, invoice aging by customer segment, and margin by customer in a single operating view.
For revenue and finance teams that have already connected HubSpot and QuickBooks, Fairview is the layer that turns that synchronized data into decisions: which customers to prioritize for renewal, which deals carry the highest collection risk, and where the gap between closed-won revenue and collected cash is widest.
Key Takeaways
- The native HubSpot QuickBooks Online app is the fastest path — under 30 minutes, no code, syncs contacts, products, invoices, and credit memos bi-directionally or one-way.
- Before starting, disable custom transaction numbers in QuickBooks and confirm Super Admin access in HubSpot.
- Zapier adds flexible trigger-action workflows on a polling interval. Make adds real-time webhook-based sync with complex transformation logic for more advanced use cases.
- The native app does not sync payments, refunds, estimates, or company-to-customer mappings. Use Zapier or Make for those objects.
- Configure sync filters — only sync contacts with lifecycle stage Customer to keep QuickBooks clean and searchable.
- Decide which system owns each field before activating the integration. Document ownership and configure conflict resolution to match.
- Monitor the sync error log in HubSpot weekly. Most errors have a specific fix that takes under five minutes to apply.
See your revenue data in one view
Connect HubSpot, QuickBooks, and your full revenue stack
Fairview surfaces deals, invoices, payments, and margin in one operating view — automatically, without manual reporting or custom scripts.
What data syncs between HubSpot and QuickBooks Online?
The native integration syncs contacts (maps to customers in QuickBooks), products and services, invoices, and credit memos. Invoices sync one-way from HubSpot to QuickBooks. Contacts and products support bi-directional sync. Payments, refunds, estimates, and company records do not sync via the native app. Use Zapier or Make to cover those objects.
Can I connect HubSpot to QuickBooks Desktop?
The native HubSpot integration supports QuickBooks Online only, not QuickBooks Desktop. For QuickBooks Desktop connections, you need a third-party middleware tool such as DBSync or a custom integration using the QuickBooks Desktop SDK. Most organizations in this situation upgrade to QuickBooks Online to take advantage of the native API and the HubSpot integration without added complexity.
How do I fix a HubSpot QuickBooks sync error?
Sync errors appear as banners on the HubSpot Invoices index page with a link to the detailed error log. The most common causes are duplicate customer names in QuickBooks, custom transaction numbers enabled in QuickBooks settings, missing tax fields on invoices for non-US accounts, and product line items not yet synced to QuickBooks Products and Services. For most errors, the fix takes under five minutes once the root cause is identified in the error log.
Is Zapier better than the native HubSpot QuickBooks integration?
They serve different purposes. The native app is faster to set up, syncs in near-real-time, and requires no additional cost. Zapier adds flexibility for custom triggers and multi-step workflows but runs on a polling interval of 5 to 15 minutes. For standard contact, product, and invoice sync, the native app is the better choice. Use Zapier when you need a workflow the native app does not support — for example, syncing QuickBooks payment data back to HubSpot deal records.
Why are duplicate invoices appearing in QuickBooks after connecting HubSpot?
Duplicate invoices are almost always caused by a two-way sync configuration that triggers a new invoice in HubSpot when a payment event fires in QuickBooks. The fix is to add a workflow filter in HubSpot that excludes invoice payment events from triggering new invoice creation. Navigate to the QuickBooks integration settings in HubSpot and add a filter: only sync invoices where the event type is not Payment Received.
How do I sync QuickBooks payments back to HubSpot deals?
The native HubSpot QuickBooks integration does not sync payments from QuickBooks to HubSpot. To accomplish this, create a Zapier Zap with the trigger New Payment in QuickBooks Online and the action Update Deal in HubSpot. Map the payment amount to a custom HubSpot deal property called Payment Received, and map the payment date to a separate Payment Date property. This gives sales reps visibility into collected revenue directly from the deal record without requiring manual updates.