hundred/ for Sage 100

Guide ยท Sage 100 integration

How to connect Sage 100 to Shopify or a web app

Checked against Sage 100 help and community threads on 2026-09-27.

Short answer: Shopify and other web apps cannot call Sage 100 directly, because Sage 100 has no web API (the old sData interface was removed in 2025). Something must run on the Windows side, next to Sage 100, and carry data between the two. You can buy that piece as a connector, schedule file imports, or build a small service yourself. The design questions are the same in all three: how orders get in, how stock gets out, and how you avoid duplicates.

Three patterns that work

PatternHow it worksGood for
Packaged connectorA partner product syncs Shopify orders into Sales Order and pushes stock and prices back. Answers in the Shopify community point to products such as IN-SYNCH and VL OMNI.A standard store with little custom logic, and a budget for a subscription and setup.
Scheduled filesExport orders from Shopify as CSV, import them with Visual Integrator on a schedule. Export stock with an ODBC query and upload it.Low volume, where orders arriving every hour or once a night is acceptable.
Your own serviceA Windows service reads Sage 100 with ODBC, writes with the Business Object Interface (BOI), and talks to Shopify's API over outbound HTTPS.Custom apps, B2B portals, several stores, or logic no connector covers.

Map the data before you write code

Orders: web order to Sales Order

  • Create orders through the Sales Order business object (SO_SalesOrder_bus), not by writing tables. Then pricing, tax, credit checks and numbering work as they do for your staff.
  • Store the web order number in CustomerPONo on SO_SalesOrderHeader. Before you create an order, look that number up. If it is there, the order already went in. That single check stops duplicate orders when a sync runs twice or a webhook repeats.
  • Decide whether web orders arrive as OrderStatus N (new) for review or go straight to open.

Customers

Sage 100 keys a customer by division plus customer number (ARDivisionNo + CustomerNo). For consumer web shops, many companies post all orders to one "web sales" customer and keep the buyer's name and address on the order's ship-to fields. For B2B, match the web account to an existing Sage customer and store the Sage key in the web platform.

Items and SKUs

Make the Shopify SKU equal to the Sage 100 ItemCode on CI_Item. A mapping table works too, but it becomes one more thing that drifts.

Stock

Available stock per warehouse is in IM_ItemWarehouse: QuantityOnHand minus QuantityOnSalesOrder is a common definition of "available". Push it on a schedule, or only for items whose row changed.

SELECT ItemCode, WarehouseCode,
       QuantityOnHand - QuantityOnSalesOrder AS Available
FROM IM_ItemWarehouse
WHERE WarehouseCode = '000'

If you build the service yourself

  1. Run it where BOI runs: the Sage 100 server or a workstation with the Sage 100 client, in 64-bit for Sage 100 2026.
  2. Connect outbound. Poll Shopify's API or pull from a queue in your cloud. An inbound port on the ERP server is a hard sell to the customer's IT.
  3. Sign in as a dedicated Sage user with a role limited to the tasks you call, and expect that session to take a license seat.
  4. Log every write with the web order number and the Sage number it produced, and check sLastErrorMsg on every failed call.
  5. Plan for upgrades. Sage 100 ships a major release each April; test your service against it before the customer upgrades.

Sources: Shopify community: Shopify integration with Sage 100, Sage community: API for Sage 100, Sage 100 file layouts.

Hundred is a planned REST API for Sage 100: your web app would call one endpoint, and a small connector would do the Windows side. Early access, rolling out in stages.

Join early access