Quote-to-cash7 min read
The B2B quote-to-cash integration guide
How CRM, CPQ, ERP and billing fit together from deal to paid invoice: data ownership, architecture patterns, failure modes and how to measure improvement.
Connect them so a won deal becomes a NetSuite sales order without retyping, and order, invoice and payment status flow back to HubSpot. Decide first which system owns each record, store each system's ID in the other, then choose a pre-built connector, middleware or a custom integration based on how standard your order rules are.
HubSpot runs the pipeline; NetSuite runs orders, billing and finance. The integration's job is to hand a won deal to finance without anyone retyping it, and to show sales what happened next. In practice that means four flows:
Customers. A won deal's company becomes, or is matched to, a NetSuite customer.
Items and prices. Products in HubSpot (or your CPQ) match NetSuite items, so orders use the right ones.
Orders. An accepted quote or won deal becomes a NetSuite sales order, with its lines.
Status back to HubSpot. Order, invoice and payment status appear on the HubSpot company and deal, read-only.
Object | Owned by | Synced to HubSpot as |
|---|---|---|
Company and contacts | HubSpot, until the first order | The NetSuite customer ID on the company |
Customer billing details | NetSuite, after the first order | Read-only properties, if sales needs them |
Items and list prices | NetSuite | Products in the HubSpot product library |
Sales order | NetSuite | Order number and status on the deal |
Invoices and payments | NetSuite | Invoice and payment status, and balance due |
The rule that saves the most pain: store the NetSuite internal ID on the HubSpot record, and the HubSpot ID on the NetSuite record. Matching customers by name or email domain creates duplicates the first time two subsidiaries share a domain or someone renames a company.
Approach | Good for | Watch out for |
|---|---|---|
A pre-built connector from the HubSpot App Marketplace | Standard flows: customers, items, orders and invoice status | Fixed field mappings, and limits on custom records, subsidiaries or complex orders |
Middleware (an iPaaS) | Several systems connected, mappings managed in one place | Another platform to pay for and someone to maintain it |
A custom integration | Order rules specific to your business, high volume, or full control of errors | Needs a developer to build and to own it |
A custom integration typically uses NetSuite's REST or SOAP web services, or a RESTlet when you need logic inside NetSuite, authenticated with token-based authentication or OAuth 2.0. On the HubSpot side it uses the CRM API and webhooks, or a workflow that calls the integration when a deal is won. Small services such as Azure Functions are a good fit: they run only when something happens, and can log every run.
The order step needs the most design work. Decide:
What triggers it. Deal moved to closed won, or a quote accepted in your CPQ. Pick one.
What a valid order needs. Customer, billing and shipping address, items, quantities, prices, currency, subsidiary and terms. Make the HubSpot properties required at the stage before closed won, so incomplete deals can't trigger an order.
What happens when it fails. The deal should show that the order wasn't created and why, and a named person should get an alert.
How changes are handled. Amendments, cancellations and renewals after the first order.
Duplicate customers created because the integration couldn't find the existing one.
Item mismatches, when a product is added or renamed in HubSpot but not in NetSuite.
Subsidiaries, currencies and tax that weren't in the original mapping.
Partial orders, where the header syncs but some lines don't.
Silent failures logged where nobody looks, found weeks later at month end.
Each of these is cheaper to prevent than to clean up. Map the edge cases before you build, test with real orders, and make every failure visible.
Won deals reach NetSuite as orders without anyone retyping them.
Sales can see invoice and payment status in HubSpot without asking finance.
Sync errors are seen and fixed within a day, not discovered at month end.
Month-end reconciliation between the CRM and NetSuite takes less time.
For the bigger picture, including CPQ and invoicing, read the B2B quote-to-cash integration guide. If quoting is the bottleneck, see how HubSpot and DealHub fit together.
Connecting HubSpot to NetSuite and similar ERPs is part of our quote-to-cash service.
There are pre-built connectors in the HubSpot App Marketplace that sync customers, items, orders and invoice status. They suit standard flows. If you use subsidiaries, custom records or complex order rules, check the connector's limits before committing, or plan for middleware or a custom integration.
One event, chosen deliberately: usually the deal moving to closed won, or a quote being accepted in your CPQ. Make the fields a valid order needs required at the stage before, so incomplete deals can't create broken orders.
Their status should, read-only: invoice number, amount, due date, paid or unpaid, and balance. Sales and account managers can then see whether a customer has paid without asking finance, while NetSuite stays the system of record.
Store the NetSuite internal ID on the HubSpot company once the customer exists, and match on that ID, never on names or domains. The first order creates the customer; every later order finds it by ID.
Quote-to-cash7 min read
How CRM, CPQ, ERP and billing fit together from deal to paid invoice: data ownership, architecture patterns, failure modes and how to measure improvement.
Quote-to-cash5 min read
When to add DealHub CPQ to HubSpot, how quotes, products and approvals flow between them, and how the accepted quote reaches your ERP.
HubSpot4 min read
Typical HubSpot implementation timelines by project type, what makes them run long, and how to keep yours on schedule.