Salesforce ERP Integration: Quote-to-Cash Sync With Any ERP (2026 Guide)

In this article
- A Salesforce ERP integration connects quote-to-cash: customers, products and prices come from the ERP, a won deal becomes an ERP sales order, and order, invoice and payment status flow back so sales sees what finance sees.
- Five ways to build it: the ERP vendor’s own connector (Oracle NetSuite and Sage Intacct have one), an AppExchange app, an iPaaS (integration platform as a service) such as MuleSoft, Boomi, Celigo or Workato, custom middleware on both APIs, and Salesforce Connect for read-only views.
- Settle ownership before tooling: Salesforce owns leads, opportunities and quotes; the ERP owns customers’ financial data, items, prices, orders after booking, invoices and payments. The general ledger never leaves the ERP.
- Accounting tools like QuickBooks or Xero need an app or a light iPaaS flow. SAP, NetSuite, Dynamics 365 or Workday with several entities usually need an iPaaS or custom middleware and a phased rollout.
Jump to
- What a Salesforce ERP integration actually does
- Who owns what: the system of record table
- Your integration options compared
- ERP by ERP: what changes
- Real time or batch: decide per flow
- How to set up a Salesforce ERP integration, step by step
- Pitfalls and how to fix them
- When a custom integration makes sense
- Go-live checklist
- Where Gilzor fits
What a Salesforce ERP integration actually does
Reps close deals in Salesforce, but the order, the stock, the invoice and the cash sit in the ERP (enterprise resource planning) or accounting system. Unconnected, the two systems leave finance rekeying each won deal, and reps asking finance by email whether an order shipped or a customer paid.
The fix is a quote-to-cash link. In most companies it covers six steps:
- Account. A Salesforce account becomes an ERP customer (or matches an existing one) when the first deal closes, not when a lead appears.
- Products and price books. Items and list prices come from the ERP into Salesforce products and price books, so reps quote what finance can bill.
- Quote. The rep builds the quote in Salesforce. Some companies call the ERP live here for customer-specific prices, stock or credit status.
- Order. A won opportunity, an accepted quote or an activated Salesforce order becomes a sales order in the ERP.
- Invoice. The ERP invoices, and the invoice number, amount and due date come back to Salesforce, read-only.
- Payment status. Paid, partly paid or overdue flows back to the account and opportunity, so renewals and collections calls start from the same facts.
Stop there for phase one. Projects that try to mirror the whole ERP inside Salesforce take months longer and end with two versions of the truth.
Who owns what: the system of record table
In quote-to-cash, ownership usually splits at the moment an order is booked: Salesforce owns the selling side, and the ERP owns the financial side from then on. Write that split down object by object, naming the system of record for each: the only place that record may be edited, while the other system shows it read-only. Get sales ops and finance to sign the table off first; tool demos come after.
| Salesforce | ERP record | Direction | System of record |
|---|---|---|---|
| Account | Customer | Salesforce → ERP when the first deal closes; credit limit, terms and balance back | Salesforce for name, owner and segment; ERP for billing terms, tax status, credit |
| Contact (billing) | Customer contact | Salesforce → ERP | Salesforce |
| Product (Product2) | Item or material | ERP → Salesforce | ERP (it carries the revenue account, unit and tax code) |
| Price book and price book entries | Price list or price levels | ERP → Salesforce | ERP; customer-specific prices often read live, not copied |
| Quote | Estimate or quotation (optional) | Salesforce → ERP only if finance needs it | Salesforce |
| Opportunity (won) or Order, with line items | Sales order | Salesforce → ERP, once; status back | ERP after booking |
| Custom Invoice object | Invoice | ERP → Salesforce | ERP |
| Custom Payment object or fields | Payment, balance due | ERP → Salesforce | ERP |
| External ID field on each object | Internal ID or number | Written back after create | The link itself; never edited by hand |
The last row matters most. Store the ERP’s ID on the Salesforce record, and the Salesforce ID on the ERP record where the ERP allows a custom field. Matching by name works until two customers share one; matching by stored ID is exact every time.
Two Salesforce details to check early. Quotes and Orders are standard objects, but according to Salesforce Help an admin has to turn each one on in Setup (Quote Settings and Order Settings) before use. Many companies skip Orders entirely and send the won opportunity straight to the ERP.
If you use a CPQ (configure, price, quote) tool, the quote and order lines come from that tool’s objects, so map those instead.
Your integration options compared
Salesforce has no built-in sync with any ERP. The routes below differ less in what they can move than in how much you can change, what you pay each year and who maintains it.
| Option | What syncs | Direction | Cost level | Effort | Main limits |
|---|---|---|---|---|---|
| ERP vendor’s connector (Oracle’s Salesforce Connector for NetSuite, Sage Intacct Advanced CRM Integration) | The vendor’s standard quote-to-cash records | Two-way | $–$$ quoted or bundled by the vendor | Low to medium | Built around the vendor’s standard process; deep custom logic needs extra tooling |
| AppExchange app (Breadwinner, DBSync and others) | Customers, invoices, payments, often orders; ERP data stored as Salesforce records | Two-way | $–$$ monthly subscription | Low (days to weeks) | Your process has to fit the app’s model; pricing grows with users or entities |
| iPaaS (Boomi, Celigo, Workato and similar) | Anything both APIs expose, plus other systems in the same flow; templates help | Any | $$–$$$ subscription plus build | Medium | You own the design, error handling and recipes |
| MuleSoft Anypoint | Anything, through reusable APIs; SAP, NetSuite and Dynamics connectors | Any | $$$ platform license plus build | Medium to high | Needs MuleSoft skills; overkill for two systems and a few flows |
| Custom middleware | Exactly what you define, including custom objects and odd billing rules | Any, real time or batch | $$$ build, low run cost | High (months) | You own monitoring, retries and every API change on both sides |
| Salesforce Connect (read-only views) | ERP records shown live as external objects, not copied | Read from the ERP | $$ paid add-on | Low to medium | Needs an OData or custom adapter; slow ERP services mean slow pages; limited reporting and automation |
Cost levels are relative. Connector and iPaaS vendors mostly quote by volume, flows and edition, so ask for a written quote that names the records and monthly volumes you plan to sync.
A word on MuleSoft: it is Salesforce’s own integration platform, built for companies that connect many systems and want one governed API layer. Our Salesforce MuleSoft integration guide covers when it pays off.
Apps and connectors are listed on AppExchange (now AgentExchange) and on ERP marketplaces; check the current listing, reviews and supported objects before you buy, because plans change often.
Which Salesforce ERP integration route fits you?
ERP by ERP: what changes
The quote-to-cash map above holds for every ERP. What changes is the tooling each vendor offers and the trap you are most likely to hit. Short notes, with a full guide where we have one.
Enterprise ERPs
- SAP (ECC and S/4HANA). There is no SAP button in Salesforce Setup. Projects run on SAP Integration Suite, MuleSoft with its SAP connector, Boomi or Workato, or custom code over SAP’s interfaces: OData services, BAPI/RFC function calls and IDoc messages. If you are still on ECC, design the integration to survive the move to S/4HANA: according to SAP’s maintenance strategy, mainstream maintenance for SAP ERP 6.0 ended in 2025 for enhancement packages 0 to 5 and ends at the end of 2027 for enhancement packages 6 to 8. Details in the Salesforce SAP integration guide.
- Oracle NetSuite. Oracle offers its own Salesforce Connector on NetSuite Connector Platform. According to the NetSuite help center, every NetSuite account using it must be a OneWorld account with at least one subsidiary, and the Salesforce side uses an API-only integration user. Celigo, Boomi, Workato and Breadwinner are the common alternatives. See the Salesforce NetSuite integration guide, and NetSuite ERP implementation cost if NetSuite itself is still being rolled out.
- Microsoft Dynamics 365 Business Central and Finance. According to Microsoft’s documentation, Business Central’s built-in CRM integration connects to Dynamics 365 Sales through Dataverse, not to Salesforce. For Salesforce you use a connector app from Microsoft AppSource or AppExchange, Power Automate or an iPaaS, or a custom build on the Business Central or Dataverse APIs. See the Salesforce Dynamics 365 integration guide.
- Workday. Most Salesforce Workday projects are about people data: workers becoming Salesforce users. Companies that also run Workday Financial Management, Adaptive Planning or Professional Services Automation add deal and customer flows, usually on MuleSoft, Workato or Boomi. See the Salesforce Workday integration guide.
Accounting software and mid-market ERPs
Searches for “Salesforce accounting integration software” are usually about this group. The flows are simpler (customer, invoice, payment), and AppExchange apps cover most cases.
- QuickBooks Online. Neither Intuit nor Salesforce offers its own connector for QuickBooks Online today; teams use an AppExchange app such as Breadwinner or DBSync, Zapier for very simple flows, or an iPaaS. See the Salesforce QuickBooks integration guide.
- Xero. The same pattern as QuickBooks, with tighter API limits per organization and “contacts” shared between customers and suppliers. See the Salesforce Xero integration guide.
- Sage Intacct. Sage ships its own integration, the Sage Intacct Advanced CRM Integration, installed in Salesforce as a managed package. According to Sage’s documentation, it covers accounts and contacts, products and price books, order entry quote-to-cash (quotes, orders, invoices and credit memos) and contract billing, and supports Professional (with API access), Enterprise, Unlimited and Performance editions of Salesforce.
- Acumatica, Epicor and other mid-market ERPs. Expect a partner connector, an iPaaS template or a custom build on the ERP’s REST API. Ask the vendor for a demo with your own objects and a written list of supported fields; coverage varies widely.
One more route exists when the accounting system is already straining: accounting or ERP apps built on the Salesforce platform itself, sold on AppExchange. That removes the integration but is a finance system migration, so it needs your controller’s buy-in.
Real time or batch: decide per flow
Real time costs more to build and to run. Most flows don’t need it. Decide flow by flow, not for the whole project:
| Flow | Typical timing | Why |
|---|---|---|
| Won deal → sales order | Near real time (event-driven) | Fulfillment and invoicing wait for it |
| Order, fulfillment and invoice status → Salesforce | Every 15–60 minutes, or on ERP events | Reps check it a few times a day |
| Payments and balances → Salesforce | Hourly or nightly | Used for renewals and collections, not live deals |
| Items and list prices → Salesforce | Nightly, plus on change | Catalogs change slowly |
| Customer-specific price, stock, credit check | Live call while quoting | Copying every price combination is impractical; read it on demand |
| Invoice history backfill | One-off batch, overnight | Protects API limits on both sides |
On the Salesforce side, event-driven flows usually listen to Change Data Capture or Platform Events, and large loads go through Bulk API 2.0. Our Salesforce integration guide explains the API choices in more depth.
How to set up a Salesforce ERP integration, step by step
The order is the same for a vendor connector, an app, an iPaaS or a custom build.
- Map the current quote-to-cash processSit down with sales ops and finance for half a day. Write down what triggers an order (won opportunity, accepted quote, signed contract), who creates customers today, and where orders get changed after they are booked.
- Fill in the system of record tableUse the table above. One owner per object and, where both sides edit the same object, per field. Agree who fixes sync errors and how fast.
- Clean both sidesDeduplicate accounts in Salesforce and customers in the ERP before the first sync. Decide whether Salesforce products will be loaded from the ERP item list (usually yes). Dirty data copied by an integration becomes twice the cleanup.
- Create integration usersDon’t connect with an admin’s personal login. In Salesforce, use a dedicated integration user; supported editions include a limited number of free API-only Salesforce Integration user licenses, according to Salesforce. Give it a permission set with only the objects the sync touches. Do the same with a role-limited user on the ERP side.
- Connect sandboxes, not productionConnect a Salesforce sandbox to an ERP test or sandbox environment. Load a copy of real customers, items and price lists. Many ERP projects lose weeks waiting for ERP sandbox access, so request it on day one.
- Build master data flows firstItems and prices from the ERP into Salesforce, then the account-to-customer match. Match on the stored ERP ID first, then on one exact field you trust, and send everything else to a review queue instead of creating a new customer.
- Build the order flow and the return flowWon deal to sales order with lines, then order status, invoices and payments back to Salesforce. Lock the order lines in Salesforce once the ERP has booked them.
- Test the awkward casesPut real deals through the sandbox, including the messy ones: a new customer, an existing one, a deal with several lines and a discount, a tax-exempt customer, a foreign-currency customer, an order changed after booking, a partial payment, a credit memo. Have finance check each result in the ERP.
- Go live in phasesSwitch production on for new deals only, from an agreed cut-off date, and check the error queue every day for two weeks. Add flows (quotes, live pricing, history) in later phases, one at a time.
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.
Pitfalls and how to fix them
| Problem | Why it happens | Fix |
|---|---|---|
| Duplicate customers | Both systems are allowed to create customers, or the sync pairs records by company name, so a legal suffix or a typo on one side produces a second customer. | Only one system creates customers. Match on the stored ERP ID; route unmatched accounts to a review queue. |
| Two masters for one field | Sales edits the billing address in Salesforce, finance edits it in the ERP, each sync overwrites the other. | One owner per field. Show the other side read-only and give users a way to request a change. |
| Sync loops | Field updates flow both ways, so each write wakes the other side’s sync, which writes back again. | Give every field a single direction. Have the integration ignore changes made by its own integration user. |
| Orders changed after booking | A rep edits a won opportunity after the sales order exists; the ERP never hears about it, or receives a second order. | Lock synced lines in Salesforce. Route changes through a change order or an amendment process in the ERP. |
| Unmapped products and units | A Salesforce product has no ERP item, or units of measure differ, so the order fails. | Load products from the ERP. Block closing deals with unmapped products using a validation rule. |
| Picklist and code mismatches | Payment terms, regions, tax codes or currencies use different values on each side. | Keep a mapping table in the integration layer, not hard-coded in flows. Review it when finance adds a value. |
| Wrong tax or totals | Salesforce sends tax amounts that disagree with the ERP’s tax engine. | Let the ERP calculate tax. Send address and exemption status, then read the final total back. |
| API limits during backfill | Loading years of invoices hits API limits or concurrency limits in Salesforce or the ERP. | Backfill overnight in batches with Bulk API; sync only changed records after that. |
| Duplicate orders on retry | A timeout makes the integration resend an order the ERP already created. | Make order creation idempotent: send the Salesforce ID as an external reference and check it before creating. |
| Sync stops silently | A password or token expires; errors go to an inbox nobody reads. | Dedicated integration users, alerts to a shared channel, a named owner and a weekly error review. |
What not to sync
Copying everything is slower, burns API calls and exposes financial detail to people who don’t need it. Leave the general ledger, journal entries and chart of accounts in the ERP, along with costing and margins below the level sales should see, vendor bills, payroll and bank data. Sync only the invoice history sales actually uses, usually the last one to two years.
When a custom integration makes sense
Connectors and apps fit most standard processes. Custom middleware pays off when:
- Pricing, billing or approval rules are too specific for a connector: subscriptions, usage, milestones, multi-entity revenue splits.
- Reps need live price, stock or credit checks during quoting.
- Volume is high enough that per-user or per-transaction pricing costs more each year than a build.
- You connect a heavily customized ERP or a legacy system with SOAP, file or EDI (electronic data interchange) interfaces.
- The same quote-to-cash logic must serve other channels, such as a customer portal or an online store.
A typical custom build includes a canonical data model, an ID cross-reference store, idempotent order creation, an event listener on the Salesforce side, scheduled or event-driven pulls from the ERP, a retry queue and an error dashboard finance can read. If you plan an ERP migration, this middle layer is what lets you swap the ERP adapter while Salesforce stays untouched.
For how these ranges break down, see our API integration cost guide. Building a wider data platform around Salesforce and the ERP? Read the cost of data integration. If you are weighing a custom ERP instead of a packaged one, custom ERP development cost covers that decision.
Go-live checklist
Salesforce ERP integration go-live readiness
FAQ
What is Salesforce ERP integration?
Does Salesforce have a native ERP integration?
Which ERP integrates best with Salesforce?
Can Salesforce replace an ERP?
How long does a Salesforce ERP integration take?
How much does Salesforce ERP integration cost?
Where Gilzor fits
ERP projects stall on ownership and sandbox access more often than on code, which is why the mapping comes first. Gilzor is a software development company with engineers in Poland and Cyprus, not a Salesforce reseller. We can run the quote-to-cash mapping with your sales ops and finance teams, build the integration on your ERP vendor’s connector, an iPaaS or custom middleware, and support it after launch (see Salesforce integration services).
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.

Co-Founder of Gilzor. Works with founders and product companies on how to staff and run engineering: team extension, dedicated teams, and getting stalled projects moving again.
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





