Microsoft Dynamics 365 Business Central and Shopify integration
Microsoft Dynamics 365 Business Central runs finance, inventory, and sales accounting. Shopify runs the online store, taking orders and collecting payments. Connecting the two records online sales in the ledger and keeps the storefront catalog in step with the ERP. Shopify orders become Business Central sales invoices and customers, Shopify payouts reconcile against those invoices, and Business Central item and stock changes flow back to the Shopify product catalog. ml-connector handles the very different APIs on each side and moves the data on a cadence you control.
What moves between them
The main flow runs from Shopify into Business Central. When an order is placed and paid, ml-connector creates or matches the Shopify customer in Business Central and writes the order as a sales invoice with line items mapped to the right items and GL accounts, then posts it. Shopify Payments payouts and refunds are read and applied as customer payment journal lines so the ledger reconciles to the bank deposit. In the reverse direction, Business Central item and inventory changes are written to the Shopify product catalog so prices and stock on the storefront match the ERP. Orders sync near real time on webhooks; payouts and catalog updates run on a schedule.
How ml-connector handles it
ml-connector stores both credential sets encrypted: the Business Central tenant id, client id, secret, and environment name for the Entra ID token, and the Shopify store subdomain and offline access token. Each Shopify webhook is verified by recomputing the HMAC-SHA256 of the raw body with the client secret and rejecting a bad signature with 401, never 200, and the delivery id is stored so a redelivered event is skipped. Shopify orders carry no GL accounts, so the connector maps each line to a Business Central item and revenue account and resolves the customer by email before posting the draft invoice with the Microsoft.NAV.post action. Business Central subscriptions are renewed on a cron before the three-day expiry, and because a notification carries no data the changed item is fetched and pushed to Shopify. Both sides throttle: Business Central returns 429 and Shopify returns 429 or a GraphQL THROTTLED cost error, so calls back off and retry. A Shopify product GID is stored on the Business Central record so re-running an order is an idempotent upsert rather than a duplicate.
A real-world example
A direct-to-consumer apparel brand with around 60 employees sells through a Shopify storefront and runs Microsoft Dynamics 365 Business Central for finance and inventory. Before the integration, an accountant exported Shopify order and payout reports each week and keyed sales totals and fees into Business Central by hand, while the warehouse maintained stock counts in two places that drifted apart. With Shopify and Business Central connected, every paid order posts as a sales invoice against the correct revenue accounts, payouts reconcile to the deposits automatically, and item and stock changes in the ERP flow to the storefront. Close is faster, the books match the bank, and the catalog stays accurate.
What you can do
- Create and post Shopify orders as Business Central sales invoices against the correct items and GL accounts.
- Match or create Shopify customers in Business Central by email so sales land on the right account.
- Apply Shopify Payments payouts and refunds as customer payment journal lines that reconcile to the bank.
- Push Business Central item, price, and inventory changes back to the Shopify product catalog.
- Verify Shopify HMAC webhooks, renew Business Central subscriptions before expiry, and retry on throttling.
Questions
- Which direction does data move between Microsoft Dynamics 365 Business Central and Shopify?
- Most data moves from Shopify into Business Central: orders become sales invoices, customers are matched or created, and payouts post as payment journal lines. Item, price, and inventory updates move the other way, from Business Central to the Shopify catalog. Shopify has no general ledger, so all accounting postings happen on the Business Central side.
- How are Shopify orders turned into accounting entries when Shopify has no chart of accounts?
- Shopify is an e-commerce platform, not an accounting system, so it carries no GL accounts. ml-connector maps each order line to a Business Central item and revenue account and resolves the customer by email, then creates the sales invoice as a draft and posts it with the Microsoft.NAV.post bound action. Tax and fees are mapped to the matching Business Central accounts during this step.
- How does the integration stay reliable across Shopify webhooks and Business Central subscriptions?
- Shopify webhooks are verified by HMAC-SHA256 over the raw body and deduplicated by the delivery id, so a redelivered event is processed once. Business Central push subscriptions expire after three days and carry no record data, so ml-connector renews them on a schedule and fetches the changed resource after each notification. Both APIs return HTTP 429 when throttled, and the connector backs off and retries rather than dropping work.
Related integrations
More Microsoft Dynamics 365 Business Central integrations
Other systems that connect to Shopify
Connect Microsoft Dynamics 365 Business Central and Shopify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started