SAP S/4HANA and ShipBob integration
SAP S/4HANA manages your procurement and finance across the business. ShipBob warehouses and ships your inventory at fulfillment centers in multiple locations. Connecting the two keeps your purchase orders, warehouse activity, and goods receipts in sync across both systems without re-keying or manual reconciliation. When ShipBob receives goods against a SAP purchase order, that receipt flows back into SAP as a goods receipt document. When ShipBob ships an order from inventory, the deduction updates SAP's stock and can trigger return-to-vendor workflows.
What moves between them
Purchase orders flow from SAP S/4HANA into ShipBob as Warehouse Receiving Orders, creating inbound shipments at the assigned fulfillment center. ShipBob webhook events for wro.completed and wro.updated trigger goods receipt postings back into SAP S/4HANA, updating purchased item quantities and GL accounts. Shipment tracking from ShipBob flows into SAP S/4HANA delivery documents and billing records. Returns initiated in ShipBob generate return documents in SAP S/4HANA for cost center and supplier reconciliation. The direction is bidirectional: orders flow out, receipts and shipments flow back on a real-time basis via webhooks.
How ml-connector handles it
ml-connector stores SAP OAuth credentials and ShipBob access tokens encrypted, refreshing the SAP token before expiry and the ShipBob token on each 1-hour boundary. On the SAP side, it polls purchase orders using OData filters on LastChangeDateTime, mapping each order to ShipBob's Warehouse Receiving Order schema with line items, quantities, and receiving locations. ShipBob's webhook listener receives wro.completed and wro.updated events, validates the HMAC-SHA256 signature, and posts the corresponding goods receipt into SAP S/4HANA using the purchase order reference and line item quantities. Shipment tracking webhooks (order.shipped, order.shipment.tracking.updated) map to SAP delivery documents and billing invoices, keeping procurement and warehouse in lock-step. Retries handle transient failures on both sides, and every record carries an audit trail of when it was synced, what data moved, and what errors occurred.
A real-world example
A mid-sized distributor buys inventory from regional suppliers through SAP S/4HANA and warehouses the stock across three fulfillment centers managed by ShipBob. Before the integration, the warehouse team received SAP POs via email and entered them manually into ShipBob's receiving module, creating duplicate work and occasional line-item mismatches. When ShipBob completed a warehouse receiving order, the warehouse manager sent a spreadsheet to the SAP team for goods receipt posting. With SAP S/4HANA and ShipBob connected, purchase orders flow automatically into ShipBob the moment the buyer releases them in SAP, warehouse staff scan and receive against the correct line items, and the receipt posts back to SAP automatically so the inventory and GL accounts are updated with no manual intervention.
What you can do
- Send SAP S/4HANA purchase orders to ShipBob as Warehouse Receiving Orders at the correct fulfillment center, mapped by location and supplier.
- Post ShipBob warehouse receipts back into SAP S/4HANA as goods receipt documents with quantities tied to the original purchase order.
- Sync shipment tracking from ShipBob into SAP S/4HANA delivery and billing documents so procurement visibility matches warehouse reality.
- Handle SAP OAuth 2.0 token refresh and ShipBob Personal Access Token expiry so credentials stay valid and API calls never fail due to auth.
- Track every order, receipt, and shipment in an audit log and replay failed documents if a downstream system was temporarily unavailable.
Questions
- Which direction does data move between SAP S/4HANA and ShipBob?
- The main flow is bidirectional. Purchase orders move from SAP S/4HANA to ShipBob as Warehouse Receiving Orders, triggering inbound warehouse activity. When ShipBob completes a receiving order, that receipt posts back into SAP S/4HANA as a goods receipt document, updating inventory and GL accounts. Shipment tracking from ShipBob flows into SAP delivery and billing records for end-to-end procurement visibility.
- How does ml-connector handle the different authentication models between SAP and ShipBob?
- ml-connector stores both OAuth credential sets encrypted and manages token refresh on each system's schedule. SAP tokens are refreshed before the 12-hour expiry window; ShipBob access tokens are refreshed every hour when a 1-hour boundary is crossed. The channel ID and webhook signature verification are validated on every ShipBob webhook so writes are only accepted from your own fulfillment channel.
- What happens if a goods receipt fails to post to SAP or a PO fails to send to ShipBob?
- Every record is stored with a timestamp and attempt count. ml-connector retries transient failures up to a configurable limit with exponential backoff, and logs the error in an audit trail. If a retry succeeds, the record is marked complete; if all retries fail, the record is flagged for manual review so the operations team can investigate and replay the document once the issue is resolved.
Related integrations
More SAP S/4HANA integrations
Other systems that connect to ShipBob
Connect SAP S/4HANA and ShipBob
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started