ml-connector
SAP ECCShipStation

SAP ECC and ShipStation integration

SAP ECC manages procurement, materials, and vendor master data. ShipStation runs order fulfillment and carrier tracking across your e-commerce channels. Connecting the two keeps your purchase orders and inbound shipments synchronized. Vendors in SAP ECC sync to ShipStation for tracking, and shipment notifications from ShipStation post back to SAP ECC goods receipts so your receiving team knows when vendor deliveries have arrived. ml-connector handles the on-premises SAP Gateway OData endpoint, the on-premises agent requirement, and the cloud REST API on the ShipStation side.

How SAP ECC works

SAP ECC is an on-premises ERP suite that exposes purchase orders, materials, vendors, GL accounts, and goods receipts through RFC/BAPI function modules, OData v2 via SAP Gateway on the customer's SAP instance, and SOAP web services. OData calls go to http://<host>:<port>/sap/opu/odata/<namespace>/<service>/ with HTTP Basic Auth (username and password). RFC calls require an on-premises agent running SAP .NET Connector or Java Connector on the customer network. RFC has no native webhook system, so data is read by polling at a schedule you set. Purchase orders use the BAPI_PO_GETDETAIL1 and related function modules or OData entities EKKO and EKPO. Vendors are read via BAPI_VENDOR_GETLIST and LFA1 master data table. Goods receipts use the MIGO transaction tables or equivalent BAPI calls.

How ShipStation works

ShipStation is a cloud shipping and order management platform accessible via REST API at https://api.shipstation.com/v2. Calls authenticate with an API Key header (no Bearer prefix) or HTTP Basic Auth with base64-encoded apiKey:apiSecret pair. ShipStation exposes orders, customers, products, shipments, warehouses, and purchase orders via REST endpoints. Purchase orders in ShipStation v2 support creation and updates for vendor tracking. Shipments generate SHIP_NOTIFY webhooks that push a pointer to the shipment resource, requiring an authenticated follow-up GET to fetch the full tracking details. ShipStation rate limits at 200 requests/min for V2 API (default). All datetime fields are in PST/PDT timezone, not UTC. V2 does not provide a general /orders list endpoint, so polling requires the V1 API with modifyDate filters.

What moves between them

Purchase orders flow from SAP ECC to ShipStation. ml-connector reads POs from SAP ECC via OData on a schedule, maps them to ShipStation purchase orders for vendor management, and syncs vendor master data (from SAP ECC LFA1 table) as purchase order recipients. Shipment tracking flows the other direction: ml-connector subscribes to ShipStation SHIP_NOTIFY webhooks, fetches the full shipment details via authenticated REST calls, and posts the delivery confirmation and tracking number back to SAP ECC goods receipts (MIGO or equivalent) so receiving records are automatically closed when vendors ship.

How ml-connector handles it

SAP ECC requires an on-premises agent to run the OData calls because RFC and OData both sit behind the customer's firewall. ml-connector provides the agent endpoint and polls SAP ECC on a daily or weekly cadence (you control the frequency) to read new and changed purchase orders. Vendor master data is synced once and updated on change. ShipStation API Key is stored encrypted. When ShipStation SHIP_NOTIFY webhooks arrive, ml-connector verifies the webhook (ShipStation does not provide HMAC signatures, so ml-connector validates the resource_url format), fetches the full shipment with an authenticated GET, converts PST datetime fields to UTC, and posts the tracking number and ship date to SAP ECC's goods receipt tables via BAPI_GOODSMVT_CREATE or equivalent. Purchase orders are keyed by SAP ECC PO number (field EBELN), so reruns and retries are idempotent. Rate limiting on ShipStation's 200 req/min rate is handled with exponential backoff. Every record is logged with full audit trail so missed or failed shipments can be replayed.

A real-world example

A mid-sized manufacturing and distribution company runs SAP ECC for procurement and materials. They use ShipStation to manage inbound shipments from vendors and track deliveries across multiple carrier accounts. Before integration, the receiving team manually logged into ShipStation to check if a purchase order had shipped, then manually entered the tracking number into SAP ECC's goods receipt module when delivery arrived. With SAP ECC and ShipStation connected, each vendor shipment automatically appears as a goods receipt confirmation in SAP ECC, stamped with the carrier, tracking number, and ship date from ShipStation. The receiving team now opens SAP ECC and sees which POs are in transit, which have been delivered, and can plan warehouse receiving without toggling between systems. Month-end inventory reconciliation is faster because the goods receipt date is automatically recorded.

What you can do

  • Sync purchase orders and vendor master data from SAP ECC to ShipStation for vendor management and tracking.
  • Receive ShipStation shipment notifications and post delivery confirmations with carrier and tracking number back to SAP ECC goods receipts.
  • Handle SAP ECC on-premises OData authentication via an on-premises agent and convert SAP Gateway endpoints to cloud REST.
  • Convert ShipStation shipment dates from PST/PDT to UTC for accurate SAP ECC posting.
  • Deduplicate purchase order syncs and shipment posts using PO number as idempotency key, with full audit trail and replay capability.

Questions

What purchase order and vendor data flows between SAP ECC and ShipStation?
Purchase orders flow from SAP ECC to ShipStation. ml-connector reads purchase orders (PO number, line items, quantity, delivery address) and vendor master data (vendor name, address, contact) from SAP ECC via OData and maps them into ShipStation purchase orders for tracking. Shipment notifications flow the opposite direction: when a vendor ships via ShipStation, ml-connector posts the delivery confirmation, carrier, and tracking number back to SAP ECC.
Why does the integration need an on-premises agent for SAP ECC?
SAP ECC is an on-premises system. RFC/BAPI calls and OData endpoints live behind the customer's firewall and cannot be called directly from the cloud. ml-connector provides an on-premises agent that runs on the customer network with SAP .NET Connector or Java Connector installed, so it can reach SAP ECC's OData Gateway and poll purchase orders on schedule.
How does the integration handle ShipStation timezone and webhook verification?
ShipStation timestamps are in PST/PDT, not UTC. ml-connector converts shipment dates to UTC before posting to SAP ECC so receiving dates are recorded correctly. ShipStation does not provide HMAC signature verification for webhooks, so ml-connector validates the webhook by checking the resource_url format and fetching the full shipment details with an authenticated GET to confirm the data source.

Related integrations

Connect SAP ECC and ShipStation

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

Get started