Microsoft Dynamics 365 Business Central and ShipBob integration
Microsoft Dynamics 365 Business Central runs finance, inventory, and sales orders. ShipBob runs e-commerce fulfillment across distributed fulfillment centers. Connecting the two turns Business Central into the system of record while ShipBob handles pick, pack, and ship. Sales orders raised in Business Central flow to ShipBob for fulfillment, shipment tracking and on-hand inventory flow back into Business Central, and ShipBob's fulfillment invoices land as purchase invoices. ml-connector handles the very different APIs and auth on each side and moves the data on the cadence you set.
What moves between them
Records move in both directions. Business Central items are pushed into ShipBob as products so the fulfillment catalog matches the ERP, and Business Central sales orders are created as ShipBob orders for fulfillment. When ShipBob ships an order, its order.shipped and tracking webhooks flow back so ml-connector records the carrier, tracking number, and shipped status on the matching Business Central sales order. ShipBob on-hand and available inventory per fulfillment center syncs back into Business Central item inventory on a schedule, and ShipBob billing invoices come into Business Central as purchase invoices for the fulfillment charges. ShipBob inventory and billing are treated as read-only sources, so ml-connector does not write stock counts or charges back into ShipBob.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the Business Central side it requests an Entra service-to-service token with the businesscentral .default scope and refreshes it on a 401, and it accepts the tenant id and environment name per customer to build the company-scoped base URL. On the ShipBob side it runs the OAuth refresh-token flow, stores the rotated refresh token on every use, and attaches the shipbob_channel_id header to every call. Items map to ShipBob products by SKU, and the Business Central number or external id is matched against the ShipBob reference_id so a re-run updates rather than duplicates. Because Business Central notifications carry no payload, ml-connector fetches the changed sales order or item after each notification, and it renews each subscription before the three-day expiry with a cron job. ShipBob webhooks are verified by recomputing the HMAC-SHA256 signature before they are trusted. Weights and dimensions are converted to ounces and inches, and the shipping cost is read from the invoice_amount field nested in the shipment rather than a top-level order field. When a Business Central or ShipBob call returns 429 or a 5xx, ml-connector backs off and retries, and every record carries a full audit trail with error replay.
A real-world example
A direct-to-consumer brand with roughly forty staff runs Microsoft Dynamics 365 Business Central for finance, inventory, and order entry, and outsources warehousing to ShipBob across several fulfillment centers. Before the integration, staff exported each day's web orders, re-keyed them into ShipBob by hand, then copied tracking numbers back into Business Central and adjusted stock counts from ShipBob spreadsheets, which left inventory wrong and customers asking where their orders were. With Business Central and ShipBob connected, every sales order flows to ShipBob for fulfillment, tracking and shipped status post back automatically, and on-hand counts per fulfillment center sync into the ERP. Customer service can see real tracking in Business Central, inventory matches the warehouse, and the monthly ShipBob invoice arrives as a purchase invoice ready to review.
What you can do
- Push Microsoft Dynamics 365 Business Central items into ShipBob as products, matched by SKU and reference id so re-runs update rather than duplicate.
- Send Business Central sales orders to ShipBob for fulfillment with addresses, line items, and the selected shipping method.
- Write carrier, tracking number, and shipped status back onto Business Central sales orders from ShipBob order.shipped and tracking webhooks.
- Sync ShipBob on-hand and available inventory per fulfillment center into Business Central item inventory on a schedule.
- Bring ShipBob fulfillment invoices into Business Central as purchase invoices, with retries and a full audit trail on every record.
Questions
- Which direction does data move between Microsoft Dynamics 365 Business Central and ShipBob?
- It moves both ways. Items and sales orders flow from Business Central into ShipBob, while shipment tracking, on-hand inventory, and fulfillment invoices flow from ShipBob back into Business Central. ShipBob inventory and billing are read as sources, so ml-connector does not write stock counts or charges back into ShipBob.
- How does the integration handle ShipBob's expiring tokens and channel header?
- ShipBob OAuth access tokens last one hour and refresh tokens last thirty days and rotate on each use, so ml-connector runs the refresh flow and stores the new refresh token every time. It also attaches the required shipbob_channel_id header to every call, which ShipBob ignores on reads but requires on writes, keeping the request code uniform.
- How are Business Central change notifications and ShipBob webhooks processed?
- Business Central notifications signal that a record changed but carry no data, so ml-connector fetches the sales order or item after each notification and renews the three-day subscription on a cron before it expires. ShipBob webhooks are verified by recomputing the HMAC-SHA256 signature over the webhook id, timestamp, and raw body before the event is trusted.
Related integrations
More Microsoft Dynamics 365 Business Central integrations
Other systems that connect to ShipBob
Connect Microsoft Dynamics 365 Business Central and ShipBob
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started