---
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-09-25
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

We ran a distributor's version of this question through a web-connected model twice with identical input. Both runs framed the decision the same way, and it was not about storefront features. It was about who owns pricing logic.

The concern that recurred across both runs 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.

The same runs also flagged the fair warning on the other side: 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, a REST interface following OData, running by default on port 50000 with a service root of the form `https://<host>:50000/b1s/v1`. Installations also expose an HTTPS variant on 8443 depending on how they were set up.

Use v1. A v2 path exists and is not supported, and using it can cause problems. This is the kind of detail that costs a week if you find it the hard way.

The OData version is worth being precise about rather than rounding off. The Service Layer follows OData 3.x, with v4 constructs appearing in batch operations. Pages that flatly say "OData 4" are describing something slightly different from what you will actually be working with.

Authentication is session-based rather than token-based, which shapes the whole client design. You POST credentials to `/b1s/v1/Login` and receive a B1SESSION cookie that has to accompany every subsequent request. Where a load balancer sits in front of the Service Layer it uses sticky sessions and can fail over to another node, so session handling and re-login have to be built deliberately rather than assumed.

Then there is the ceiling, and here we are going to be careful with you.

The Service Layer runs behind a load balancer whose installer exposes a setting called Maximum Threads per Load Balancer Member, configured in `httpd-b1s-lb.conf`. That setting is real and it is the practical throughput limit on your integration. Figures for its default value circulate widely, including a claim that the default is dramatically lower on Windows than on HANA. **We could not verify any default value against a source we can stand behind, so we are not going to quote you one.** What we will tell you is that on more than one Business One project the installed default turned out to be far lower than the integrator assumed, and that checking it on your instance is a twenty minute task that belongs in week one.

We would rather tell you the number is unverified than repeat one confidently. SAP's own documentation sites block automated retrieval, so anyone quoting you a precise Service Layer throughput figure has either logged in and read it, in which case ask them for the page, or is repeating something they read elsewhere.

## How a price is decided

This is the section competing pages skip, and it is the one 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.

## 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 B1SESSION cookie 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.

## 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.

Book a strategy session, 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, a REST interface following OData that runs by default on port 50000 with a service root of the form https://<host>:50000/b1s/v1. There is no first-party SAP connector for Shopify, so the connection is built against that interface.

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

It follows OData 3.x, with v4 constructs appearing in batch operations. Pages that state it flatly as OData 4 are rounding off. Use the v1 service path; a v2 path exists, is not supported, and can cause problems.

### How does authentication work?

It is session-based rather than token-based. You post credentials to the Login endpoint and receive a B1SESSION cookie that must accompany every subsequent request. Where a load balancer fronts the Service Layer it uses sticky sessions and can fail over between nodes, so session expiry, re-login and failover 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, configured in the load balancer configuration file. We could not verify a default value against a citable source, so we will not quote one, and neither should anyone else without showing you the page. The practical answer is to check the setting 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. It is also invisible on every competing page we reviewed, which is a reasonable signal about how deeply those integrations were scoped.

### 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?

Pricing complexity and data quality drive it more than catalog size. Clean business partner data with straightforward price lists moves quickly; heavily negotiated Special Prices with years of UDF accumulation do not. The Blueprint engagement establishes which you have before anyone commits to a date.
