# Shopify Business Central integration

*Shopify → Business Central*

**In short:** A Shopify to Business Central integration turns each paid Shopify order into a sales order or posted sales invoice in Dynamics 365 Business Central, matched to the right customer and item numbers, coded with the correct VAT posting groups, and reconciled against the Shopify Payments payout. In the other direction it keeps stock levels, prices, and fulfilment status in sync. Done properly it is not a nightly CSV or the native connector left unattended: it is an idempotent, delta-based pipeline that keeps ERP and storefront aligned without anyone re-keying orders.

## What a Shopify to Business Central integration actually does

Shopify is where the sale happens: the order, the customer, the discount, the tax collected, the refund three days later, the Shopify Payments payout next week. Business Central is where the business is actually run: customers as debtors, items with stock and cost, sales documents that post to the general ledger, VAT that has to be right for the advance return.

Between those two sits a surprising amount of logic. A Shopify to Business Central integration moves each order into the ERP as a proper sales document - matched to the correct customer and item numbers, coded with the right VAT posting groups, in the right currency - and keeps stock, prices, and fulfilment status flowing back. Done well, nobody re-keys an order, and Business Central always reflects what the storefront did.

## What data moves

| Shopify object / event | Becomes in Business Central | Notes |
| --- | --- | --- |
| Paid order | Sales Order or posted Sales Invoice | Document type, number series, and posting rules agreed per process |
| Order line item | Sales line | Matched by variant SKU to Item No. / Variant Code / unit of measure |
| Checkout customer | Customer card (debtor) | Deduplicated by email; guest checkouts handled without junk debtors |
| Tax lines | VAT posting group setup | Mapped to VAT Bus. / Prod. posting groups, not a bare percentage |
| Refund | Sales Credit Memo | Reverses the original items, accounts, and VAT, dated to the refund |
| Shopify Payments payout | Payment reconciliation / bank entry | Net payout matched to gross orders plus fees against a clearing account |
| Item stock (reverse) | Sync from Item availability to Shopify | Available quantity pushed back so the storefront does not oversell |
| Fulfilment (reverse) | Shipment / tracking to Shopify | Posted shipment marks the Shopify order fulfilled with tracking |

The exact SKU map, customer rules, posting groups, and clearing accounts are agreed once with your finance and operations teams and encoded in the pipeline. After that, nobody maps them by hand.

## The details that break naive syncs

A nightly export or an unattended connector gets you most of the way and leaves the expensive part on your desk:

- **SKU matching.** A Shopify variant SKU has to resolve to a Business Central Item No. and, where you use them, a Variant Code and unit of measure. Missing SKUs, duplicated SKUs, and bundles that are one Shopify product but several BC lines are where naive syncs quietly post to the wrong item or fail the whole order.
- **Customer deduplication.** Guest checkouts, inconsistent email casing, and repeat buyers must not each spawn a new debtor. You need one customer card per real customer - or a controlled one-time-customer pattern - not a ledger full of duplicates.
- **VAT posting groups, not percentages.** Business Central posts VAT through the combination of VAT business and product posting groups, not a raw rate off the order. Domestic, EU OSS distance sales, EU B2B reverse-charge, and third-country exports each map to different posting setups. Get it wrong and the advance VAT return is wrong.
- **Payout is not revenue.** Shopify Payments settles net of fees, days later, batched across many orders. The sale and the settlement are separate postings joined through a bank or clearing account, reconciled in the payment reconciliation journal so the bank statement balances.
- **Currency.** Shopify presentment currency, Business Central local currency, and the exchange rate on the posting date have to agree, with rounding that reconciles rather than leaving cent differences.
- **Number series and gaps.** Business Central expects clean, gap-free posted document numbering. A retried order that half-posted, or two workers racing the same order, must never produce a gap or a duplicate.
- **Ordering and partial failure.** A refund can arrive before its order has synced; one bad line should not block a whole batch. Events have to be ordered and isolated so a single failure is retried, not left to corrupt the rest.
- **API throttling.** Both sides rate-limit. Shopify uses a cost-based GraphQL and REST budget; Business Central throttles OData and returns 429s under load. The pipeline has to back off, page, and use delta cursors and webhooks rather than re-pulling everything each run.

## How we build and run it

We treat this as a pipeline, not a scheduled job. Shopify order, refund, and payout events are pulled by webhook or on a schedule, validated, matched to Business Central customers and items, and written into the ERP as your agreed sales documents through the Business Central API - with stock, prices, and fulfilment flowing back to Shopify.

The pipeline is idempotent: every Shopify event carries a stable identifier, so a retry or a re-run never posts a duplicate order or opens a number-series gap. It runs on cloud-native, fully EU-hosted AWS infrastructure, so order and customer data never leaves the EU, which keeps your DPA / AVV and GDPR position clean.

And then we keep it running. Monitoring, alerting, incident response, and - critically - watching for Shopify API version changes and Business Central endpoint or throttling changes are our responsibility under contract. Orders keep flowing whether or not anyone is thinking about the integration.

## When this integration is worth building

If you run a single store at one VAT rate with a handful of orders a day, the native Microsoft Shopify Connector or even a periodic manual push is genuinely fine, and we will tell you so. A managed pipeline earns its place when volume climbs, when you sell across markets and currencies, when SKU, bundle, and dimension logic gets specific, when payout reconciliation becomes a monthly chore, or when a wrong VAT posting group or a duplicated order in Business Central is a problem your finance team cannot afford to keep cleaning up by hand.

## Frequently asked questions

### Doesn't Business Central already ship with a native Shopify connector?

It does, and for a single-store, single-currency, domestic-VAT setup the Microsoft Shopify Connector extension is a reasonable starting point. It gets harder to rely on once you have multiple stores or markets, custom item and dimension logic, payout reconciliation, or strict posting requirements your finance team will not compromise on. We often build around or on top of the connector rather than replacing it - the point is that someone owns the result, monitors it, and fixes it when an API changes.

### Do Shopify orders become sales orders or posted invoices in Business Central?

Whichever your process needs. Some clients want each paid order as a Sales Order that a warehouse user releases and ships; others want a straight-through posted Sales Invoice for digital or pre-fulfilled goods. We agree the document flow, the number series, and the posting rules with your finance and operations teams up front so Business Central stays clean and auditable.

### How do you match Shopify products to Business Central items?

The Shopify variant SKU is mapped to the Business Central Item No. and, where you use them, Variant Code and unit of measure. We handle the awkward cases up front: missing or duplicate SKUs, bundles that are one Shopify product but several BC item lines, and items that exist in one system but not the other. Unmatched lines are flagged rather than silently dropped or posted to a wrong account.

### How is the Shopify Payments payout handled in the ERP?

The sale and the money arriving are separate events. Orders post revenue and VAT at the point of sale; the Shopify Payments payout - net of fees, days later, batched across many orders - is reconciled against a bank or clearing account so the payment reconciliation journal in Business Central balances to the cent. Provider fees are booked as expense. This is the part manual syncs almost always get wrong.

### Who operates it after go-live?

We do. The pipeline runs on cloud-native, fully EU-hosted infrastructure that we monitor. If Shopify changes its API version or Business Central throttles or updates an endpoint, that is our problem to fix under contract, not something your team discovers when orders stop flowing. You get a named owner, alerting, and an SLA rather than a scheduled job nobody is watching.

## Common errors

- [Shopify: Exceeded 2 calls per second for api client](https://seamless.engineering/errors/shopify-exceeded-2-calls-per-second/)

## Related integrations

- [Shopify ↔ weclapp](https://seamless.engineering/integrations/shopify-weclapp/): Shopify weclapp integration
- [Shopify ↔ NetSuite](https://seamless.engineering/integrations/shopify-netsuite/): Shopify NetSuite integration
- [Shopify ↔ SAP Business One](https://seamless.engineering/integrations/shopify-sap-business-one/): Shopify SAP Business One integration
- [Shopify ↔ DATEV](https://seamless.engineering/integrations/shopify-datev/): Shopify DATEV integration
- [Shopify ↔ lexoffice](https://seamless.engineering/integrations/shopify-lexoffice/): Shopify lexoffice integration
- [Shopify ↔ sevDesk](https://seamless.engineering/integrations/shopify-sevdesk/): Shopify sevDesk integration

## Browse by system

- [All Shopify integrations](https://seamless.engineering/integrations/shopify/)
- [All Dynamics 365 integrations](https://seamless.engineering/integrations/dynamics-365/)
- [Shopify API changelog](https://seamless.engineering/api-changelog/shopify/): 9 breaking changes and 2 deprecations in the last 90 days

## Request a scoping call

Need this integration built and permanently operated? Tell us which systems connect and what data has to move. Fixed-price scoping quote within 48 hours.

- Email: hello@seamless.engineering
- Contact form: https://seamless.engineering/#contact
