Short answer
Business Central ships with a Microsoft-built Shopify Connector that syncs products, inventory, customers, orders, fulfillments, transactions, and payouts, so start there. Go custom — on Business Central's API v2.0 with Microsoft Entra ID OAuth — only for processes the connector can't model. Custom integrations must plan for per-user API limits (5 concurrent requests, 6,000 requests per 5-minute window), webhook subscriptions that expire after three days unless renewed, and the absence of a built-in external-ID upsert, which makes your own idempotency layer mandatory.
Business Central integration surface at a glance (documented by the vendor; see sources)
- Native connector
- Microsoft's Shopify Connector syncs products, inventory, customers, orders, fulfillments, transactions, and payouts.
- API
- Business Central API v2.0 (OData v4 REST) under api.businesscentral.dynamics.com/v2.0/{tenant}/{environment}/api/v2.0/.
- Authentication
- Microsoft Entra ID OAuth 2.0; service-to-service apps use the client credentials flow.
- Rate limits (per user)
- 5 concurrent OData requests, 95 queued, 100 connections; 6,000 requests per 5-minute sliding window. Excess returns HTTP 429.
- Webhooks
- Subscriptions via api/v2.0/subscriptions; handshake with validationToken; expire after three days unless renewed with PATCH.
- Notification batching
- Waits 30 seconds after the first change; over 1,000 changes in that window send one 'collection' notification.
- Shopify Orders
- Shopify Connector or service Map
- Business Central Sales orders
Dynamics 365 Business Central is a common next step for US and international merchants who outgrow QuickBooks, and it has an unusual advantage: Microsoft builds the Shopify integration itself. That changes the usual question from “which connector?” to “how far does the built-in connector go, and what do we do about the rest?” As on every page, documented marks statements from Microsoft or Shopify documentation, and recommendation marks our guidance.
Start with the built-in Shopify Connector
Documented: Microsoft’s Shopify Connector for Business Central synchronizes products, inventory, customers, orders, fulfillments, transactions, and payouts. Each shop has its own setup, a company can connect more than one Shopify store, and recurring synchronizations can run through the job queue. Orders are imported into Business Central sales documents, and shipments are synced back to Shopify, which marks the order fulfilled.
Documented: for inventory, Business Central is the source of truth. You enable inventory sync per Shopify location and choose a stock calculation method — Microsoft lists Projected Available Balance at Today and Free Inventory (not reserved) as the standard methods.
Documented: payouts are synced with a dedicated action, and Shopify payment gateways are mapped to Business Central payment methods (the mapping record is created automatically when orders are imported).
Recommendation: run the connector’s setup in a sandbox with a Shopify development store first, then decide what’s missing. Most gaps can be closed by extending the connector in AL (Business Central’s language) rather than replacing it, which keeps you on Microsoft’s upgrade path.
When a custom integration makes sense
Recommendation: consider custom code — either an extension to the connector or a separate service on the API — when you have:
- a 3PL or WMS between Shopify and Business Central that must own fulfillment,
- multiple ERPs or companies fed from one Shopify store with intercompany rules,
- complex bundles or configurable products that the connector’s item model can’t represent,
- B2B flows (pricing agreements, credit checks, approval steps) beyond what the connector maps.
Compare trade-offs in custom integration vs. off-the-shelf connectors.
The Business Central API for custom work
Documented: Business Central exposes a REST API (API v2.0, OData v4) under https://api.businesscentral.dynamics.com/v2.0/{tenant}/{environment}/api/v2.0/, scoped to a company — for example companies({id})/salesOrders. Authentication uses Microsoft Entra ID OAuth 2.0; unattended integrations use service-to-service authentication with the OAuth client credentials flow, after the Entra application is registered in Business Central and granted permissions.
Recommendation: create a dedicated Entra application per integration with the narrowest permission set that works, and prefer certificate credentials to client secrets for production. A separate identity per integration also makes the per-user API limits below work in your favor.
POST https://api.businesscentral.dynamics.com/v2.0/{tenant}/Production/api/v2.0/companies({companyId})/salesOrders
Authorization: Bearer {entra_access_token}
Content-Type: application/json
{
"externalDocumentNumber": "SHOP-US-5551234",
"customerNumber": "WEB-US",
"orderDate": "2026-10-27"
}
Illustrative only. Add lines through the salesOrderLines navigation, and confirm field names against the API reference for your version and any extensions installed.
Avoiding duplicate orders
Documented (Shopify): Shopify webhooks can be delivered more than once.
Recommendation: Business Central’s standard API has no built-in “upsert by external key” for sales orders, so idempotency is your job:
- Put the Shopify order ID in a stable reference such as
externalDocumentNumber(with a per-store prefix). - Keep your own table of processed Shopify events and created Business Central IDs; check it before every create.
- After a timeout, query sales orders filtered on that reference before retrying.
- Use the record’s ETag (
If-Match) for updates so you never overwrite a newer change.
The general technique is in preventing duplicate orders.
Webhooks from Business Central
Documented: external systems subscribe to entity changes through the api/v2.0/subscriptions endpoint. When a subscription is created, Business Central calls the notificationUrl with a validationToken query parameter, and your endpoint must return the token in the response body with status 200. Subscriptions expire after three days unless renewed with a PATCH, and each renewal repeats the handshake. Business Central waits 30 seconds after the first change to an entity before notifying, so several quick changes produce one notification; if more than 1,000 records change in that window, it sends a single collection notification that you resolve by querying with a modified-since filter.
Recommendation: run a scheduled job that renews every subscription well before expirationDateTime and alerts when a renewal fails. Treat notifications as “something changed” signals: fetch the current record, don’t trust a stale payload. Keep a reconciliation query as a safety net. See webhooks and webhooks vs. polling.
API limits
Documented: Microsoft documents per-user OData limits for Business Central online:
| Limit | Value | When exceeded |
|---|---|---|
| Concurrent requests | 5 | Further requests wait in a queue |
| Request queue size | 95 | HTTP 429 |
| Simultaneous connections | 100 | HTTP 429 |
| Rate | 6,000 requests per 5-minute sliding window | HTTP 429 |
| Time waiting in queue | 8 minutes | HTTP 503 |
Recommendation: limit your worker to a handful of parallel calls per identity, retry 429s with exponential backoff, and schedule large backfills off-hours. Because the limits are per user, a separate identity per integration keeps a catalog backfill from throttling order imports.
Inventory, fulfillment, and money
Recommendation:
- Inventory: publish available-to-sell per location; map each Shopify location to a Business Central location explicitly. Reconcile daily.
- Fulfillment: post the warehouse shipment in Business Central, then send fulfillment and tracking (UPS, FedEx, USPS) to Shopify so the customer is notified.
- Sales tax: let Shopify or your tax engine calculate tax at checkout and post the calculated amounts, rather than recalculating in Business Central — confirm the approach with your tax advisor for each state where you have nexus. See sales tax in ERP integrations.
- Payouts: reconcile Shopify Payments payouts as net deposits with fees, refunds, and adjustments booked separately. The connector’s payout sync is the starting point; see how we approach payouts in the QuickBooks Online page.
Common pitfalls
- Rebuilding what the connector already does instead of extending it.
- Expired webhook subscriptions after three days with nobody noticing.
- Duplicate sales orders because there’s no upsert and no idempotency layer.
- One shared identity for every integration, so one job’s backlog throttles all the others.
- Testing in a sandbox against production Shopify and assuming outbound syncs work — they’re blocked there.
Frequently asked questions
Does Business Central have a native Shopify integration?
Yes. Microsoft builds and documents a Shopify Connector for Business Central. According to Microsoft, it synchronizes products, inventory, customers, orders, fulfillments, transactions, and payouts, supports multiple shops per company, and can run synchronizations on a schedule through the job queue.
When should I build a custom integration instead of using the Shopify Connector?
When a process can't be expressed through the connector's settings and extension points — for example a third-party warehouse in the middle, complex bundle explosion, or unusual B2B pricing. Many partners extend the connector with AL code instead of replacing it. Compare the options in our custom vs. off-the-shelf connector comparison.
Why do my Business Central webhook notifications stop arriving?
Subscriptions expire after three days unless renewed. Renew them with a PATCH to the subscription before expirationDateTime, and remember that each renewal repeats the validationToken handshake, so your endpoint must still answer it.
What are Business Central's API limits for integrations?
Microsoft documents per-user limits for OData requests in Business Central online — 5 concurrent requests with up to 95 queued, 100 simultaneous connections, and 6,000 requests in a 5-minute sliding window. Exceeding the rate or connection limits returns HTTP 429; requests that wait in the queue for more than 8 minutes time out with 503.
Can I test the Shopify Connector in a Business Central sandbox?
Partly. Microsoft documents that a sandbox connected to a production Shopify store can import products, images, customers, and orders, but can't send items, prices, inventory, customers, or fulfillments back to Shopify. Use a Shopify development store for end-to-end tests.
Sources and further reading
Platform-specific statements on this page were checked against these sources on . Vendor APIs change; confirm details in the current documentation before you build.
- [1] Shopify Connector overview — Microsoft Learn
- [2] Getting started with the connector for Shopify — Microsoft Learn
- [3] Synchronize transactions and payouts — Microsoft Learn
- [4] Synchronize inventory with Shopify — Microsoft Learn
- [5] Working with webhooks (API v2.0) — Microsoft Learn
- [6] Operational limits for Business Central online — Microsoft Learn
- [7] Using service-to-service authentication — Microsoft Learn
- [8] Shopify webhooks — Shopify
Related reading
- Platforms Shopify ERP Integration How Shopify connects to an ERP — the GraphQL Admin API, webhooks, inventory states, fulfillment orders, rate limits — plus the sync patterns and pitfalls that matter.
- ERP integrations Shopify NetSuite Integration: Architecture, APIs, and Pitfalls How to integrate Shopify with Oracle NetSuite — REST web services, OAuth 2.0, external-ID upserts, concurrency limits, order and inventory flows, and connector options.
- Comparisons Custom ERP Integration vs. Off-the-Shelf Connectors Compare building a custom ecommerce-ERP integration with buying a prebuilt connector — fit, cost over time, flexibility, support, and the questions to ask vendors.
- Guides How to Prevent Duplicate Orders in an ERP Integration Why ecommerce integrations create duplicate ERP orders — duplicate webhooks, retries after timeouts, races — and the layered defenses that stop them.
- Concepts What Are Webhooks? What webhooks are, how they deliver change notifications between systems, how to verify them, and the delivery behaviors integrations must be designed around.
- Tools ERP Integration Cost Estimator Estimate relative complexity and an illustrative effort range for your project.