ml-connector
Sage 100ShipBob

Sage 100 and ShipBob integration

Sage 100 runs your accounting and inventory. ShipBob manages your fulfillment centers and shipments. Connecting the two keeps your accounting records current with fulfillment status and inventory movements. Orders placed in Sage 100 are communicated to ShipBob, shipments and returns are tracked back into Sage 100's sales order records, and inventory movements in ShipBob's fulfillment centers are reflected in your general ledger.

How Sage 100 works

Sage 100 is an on-premises ERP that exposes customers, sales orders, AP vendors, AP invoices, purchase orders, GL accounts, journal entries, and inventory items through SOAP Web Services (eBusiness Web Services) or through BOI COM layer wrapped in a local Windows agent. Sage 100 has no native cloud API and requires either a SOAP endpoint on customer infrastructure or a local agent running on a Windows server in the customer's data center. All access is stateless username and password per call, with no OAuth or token refresh. Sage 100 has no webhooks or push events, so all data is read by polling using DateLastUpdated and DateCreated fields.

How ShipBob works

ShipBob exposes orders, shipments, products, inventory, receiving records, returns, billing, and fulfillment center locations through a REST API at https://api.shipbob.com with JSON request and response bodies. ShipBob authenticates with OAuth2 Authorization Code flow for multi-merchant integrations or Personal Access Token for single-merchant setups, with access tokens valid for 1 hour and refresh tokens for 30 days. ShipBob publishes a rich webhook stream covering order shipment, tracking updates, deliveries, returns, receiving, and billing events, each signed with HMAC-SHA256 for verification.

What moves between them

ml-connector pulls sales orders and inventory from Sage 100 and pushes them to ShipBob on a schedule tied to your fulfillment cycle. ShipBob webhooks are pushed into ml-connector, which ingests shipment tracking, deliveries, returns, and billing events and reflects them back into Sage 100 sales order records and inventory transactions. Inventory transfers in ShipBob fulfillment centers trigger adjustments in Sage 100's inventory and costing. Returns from customers flow back through ShipBob to Sage 100 as credit memos.

How ml-connector handles it

ml-connector maintains two separate credential paths because Sage 100 and ShipBob use entirely different authentication models. On the Sage 100 side, ml-connector stores the Windows service account credentials for the local agent, or the SOAP username and password, and polls Sage 100 at intervals you set, typically every 15 minutes for orders and inventory and hourly for reference data. It handles Sage 100's company-code requirement by maintaining a per-customer mapping from ShipBob's channel_id to Sage 100's company code. On the ShipBob side, ml-connector authenticates via OAuth2 bearer token, storing and refreshing the token when it expires after 1 hour, and presents the required shipbob_channel_id header on every call. ml-connector registers a webhook endpoint with ShipBob to receive shipment events in real time, validates each incoming webhook signature with HMAC-SHA256, and maps ShipBob shipment tracking updates back to the correct Sage 100 sales order by matching order reference numbers. Inventory movements in ShipBob fulfillment centers are reconciled back to Sage 100 by polling ShipBob's inventory endpoint and comparing the counts to what Sage 100 has on hand. All records carry a full audit trail and can be replayed if a downstream call fails.

A real-world example

A regional e-commerce retailer runs Sage 100 for accounting and inventory control, with fulfillment outsourced to ShipBob across three regional fulfillment centers. Before the integration, the operations team manually exported pick lists from ShipBob and re-entered them into Sage 100 at day-end, chasing inventory reconciliation discrepancies between what ShipBob said they had on hand and what Sage 100 showed. With Sage 100 and ShipBob connected, orders flow from Sage 100 to ShipBob automatically, shipment tracking comes back without re-keying, and inventory counts reconcile nightly. Month-end physical inventory counts take hours instead of days.

What you can do

  • Poll sales orders and inventory from Sage 100 and push them to ShipBob on a schedule you control.
  • Ingest ShipBob shipment, delivery, tracking, and return webhooks and reflect them in Sage 100 sales order records.
  • Reconcile inventory counts between ShipBob fulfillment centers and Sage 100 GL accounts and cost layers.
  • Authenticate Sage 100 with local Windows agent or SOAP credentials and ShipBob with OAuth2 bearer token, with token refresh before expiry.
  • Track every record across both systems with a full audit trail and replay failed transactions without manual intervention.

Questions

How does ml-connector handle Sage 100's lack of webhooks?
Sage 100 is pull-only because it runs on customer premises and has no push events. ml-connector polls Sage 100 on a schedule you set, typically every 15 minutes for orders and inventory and hourly for reference data. ShipBob publishes webhooks for shipments and returns, which ml-connector receives in real time and pushes back into Sage 100.
Does ml-connector work with SOAP or the local Windows agent?
ml-connector supports both. If your Sage 100 is configured for SOAP Web Services, ml-connector uses the SOAP endpoint and stored username and password. If you use BOI COM through a local Windows agent, ml-connector connects to the agent via its API layer. You specify which interface your instance supports, and ml-connector routes calls accordingly.
What happens if ShipBob inventory or Sage 100 sales order fields get out of sync?
ml-connector carries a full audit trail on every record, including timestamps and the source of each update. If a sync fails or takes longer than expected, ml-connector can replay the transaction without manual intervention. You can also run a manual reconciliation at any time to check counts and resolve discrepancies.

Related integrations

Connect Sage 100 and ShipBob

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started