---
title: "SAP Business One to Shopify Integration"
url: https://www.uncap.com/integration/sap-business-one
author: "Denis Dyli"
published: 2026-09-25
updated: 2026-11-13
summary: "Business One is SAP for companies that are not running SAP's enterprise stack. Which means the entire integration question comes down to one thing: which system decides what a customer pays, at the moment they are looking at the screen. What you get then is runtime resolution, not a synced price file, and the objection stops applying."
---

# SAP Business One to Shopify Integration

> Business One is SAP for companies that are not running SAP's enterprise stack. Which means the entire integration question comes down to one thing: which system decides what a customer pays, at the moment they are looking at the screen. What you get then is runtime resolution, not a synced price file, and the objection stops applying.

Which means the entire integration question comes down to one thing: which system decides what a customer pays, at the moment they are looking at the screen.

## The question every serious evaluation reduces to

The decision is not about storefront features. It is about who owns pricing logic.

The concern is worth stating fairly: an ERP-native storefront reads Special Prices and volume discounts from Business One at the moment of the request, whereas a platform connected through an integration layer receives pricing that was pushed to it, which is not the same thing as executing B1 pricing logic at runtime. Push what B1 knows into a storefront and you have a copy. Copies age.

The counter-argument is not that the concern is wrong. It is that push is a design choice rather than a property of the platform.

A Shopify storefront can ask Business One for the net price for the logged-in business partner at the moment the buyer loads the page or opens the cart, and render what comes back. The Service Layer is a REST interface and it will answer. What you get then is runtime resolution, not a synced price file, and the objection stops applying. What you do not get for free is somebody thinking carefully about latency, caching and what happens when B1 is slow, which is the actual work and the reason this page exists.

There is a fair warning on the other side too: any design tightly coupled to B1 inherits B1's data cleanliness and B1's performance. That is true of every approach including this one, and it is why the first week of a Business One project is spent in your business partner master rather than in Shopify.

## What the Service Layer actually is

Business One exposes the Service Layer, which SAP describes as using "REST API, HTTP, OData, and JSON to expose SAP Business One data in a consistent and scalable manner." SAP's own course addresses it on port 50000 and says to read the server name and port for your installation from the SLD Services tab.

The OData version is worth being precise about rather than rounding off. SAP's course retrieves OData v4 metadata from `/b1s/v2/$metadata` and OData v3 metadata from `/b1s/v1/$metadata`, and it notes that after a login on v2 "there is no session established for v1". Decide which version your client uses before you build it.

Authentication shapes the whole client design. SAP says the Service Layer "supports two types of authentication schemes": Basic Authentication, where you POST a Business One user ID and password to the Login endpoint and get back a SessionId, and OAuth Authentication, which "uses access tokens" issued through an identity provider you configure. Where a load balancer sits in front of the Service Layer, SAP says that if a node fails "it forwards subsequent requests to another valid node", which validates the session from shared session info stored in the database. Session expiry and re-login still have to be built deliberately rather than assumed.

Then there is the ceiling.

The Service Layer runs behind a load balancer, and the setting that governs it is Maximum Threads per Load Balancer Member. On SAP HANA, SAP says "you can specify the Maximum Threads per Load Balancer Member during the installation" and that the setting "generates as many child processes as possible for each load balancer member." For Service Layer on Windows, SAP says you "cannot change Maximum Threads per Load Balancer Member during the installation. By default, it is set to 1." That setting is the practical throughput limit on your integration. On more than one Business One project the installed value turned out to be far lower than the integrator assumed, and checking it on your instance is a twenty minute task that belongs in week one.

Memory follows the same setting. SAP says memory consumption "depends on the number of load balancer members and the Maximum Threads per Load Balancer Member configuration" and recommends reserving "at least 1 GB of RAM per Service Layer httpd process", so raising the thread count is a sizing decision as well as a throughput one.

## How a price is decided

This is the section that determines whether your storefront can be trusted.

Business One resolves a price through a hierarchy rather than storing it on the item. A Special Price for that business partner and item takes precedence. Below it sits the price list assigned to the business partner. Period and volume discounts apply within that. The number the customer pays is the output of that evaluation.

Flatten it into a Shopify price list and you have created a copy that was correct at generation time. For a distributor with a few hundred accounts and heavily negotiated Special Prices, maintaining accurate flattened catalogs is not a maintenance burden so much as a thing nobody has ever successfully done.

So the resolution stays in Business One. Shopify catalogs still earn their place, controlling which products an account is entitled to see, which is what they are genuinely good at. The net price is asked for and rendered.

One more thing belongs here because it bites later. Returns from Shopify become credit memos in Business One, not reversed orders, and the credit memo has its own document flow. An integration that treats a return as an order with a minus sign in front of it will produce an accounting mess that someone in finance discovers at quarter end.

## Where the two systems line up

Business partners become Shopify companies, with their ship-to addresses as company locations and their contacts as buyer logins, so each person signs into the account they are authorized to buy for.

Items become products carrying the attributes and units of measure the catalog needs. If you sell by each, case and pallet, that is one B1 item represented three ways, and it has to be expressible or buyers will order the wrong quantity.

User-defined fields and objects deserve an explicit mention, because most Business One installations of any age have real business logic living in them. A partner who does not ask about your UDFs in the first meeting has not worked in B1.

A Shopify order becomes a B1 sales order with line detail, the customer's reference, addresses and terms mapped. Deliveries and invoices flow back to the buyer's account.

[Uncap Connect](https://www.uncap.com/products/connect) keeps pricing, inventory, customer data and orders current in both directions, embedded in Shopify and built for B2B, so customer-specific pricing and terms behave correctly rather than being adapted from a consumer sync.

## Which stock number Shopify should show

Decide, per warehouse, whether the storefront shows In Stock minus Committed or SAP's Available figure, because they answer different questions. Business One tracks both. SAP defines In Stock as the quantity physically in the warehouse, Committed as the quantity reserved for documents such as sales orders and production orders, and Ordered as the quantity already purchased or produced but not yet received. Available is calculated as In Stock plus Ordered minus Committed.

In Stock minus Committed is what is on the shelf and not yet promised to another order. Available also counts purchase orders that have not arrived, so a buyer can order stock that is still on its way. If you promise same-day shipping, the first number is the safer one to publish. If you take backorders against incoming purchase orders, the second one reflects them. Either way, the figure is read per Business One warehouse and mapped to the matching Shopify location.

## What happens when an order fails

Session expiry is the failure mode particular to Business One, and it is the one to get right. A Service Layer session does not last forever, and a load balancer can move you to another node. A client that does not detect this cleanly produces intermittent failures that look random and are not.

Beyond that, orders fail for the usual reasons. The item is blocked. The business partner is over their credit limit. The Service Layer is saturated because somebody scheduled a catalog job badly. Transient failures retry on a backoff. Permanent failures hold, with the payload and the exact B1 error preserved, somewhere your team already looks, and they can be corrected and replayed without asking the customer to order again. The buyer's Shopify order stays visible to them throughout.

Reconciliation matters more here than on most ERPs, because the document chain is real. An order that became a delivery that became an invoice should be traceable from the Shopify order, and a stuck document should be findable without opening a database.

## What we build

Live price resolution from Business One for the logged-in business partner, respecting the Special Price, price list and discount hierarchy, with a considered position on caching and latency rather than an accidental one.

Session-aware Service Layer clients that handle expiry, re-login and load balancer failover deliberately.

Company accounts, company locations and buyer logins mapped from the business partner master, including the UDFs your processes depend on.

Inventory sync across warehouses, sized against the thread ceiling on your actual instance after we have checked it.

Order, delivery and invoice flow with returns handled as credit memos, plus a held-order queue with replay.

One Shopify store carrying B2B and DTC on one catalog and one inventory position.

## Industries that run SAP Business One

[Electronic Components](https://www.uncap.com/industry/electronic-components), where parametric search and price breaks sit on top of a tightly managed part master.

[Packaging and Shipping Supplies](https://www.uncap.com/industry/packaging-shipping-supplies), where case and pallet pricing has to resolve correctly per account.

[Beauty and Cosmetics](https://www.uncap.com/industry/beauty-cosmetics), where professional and consumer channels run from one catalog.

[Food Service Distribution](https://www.uncap.com/industry/food-service-distribution), where lot traceability and contract pricing run together.

Business One is one of several SAP products we connect to Shopify. The [SAP integration overview](https://www.uncap.com/integration/sap) covers the others.

## How a SAP Business One Shopify integration runs

With Uncap Connect, an embedded Shopify app that lives inside the Shopify admin, a SAP Business One Shopify integration runs in four steps. Teams already committed to an integration platform can take the managed iPaaS route instead: a licensed middleware platform that Uncap builds, configures and supports.

- Confirm fit and plan. For a specific ERP and the depth of sync your operation needs, the Uncap team confirms fit directly. If you want the architecture on paper before you commit, Uncap Blueprint is a $7,500 fixed-price plan delivered in four weeks, and it includes an ERP integration audit.
- Map. We map every object and field across Shopify and SAP Business One into one shared model, with native support for Shopify B2B companies, locations, catalogs, price lists and payment terms.
- Sync. Bidirectional, real-time sync moves inventory, orders, customers and pricing continuously. Orders land in the ERP and fulfillment updates land on the storefront, so the order-to-cash loop runs without anyone retyping it.
- Monitor. A live console shows every sync, flags conflicts and replays anything that fails.

**Timeline and price.** Uncap Connect has a typical deploy of 3 to 5 weeks, and it starts at $8,000 for onboarding and then a flat $390 per month. A managed iPaaS integration from Uncap starts at $14,000 with a $500 to $2,000 monthly platform cost. We scope the exact figure to your systems up front.

**Track record.** Uncap is rated 5.0 from 77 reviews on Clutch. On ERP work in general, Shopify's case study of [Kooks](/work/kooks), a manufacturer that runs Infor Visual rather than SAP, says Kooks chose Uncap in part for its "experience integrating Shopify with key manufacturing systems like ERP and product information management (PIM) tools."

## Ready to talk

Bring whether you are on HANA or SQL Server, your Service Layer version, one account's Special Prices, and a list of the UDFs your processes actually use. Ask us to check your Maximum Threads setting in the first week.

[Talk to Our Experts](/quote), or start with a [Blueprint](https://www.uncap.com/blueprint), the paid discovery engagement that maps the integration surface, the pricing model and the phased plan before development begins.

## Frequently asked questions

### Can Shopify actually execute SAP Business One pricing, or only receive a copy of it?

It can ask for it. The Service Layer is a REST interface, so a storefront can request the net price for the logged-in business partner at the moment it is needed and render the answer, which is runtime resolution rather than a synced price file. The distinction is real and it is the right thing to interrogate, but it is a design decision rather than a platform limitation. Ask any partner quoting you this work whether the price is pushed or asked for.

### Does SAP Business One integrate with Shopify?

Yes, through the Service Layer, which SAP describes as using "REST API, HTTP, OData, and JSON to expose SAP Business One data." SAP's own examples address it on port 50000, under /b1s/v1 for OData v3 and /b1s/v2 for OData v4. SAP is not among the ERPs Shopify lists as direct integrations, so the Business One connection is built against that interface.

### Is the Service Layer OData v3 or v4?

SAP's Service Layer course uses both: it retrieves OData v4 metadata from /b1s/v2/$metadata and OData v3 metadata from /b1s/v1/$metadata, and notes that after a login on v2 "there is no session established for v1", so choose one version for your client and keep to it.

### How does authentication work?

SAP says the Service Layer "supports two types of authentication schemes": Basic Authentication, where you post a Business One user ID and password to the Login endpoint and receive a SessionId, and OAuth Authentication, which uses access tokens issued through an identity provider you configure. If a load balancer node fails, SAP says the load balancer forwards subsequent requests to another valid node, which validates the session from shared session info in the database, so session expiry and re-login need to be handled deliberately. Intermittent failures on a B1 integration are usually session handling rather than anything exotic.

### What is the throughput limit on the Service Layer?

It is governed by a setting called Maximum Threads per Load Balancer Member. SAP's Service Layer course says that on SAP HANA you specify it during installation, while on Windows you cannot change it during installation and it is set to 1 by default. SAP also recommends reserving at least 1 GB of RAM per Service Layer httpd process, so check the setting and the memory on your own instance early, because it has repeatedly turned out lower than assumed.

### Does it matter whether we run on HANA or SQL Server?

Yes, for throughput, licensing and deployment shape, and it is one of the first questions worth settling.

### How are returns handled?

As credit memos in Business One, with their own document flow, rather than as reversed sales orders. An integration that models a return as a negative order creates reconciliation problems that surface in finance rather than in the storefront.

### What about our user-defined fields?

They usually carry real business logic and they have to be part of the mapping. Most Business One installations of any age have processes that depend on UDFs and UDOs. If a partner has not asked about yours by the end of the first conversation, that tells you something.

### How long does a SAP Business One Shopify integration take?

For a full integration, pricing complexity and data quality drive the timeline more than catalog size: clean business partner data with straightforward price lists moves quickly, and heavily negotiated Special Prices with years of UDF accumulation do not. The Blueprint engagement establishes which you have before anyone commits to a date. Uncap Connect on its own typically deploys in 3 to 5 weeks.

### Which inventory figure should Shopify show from SAP Business One?

It depends on how you promise stock, so decide it per warehouse. SAP defines In Stock as the quantity physically in the warehouse, Committed as the quantity reserved for documents such as sales orders and production orders, and Available as In Stock plus Ordered minus Committed, where Ordered is stock purchased or produced but not yet received. In Stock minus Committed shows only what is on the shelf and unpromised. Available also counts incoming purchase orders, which suits a business that takes backorders against them.

### What does a SAP Business One Shopify integration cost?

Uncap offers two routes. Uncap Connect is an embedded Shopify app that lives inside the Shopify admin. It starts at $8,000 for onboarding and then a flat $390 per month, with a typical deploy of 3 to 5 weeks. A managed iPaaS integration uses a licensed middleware platform that Uncap builds, configures and supports. It starts at $14,000 with a $500 to $2,000 monthly platform cost. For a specific SAP system and the depth of sync your operation needs, the Uncap team confirms fit directly and scopes the exact figure up front.
