ml-connector
SAP Business OneShipStation

SAP Business One and ShipStation integration

SAP Business One runs order management and inventory for small-to-midsize businesses, while ShipStation handles shipping label generation and carrier selection for e-commerce orders. Connecting them keeps your orders and shipment tracking aligned. When new orders appear in SAP Business One, they can be sent to ShipStation for fulfillment without manual data entry. Shipment confirmations and tracking information flow back into SAP Business One so customers see real-time shipping status and inventory is reduced on shipment, not order.

How SAP Business One works

SAP Business One exposes sales orders, purchase orders, inventory items, and general ledger accounts through OData v4 REST APIs at a customer-specific Service Layer endpoint (https://<customer-server>:<port>/b1s/v2/). Authentication uses a session token obtained via POST /Login with a B1SESSION cookie that expires after 30 minutes of inactivity and returns error code -5002 on timeout. SAP Business One v10.0 FP 2602+ supports webhooks for Create/Update/Delete events if the Webhook Messenger Service is activated, but polling with UpdateDate filters is recommended as the default approach. There is no fixed global hostname; each customer provides their own base URL, and some on-premise instances use self-signed TLS certificates.

How ShipStation works

ShipStation is a cloud REST API at https://api.shipstation.com/v2 (current version) that manages orders, customers, products, shipments, and warehouses. Authentication uses an API Key provided in the API-Key header; there is no OAuth or Bearer scheme. ShipStation publishes webhooks for order notifications and shipment events, but webhook payloads contain only resource pointers (URL and type), so the actual data must be fetched with an authenticated GET call. The rate limit is 200 requests per minute with headers X-Rate-Limit-Limit, X-Rate-Limit-Remaining, and X-Rate-Limit-Reset. Once an order is shipped or cancelled, it becomes immutable and cannot be updated via API. All v1 datetime fields are in PST/PDT timezone, not UTC.

What moves between them

Orders and inventory items flow from SAP Business One to ShipStation. When an order is created or updated in SAP Business One, ml-connector detects it via polling on a schedule tied to your order fulfillment cycle and pushes it to ShipStation with the customer and item details mapped. Shipment confirmations, tracking numbers, and carrier information flow back from ShipStation into SAP Business One, updating the order status and inventory quantities. Reference data such as item codes and customer identifiers are aligned bidirectionally so orders land on valid ShipStation products and customers.

How ml-connector handles it

ml-connector maintains session tokens on the SAP Business One side by reusing the B1SESSION cookie and refreshing it before the 30-minute inactivity timeout, avoiding expensive cold-start calls. On ShipStation it presents the API key on every request and respects the 200 requests-per-minute rate limit with backoff and retry logic. Orders are mapped from SAP Business One sales orders to ShipStation orders using the DocNum (document number) as the natural idempotency key; ml-connector checks for duplicates on retry to avoid double-shipments. Inventory updates are sent to ShipStation as part of order fulfillment and tracked in the audit log so any reconciliation step has a full trace. ShipStation webhook payloads are pointer-only, so ml-connector follows the resource_url to fetch the actual shipment or order data within the webhook time window. Datetimes from ShipStation v1 are converted from PST/PDT to UTC so timestamps align with SAP Business One. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A small-to-midsize e-commerce business runs SAP Business One for order management and accounting on-premise and uses ShipStation to aggregate orders from multiple sales channels (Shopify, Amazon, eBay) and generate carrier-optimized shipping labels. Before the integration, the order fulfillment team manually exported orders from SAP Business One each morning, copied the customer and item data into ShipStation, generated labels, and then re-entered tracking information back into SAP Business One by hand. With SAP Business One and ShipStation connected, new orders sync automatically from SAP Business One to ShipStation, labels are generated on schedule, and tracking confirmations flow back into SAP Business One without re-keying. The fulfillment team can now focus on packing instead of data entry, and customers see accurate shipment tracking in the sales portal.

What you can do

  • Push sales orders from SAP Business One to ShipStation with customer, item, and quantity details mapped correctly.
  • Generate shipping labels in ShipStation and sync tracking numbers, carrier names, and shipment status back to SAP Business One.
  • Reuse SAP Business One session tokens to avoid expensive authentication on every call, refreshing before timeout.
  • Poll SAP Business One on a schedule aligned to your order fulfillment cycle, with duplicate detection and full audit trail.
  • Handle ShipStation's 200 requests-per-minute rate limit with backoff and retries, tracking every record change.

Questions

How does ml-connector keep SAP Business One session tokens from timing out?
ml-connector reuses the B1SESSION cookie returned from POST /Login and monitors the inactivity timer. It refreshes the token before the 30-minute timeout by making a small authenticated call, so orders can flow continuously without expensive cold-start login calls. If a token does expire (error code -5002), ml-connector logs the timeout and re-authenticates immediately.
Why do ShipStation webhooks require a follow-up GET call?
ShipStation webhook payloads contain only the resource URL and type, not the full order or shipment data. ml-connector receives the webhook notification, follows the resource_url with an authenticated GET, and fetches the actual shipment or order details within the webhook time window. This design lets ShipStation emit frequent lightweight notifications without sending large payloads.
How are orders mapped from SAP Business One to ShipStation without duplicates?
ml-connector uses the SAP Business One DocNum (document number) as the natural idempotency key. On retry, it checks whether an order with that DocNum has already been sent to ShipStation and skips re-transmission if it has. All create and update operations are logged in the audit trail so any discrepancy can be traced and replayed if needed.

Related integrations

Connect SAP Business One and ShipStation

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

Get started