NetSuite Salesforce Integration: Options, Setup and Pitfalls

In this article
- A NetSuite Salesforce integration connects quote-to-cash: customers and items flow from NetSuite to Salesforce, a won opportunity becomes a NetSuite sales order, and fulfillment, invoice and payment status flow back so sales sees what finance sees.
- Four ways to build it: Oracle’s own NetSuite Connector for Salesforce, a prebuilt integration app such as Celigo’s, an iPaaS (Boomi, Workato, MuleSoft) or a Salesforce-native app like Breadwinner, and a custom integration on SuiteTalk REST and RESTlets.
- Standard order-to-cash with few customizations: start with a prebuilt connector. Many subsidiaries, custom pricing, subscriptions or several other systems in the flow: an iPaaS or custom build pays off.
- Most failures are design decisions, not code: who creates the customer, how items and price books map, which system owns an order after it syncs, and NetSuite’s concurrency limits.
Jump to
- What a Salesforce NetSuite integration actually does
- Your integration options compared
- Which option fits you
- Object and field mapping
- How to set up the integration, step by step
- Common pitfalls and how to fix them
- Salesforce ERP integration beyond NetSuite
- When a custom integration makes sense
- Go-live checklist
- Where Gilzor fits
What a Salesforce NetSuite integration actually does
Salesforce is where deals happen. NetSuite is where orders are fulfilled, invoices go out and cash is recorded. Without an integration, someone copies every won deal into NetSuite by hand, and sales never knows whether the customer paid.
A good integration covers the full quote-to-cash loop:
- Customers: a won account becomes a NetSuite customer, with the right subsidiary, currency and terms.
- Items and prices: the NetSuite item catalog and price levels feed Salesforce products and price books, so reps quote what finance can bill.
- Orders: a Closed Won opportunity (or an accepted quote) becomes a NetSuite sales order, or an estimate first if finance approves deals.
- Status back to Salesforce: fulfillment, invoices, payments, open balance and credit limit show up on the account.
- Subscriptions: for recurring revenue, contract dates and renewals line up with NetSuite billing (SuiteBilling, if you use it).
This guide covers that NetSuite flow in depth. If you connect Salesforce to a different ERP, the same logic applies; there are short notes on Business Central, Sage Intacct and Acumatica below and a separate Salesforce SAP integration guide. For the overall picture of Salesforce integrations, start with our Salesforce integration guide.
Your integration options compared
There are four realistic routes. They differ less in what they can sync than in how much you can change and who maintains it.
1. Oracle’s NetSuite Connector for Salesforce
Oracle announced its own connector at SuiteWorld in September 2024, with North America first in line. According to the NetSuite help center, it now runs as the Salesforce Connector on NetSuite Connector Platform: you install the Connector Platform and Salesforce Connector SuiteApps in NetSuite, deploy a managed package in Salesforce, assign its permission set to an API-only integration user and configure page layouts. It requires a NetSuite OneWorld account. The prebuilt syncs cover accounts and customers, contacts, items and price books, opportunities to sales orders, and sales orders, fulfillments, invoices and payments back to Salesforce, along with balance and credit limit fields on the account. By default, an opportunity syncs to a sales order when it reaches Closed Won. Ask your Oracle account team about availability, licensing and price for your account; Oracle doesn’t publish a list price.
2. Prebuilt integration apps (Celigo and similar)
Celigo’s NetSuite–Salesforce integration app runs on its integrator.io platform and is one of the longest-established options for NetSuite customers. It ships with ready flows for accounts, contacts, items, opportunities to sales orders, fulfillments, and invoice and payment visibility in Salesforce (quotes go through an add-on), plus settings for common edge cases. Celigo’s release notes describe, for example, an “Allow Order updates to approved Sales Orders” setting that lets order updates reach a NetSuite sales order that is already past Pending Approval. Celigo doesn’t publish prices; it quotes them by edition and usage.
3. iPaaS or a Salesforce-native app
Boomi, Workato and MuleSoft all have NetSuite and Salesforce connectors and templates for opportunity-to-order flows. You build and own the recipes, which suits companies that also connect a billing system, a warehouse or an e-commerce store. Breadwinner takes a different angle: it is a Salesforce-native app on AppExchange that shows NetSuite invoices, orders and balances inside Salesforce and lets reps create NetSuite sales orders from an opportunity, without separate middleware.
4. Custom integration on NetSuite’s APIs
Your developers call SuiteTalk REST web services and RESTlets (server-side SuiteScript endpoints) on the NetSuite side and the Salesforce REST, Bulk or Platform Events APIs on the other. New builds should use REST with OAuth 2.0: according to NetSuite’s SOAP removal FAQ, SOAP can’t be used for new integrations from release 2027.1 and is planned to be removed with 2028.2.
| Option | What syncs out of the box | Direction | Cost level | Effort to launch | Main limits |
|---|---|---|---|---|---|
| NetSuite Connector for Salesforce | Customers, contacts, items, pricing, opportunity to sales order, fulfillment, invoices, payments | Two-way | Quoted by Oracle | Low to medium | Standard records first; deep custom logic needs extra tooling; check regional availability |
| Celigo integration app | Accounts, contacts, items, opportunity to order (quotes via an add-on), fulfillments, invoices, payments | Two-way | $$ subscription | Low to medium (weeks) | Works best close to its built-in flows; heavy customizations add cost |
| iPaaS (Boomi, Workato, MuleSoft) | Whatever you build; templates help | Any | $$–$$$ subscription plus build | Medium to high | You own design, error handling and maintenance |
| Breadwinner (Salesforce-native) | NetSuite customers, orders, invoices and payments in Salesforce; create orders from Salesforce | Two-way | $$ subscription | Low | Centered on the Salesforce user experience; complex multi-system flows need more |
| Custom (SuiteTalk REST, RESTlets) | Anything, including custom records and logic | Any | $$$ build plus upkeep | High (months) | Your team maintains it through every NetSuite and Salesforce release |
Cost levels are relative. Connector and iPaaS vendors quote individually based on volume, flows and editions, so ask for a written quote that names the records and the volume you plan to sync.
Which option fits you
Five questions, about a minute. The result points to a starting option, not a final architecture.
Which Salesforce NetSuite integration fits you?
Object and field mapping
Agree on this table with sales ops and finance before anyone configures a tool. The "system of record" column decides which side wins when both change.
| Salesforce | NetSuite | Direction | System of record | Notes |
|---|---|---|---|---|
| Account | Customer (created on first won deal) | SF → NS, then status back | Salesforce for sales fields, NetSuite for billing fields | Subsidiary, currency, terms and tax settings live in NetSuite |
| Contact | Contact | Two-way | Salesforce | Sync billing contacts only, not every lead |
| Product, price book entry | Item, price level | NS → SF | NetSuite | One price book per currency or price level |
| Opportunity or Quote | Estimate or sales order | SF → NS | Salesforce until synced | Trigger on Closed Won or quote acceptance, not on every save |
| Order (or custom object) | Sales order | NS → SF | NetSuite after sync | Status, ship date, order number for reps |
| Fulfillment (custom object) | Item fulfillment | NS → SF | NetSuite | Tracking numbers, partial shipments |
| Invoice, payment (custom objects or live view) | Invoice, customer payment, credit memo | NS → SF | NetSuite | Read-only in Salesforce |
| Account fields | Balance, overdue balance, credit limit | NS → SF | NetSuite | Useful for renewals and credit holds |
| Contract, subscription | Subscription (SuiteBilling) or recurring order | SF → NS | Depends on where billing runs | Agree who owns renewals and price changes |
Two fields on every pair: the NetSuite internal ID on the Salesforce record and the Salesforce ID on the NetSuite record. They are how the integration finds a match instead of creating a duplicate.
How to set up the integration, step by step
These steps follow the most common path, a prebuilt connector or integration app. A custom build follows the same order with code in place of configuration.
- Write down the flow and the ownersOne page: which event creates the customer, which event creates the order (Closed Won, signed quote, approved estimate), what flows back, and who owns each object. Get sign-off from sales ops and the controller.
- Prepare sandboxes on both sidesA NetSuite sandbox account and a Salesforce full or partial-copy sandbox with realistic items, customers and price books. Never build the first version against production.
- Create dedicated integration usersIn NetSuite, a separate user with a custom role that grants only the records and permissions the integration needs, authenticated with OAuth 2.0 (according to NetSuite’s documentation, new integrations can’t use token-based authentication from release 2027.1). In Salesforce, an API-only integration user with a permission set limited to the synced objects. Enterprise, Unlimited and Performance editions include Salesforce Integration user licenses for this by default, and more can be purchased. Don't use a person’s login: syncs break when that person leaves.
- Install and connect the toolInstall the connector SuiteApp, the integration app or the managed package, and authorize both connections with the integration users. Add the connector’s fields and layouts to the account and opportunity pages.
- Map subsidiaries, currencies and tax firstDecide how a Salesforce account picks its NetSuite subsidiary and currency, and where tax is calculated. If these are blank or wrong, orders fail to post, so set defaults and validation rules in Salesforce.
- Sync items and prices, then customersRun the item and price sync from NetSuite and check that every active item has a Salesforce product and price book entry. Then match existing customers to accounts by ID or a clean key, and fix duplicates before turning on automatic creation.
- Turn on the order flow and test the full loopClose a test opportunity and follow it: sales order created, approved, fulfilled, invoiced, paid, and each status visible back in Salesforce. Test discounts, multi-currency deals, partial shipments, cancellations and an edit after sync.
- Set up error alerts and an ownerRoute failed records to a named person by email or Slack, with the reason. Decide how errors are fixed and retried, and who checks the error queue every day.
- Load history and go live in a quiet windowDecide how much history to bring over (often open orders and 12–24 months of invoices). Go live outside month-end close, and watch the first week of orders daily.
Built by Gilzor
Results we’ve shipped




Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.
Common pitfalls and how to fix them
| Pitfall | What happens | Fix |
|---|---|---|
| Nobody decided who creates the customer | Duplicates in NetSuite, prospects cluttering finance, orders on the wrong customer | Create the NetSuite customer only on the first won deal; match by stored IDs, never by name |
| Subsidiaries and currencies | Orders fail to post or land in the wrong subsidiary; prices in the wrong currency | Required subsidiary and currency fields on the account; one price book per currency; test each subsidiary |
| Item mapping gaps | Reps sell products NetSuite doesn’t know; kits, bundles and discounts break orders | NetSuite owns the catalog; sync items to Salesforce, map bundles and discount items explicitly |
| Tax calculated in two places | Totals in Salesforce don’t match the invoice | Calculate tax in NetSuite (or your tax engine) and show the result in Salesforce, not the other way round |
| Edits after the order syncs | A rep changes the opportunity and overwrites a fulfilled order, or changes are silently ignored | Lock synced fields in Salesforce after the order is approved; send changes as a change request to finance |
| NetSuite concurrency limits | Calls rejected at peak times, partial syncs, failed batches | Queue and throttle requests, retry with backoff, schedule bulk jobs off-hours; check your limit on NetSuite’s Integration Governance page |
| Sync loops | An update in one system triggers an update back, and records bounce forever | Skip changes made by the integration user; sync only fields that actually changed |
| Too much data synced | API usage climbs and Salesforce storage fills with invoice lines nobody reads | Sync invoice headers and status, show details live or on demand, leave GL data in NetSuite |
Concurrency deserves a closer look. According to NetSuite’s documentation, every account has a concurrency limit shared by its web services and RESTlet integrations. The base limit depends on your service tier (for contracts since June 2020, from 5 on Standard to 15 on Premium and 20 on Enterprise and Ultimate), and each SuiteCloud Plus license adds 10. You can see your account’s limit on the Integration Governance page. Requests over the limit are rejected, so if Celigo, your e-commerce connector and a warehouse app all hit NetSuite at once, they compete for the same slots. Salesforce has its own rolling 24-hour API request allocation, which depends on your edition and licenses.
Salesforce ERP integration beyond NetSuite
The same quote-to-cash map works for any Salesforce ERP integration. What changes is the tooling available:
- Microsoft Dynamics 365 Business Central. Microsoft’s built-in CRM integration targets Dynamics 365 Sales through Dataverse, not Salesforce. For a Salesforce Business Central integration you use a third-party connector from Microsoft AppSource, an iPaaS such as MuleSoft or Boomi, or a custom build on Business Central’s REST and OData APIs.
- Sage Intacct. Sage offers its own Salesforce integration, the Sage Intacct Advanced CRM Integration, installed as a managed package. According to Sage’s documentation, it syncs accounts and contacts, products and price books, and order entry transactions such as sales quotes, sales orders, invoices and credit memos. Third-party connectors exist for flows it doesn’t cover.
- Acumatica. Expect a partner connector or an iPaaS (Celigo has Salesforce–Acumatica templates), or a custom build on Acumatica’s REST API.
- SAP and Oracle ERP. Enterprise ERPs usually connect through MuleSoft, SAP Integration Suite or Oracle Integration Cloud. See our Salesforce SAP integration guide for that path.
Whatever the ERP, the system-of-record table and the pitfalls above apply unchanged.
When a custom integration makes sense
Prebuilt tools handle the standard loop well. A custom build, or custom logic on top of an iPaaS, is worth it when:
- Pricing is calculated outside both systems or depends on contract terms a connector can’t read.
- You rely on NetSuite custom records or custom transaction types that the connector doesn’t support.
- Several systems share the order: CPQ, billing, a customer portal, a warehouse, a data warehouse.
- Volume is high enough that per-record or per-flow pricing costs more than owning the code.
A typical custom build has a small integration service with a queue, OAuth 2.0 clients for SuiteTalk REST and Salesforce, RESTlets for logic that is easier to run inside NetSuite, idempotent writes keyed on the stored IDs, a retry and error dashboard, and automated tests for each flow.
Our API integration cost guide breaks down where that money goes, and the NetSuite implementation cost guide shows how integrations fit into the overall NetSuite budget.
Go-live checklist
Tick what is already done. It shows how ready your integration is for real orders.
Salesforce NetSuite go-live readiness
FAQ
Does NetSuite have a native Salesforce integration?
How do I integrate Salesforce with NetSuite?
How much does a Salesforce NetSuite integration cost?
Should the customer be created in Salesforce or NetSuite?
Can Salesforce users see NetSuite invoices and payments?
Is NetSuite SOAP web services still an option for a new integration?
Where Gilzor fits
Gilzor’s engineers can map your Salesforce and NetSuite data flow, build the integration on a connector, an iPaaS or NetSuite’s REST APIs, and support it after launch. See Gilzor’s Salesforce integration services, or send us your order-to-cash flow and the fields that matter.
No sales pitch
Get a straight answer for your project
Tell us what you’re building. We’ll reply with options, a rough cost and timeline. If we’re not the right fit, we’ll say so.

Head of Mobile Development at Gilzor. Leads iOS and Android delivery and the mobile app audits, from release process to architecture.
LinkedIn →Gilzor · Web Development partner
Need a team for your web product?
Services
Web DevelopmentCustom websites and web apps — front-end, back-end, launch and support.→By company type
Selected projects






The team behind them





