Integration

Connect HubSpot to QuickBooks

Turn a closed-won HubSpot deal into a QuickBooks invoice, built from the deal's line items, with the company matched so nothing is duplicated. When the invoice is paid, the deal shows it, and revenue properties in HubSpot stay honest. An approval step can hold anything unusual. Every entry is an ordered run.

Two-way (invoice out, payment back)
Direction
prompt on close, minutes on payment
Latency
Deal stage closed won, QuickBooks payment
Common trigger
Template, then map items and terms
Setup

Why teams connect HubSpot and QuickBooks

Sales runs in HubSpot. The books are in QuickBooks. Without a link, a rep pings finance every time a deal closes, finance re-keys the line items, and the "closed revenue" number in HubSpot and the invoiced total in QuickBooks slowly drift apart.

  • A closed-won deal creates a QuickBooks invoice from the deal's line items, with products, quantities, and prices carried across
  • Companies are matched on a stored QuickBooks ID, falling back to a normalized name and domain, so a repeat customer is never duplicated
  • When QuickBooks records a payment, the deal shows paid, partially paid, or overdue, and the paid date is set
  • An approval step can hold an invoice over a threshold or with a non-standard discount before it posts

Worked example

The deal-to-invoice flow most teams turn on first.

A closed-won HubSpot deal becomes a QuickBooks invoice, payment status back

Triggered on the deal stage change, idempotent on the deal ID.

  1. 1Trigger: HubSpot deal enters a stage flagged closed won, carrying the associated company, the primary contact, and the line items.
  2. 2Resolve company: find the QuickBooks customer by the company's quickbooks_customer_id property. If empty, search by normalized name and domain, and write the ID back on a match.
  3. 3Idempotency: query QuickBooks for an invoice whose private note holds the deal ID. If one exists, stop.
  4. 4Map lines: for each HubSpot line item, resolve the QuickBooks item by SKU, carry quantity and price, and apply the tax code from a lookup on the company's region.
  5. 5Approval: if amount is over the threshold or the discount exceeds the limit, pause for finance approval. Otherwise continue.
  6. 6Create invoice: QuickBooks Create Invoice with the lines, the customer, the terms, and the deal ID in the private note.
  7. 7Write back: set the deal properties invoice_number and invoice_status = sent. A later QuickBooks payment updates the status and sets invoice_paid_date.

Field mapping

The starting map for the HubSpot deal to QuickBooks Invoice step.

HubSpotQuickBooks OnlineNotes
deal.dealIdInvoice.PrivateNote (contains ID)Idempotency key. Queried before creating so a re-fired stage change does not double-invoice.
company.quickbooks_customer_idInvoice.CustomerRefMatch key. Written back on first match if only name and domain matched.
line_item.quantityInvoice.Line.SalesItemLineDetail.QtyOne line per HubSpot line item.
line_item.hs_skuInvoice.Line.SalesItemLineDetail.ItemRefResolved to the QuickBooks item ID. Unmapped SKUs fall back to a generic item and flag for review.
line_item.priceInvoice.Line.SalesItemLineDetail.UnitPriceOverride, so QuickBooks price rules do not restate the quoted price.
deal.deal_currency_codeInvoice.CurrencyRefCurrency gotcha: only on a multi-currency company, and must match the customer's currency or the create fails.
company.payment_termsInvoice.SalesTermRefMapped through a lookup to a QuickBooks term record. Defaults to Net 30 if unset.
QuickBooks Invoice.Balance vs paymentsdeal.invoice_status, deal.invoice_paid_dateReturn path. Paid at zero balance, Partially Paid otherwise, Overdue past due date.

What syncs, each direction

  • Invoices. A closed-won deal creates an invoice from the line items, with mapped items, prices, terms, and tax. (HubSpot to QuickBooks)
  • Customers. A new or changed company creates or updates the QuickBooks customer, matched on a stored ID. (HubSpot to QuickBooks)
  • Payment status. Payments and credit memos update the deal's invoice status and paid date. (QuickBooks to HubSpot)
  • AR aging (optional). A nightly roll-up writes open AR and days overdue onto the company for CS and collections. (QuickBooks to HubSpot)

Governance and audit

The same controls apply to this sync as to every other Neblex workload.

  • Ordered run log. Every invoice records the deal, the resolved customer, the mapped lines, and the QuickBooks response. Replay without re-posting.
  • Approval steps. Invoices over a threshold or with a non-standard discount pause for a named approver before they are booked.
  • Scoped access. HubSpot uses a private app scoped to deals, companies, contacts, and line items. QuickBooks uses an OAuth grant to one company file.
  • Environments. Build against a HubSpot test account and a QuickBooks sandbox company, then promote the same flow to production.

Frequently asked questions

How is this different from the HubSpot QuickBooks app or a marketplace connector?

HubSpot's built-in QuickBooks integration is a fair starting point for basic invoice creation. Neblex fits when you want the invoice step inside a larger flow, an approval gate you control, matching logic on your terms, payment status and AR aging back on the company, and one run log across every integration.

Does it create the invoice automatically?

By default, on closed-won. You can require an approval first, always or only over a threshold.

How does it avoid duplicate customers?

It matches on a QuickBooks customer ID stored on the company. On the first match by name and domain it writes the ID back so later runs match directly.

What if the deal has no line items?

The flow can fall back to a single line from the deal amount and a default item, or hold for review, depending on how you configure it. It never creates a zero-line invoice.

Can it keep HubSpot revenue properties accurate?

Yes. The invoiced total and paid amount write back to deal properties, so HubSpot reporting reflects what was actually billed and collected, not just what was forecast.

Is the payment sync prompt?

on the next poll. QuickBooks payment events trigger the write-back, and a scheduled sweep catches anything the event missed.

Connectors on this page

HubSpot

CRM

Operations
336
Typed outputs
81.5%
Change triggers
48 (poll)
Authentication
Bearer

QuickBooks

Accounting

Operations
50
Typed outputs
100%
Change triggers
Poll or inbound webhook
Authentication
OAuth2
See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.