Naar de inhoud
SyncMyShop

Shopify en Business Central

Shopify Business Central koppeling

Voorraad per locatie, prijzen en staffels gaan van Business Central naar Shopify; orders, klanten en bedrijven komen terug, en elke zending wordt een fulfilment met trackingnummer. Gebouwd op jouw Shopify-abonnement en jouw Business Central, en daarna door ons gedraaid en bewaakt.

Wat je tussen Shopify en Business Central koppelt

Business Central is de bron voor artikelen, voorraad, prijzen en de boekhouding. Shopify verkoopt en vangt de order. De koppeling verbindt zes stromen.

Stroom Richting Shopify, GraphQL Admin API Business Central
Artikelen en varianten naar Shopify productSet items, itemVariants
Voorraad per locatie naar Shopify inventorySetQuantities query per locatie, als webservice
Prijzen, staffels, catalogi naar Shopify prijslijst per catalogus unitPrice, prijslijsten als webservice
Orders naar Business Central webhook orders/create, daarna de order salesOrders met regels
Klanten en bedrijven naar Business Central klant, of bedrijf met locatie customers
Zendingen naar Shopify fulfillmentCreate salesShipments

Drie van die stromen raken een gat in de standaard-API v2.0 van Business Central: voorraad per locatie, prijslijsten en het trackingnummer van een zending. Die komen uit een pagina of query die in Business Central als OData-webservice wordt gepubliceerd. De systeemkant staat op Business Central koppeling, de shopkant op Shopify koppeling.

Welk systeem is leidend, per gegeven

Gegeven Leidend Richting Gedrag
Artikelnummer, omschrijving, variantcode Business Central naar Shopify gewijzigde artikelen, op lastModifiedDateTime
Producttekst, afbeeldingen, collecties Shopify of het PIM blijft in Shopify de koppeling schrijft er niet overheen
Voorraad per Shopify-locatie Business Central, per locatie naar Shopify available, met de laatst bekende stand als controle
Prijs en compare-at-prijs Business Central naar Shopify per variant, inclusief of exclusief btw zoals de shop rekent
Staffels en B2B-prijzen Business Central naar Shopify per catalogus, nachtelijk
Order Shopify tot de import, daarna Business Central naar Business Central één keer, met name als sleutel
Debiteur, boekingsgroepen Business Central match op nummer, dan e-mail nieuwe klant via een sjabloon
Bedrijf en bedrijfslocatie (B2B) Business Central naar Shopify debiteur wordt bedrijf
Zending, vervoerder, trackingnummer Business Central of het WMS naar Shopify per fulfilment order

Bij B2B draait de richting voor klanten om: de debiteur bestaat al in Business Central en wordt in Shopify een bedrijf met een bedrijfslocatie. Een webklant zonder account gaat de andere kant op.

Wat Shopify en Business Central anders bewaren

Voorraad: één totaal tegenover locaties

item.inventory in de API van Business Central is één alleen-lezen getal over alle locaties. Shopify houdt voorraad per locatie en per toestand bij, en heeft 10 locaties op Basic, Grow en Advanced en 200 op Plus. De koppeling leest het aantal per locatie uit een query die je als webservice publiceert, telt de Business Central-locaties op die bij één Shopify-locatie horen, en laat locaties weg die niet voor de webshop tellen, zoals een retourlocatie.

Welk getal het wordt, is een keuze. Fysiek op voorraad, of fysiek min wat al aan verkooporders is toegewezen. Het tweede voorkomt dat een order die in Business Central al gereserveerd is, in Shopify nog een keer verkocht wordt. Zie welke voorraad toon je in je webshop.

Variantcode tegenover opties

In Business Central is een variant een code van maximaal 10 tekens, zoals BL-M. Shopify kent per product maximaal 3 opties en 2.048 varianten, met per optie een waarde: Kleur Blauw, Maat M. De koppeling splitst de variantcode met een vertaaltabel in optiewaarden. Een artikel met vier eigenschappen past niet in drie opties; de vierde wordt een metafield of een apart product. Zie varianten.

Btw op de order, tot op de cent

Rekent de shop inclusief btw en staat de debiteur in Business Central op exclusief, dan moet er omgerekend worden. pricesIncludeTax op een verkooporder in de API is alleen-lezen en volgt de klant. De koppeling rekent de regel dus om.

De rekensom. Shopify: 5 stuks van 108,30 inclusief is 541,50. Stuurt de koppeling een stukprijs van 89,50 exclusief, dan rekent Business Central 5 x 89,50 = 447,50 plus 21% btw = 541,475, afgerond 541,48. Twee cent verschil, en de betaling van 541,50 sluit niet meer aan op de factuur. De koppeling stuurt daarom de stukprijs met de decimalen die Business Central voor stukprijzen toestaat, 108,30 / 1,21 = 89,50413, en controleert het ordertotaal voordat de order wordt aangeboden. Zie bedragen en btw mappen.

{
  "externalDocumentNumber": "#1042",
  "customerNumber": "D00412",
  "salesOrderLines": [
    { "lineType": "Item", "lineObjectNumber": "10482",
      "itemVariantId": "5f3c...", "quantity": 5, "unitPrice": 89.50413 }
  ]
}

Klanten, bedrijven en boekingsgroepen

Shopify levert een klant met een e-mailadres, of bij B2B een bedrijf met een of meer bedrijfslocaties. Business Central wil een debiteur met een klantboekingsgroep, een btw-bedrijfsboekingsgroep en een algemene bedrijfsboekingsgroep. De customers-resource van de API heeft daar geen velden voor; een sjabloon op de pagina API Setup vult ze bij het aanmaken. Een Belgische zakelijke klant met verlegde btw hoort in een andere groep dan een Nederlandse particulier. De koppeling bepaalt dat op land en btw-nummer en zet de klant via een eigen API-pagina in de juiste groep. Zie verplichte velden die de bron niet heeft.

De technische werkelijkheid van deze combinatie

Limiet Shopify Business Central online
Verzoeken 100 punten per seconde, 1.000 op Plus 6.000 per 5 minuten per gebruiker, 5 tegelijk
Boven de grens THROTTLED 429
Per aanroep 250 regels in een lijst 20.000 records per pagina, $batch van 100
Wijziging melden webhook, 8 pogingen in 4 uur webhook, abonnement verloopt na 3 dagen
Versies elk kwartaal, 12 maanden ondersteund maandelijkse updates online

Voorraad, doorgerekend. 8.000 SKU's, twee Shopify-locaties: 16.000 standen. inventorySetQuantities neemt 250 standen per aanroep, dus 16.000 / 250 = 64 aanroepen. Uit Business Central is het één query: 16.000 regels passen in één pagina van 20.000. Na de eerste ronde gaan alleen gewijzigde standen mee. Elke aanroep naar Shopify draagt een @idempotent-sleutel, verplicht vanaf API-versie 2026-04, zodat een herhaalde poging na een time-out de stand niet twee keer wijzigt.

Orders, doorgerekend. 600 orders op een drukke dag, met per order een klantcontrole en één salesOrders-verzoek met de regels erin: 1.200 verzoeken op een dag, tegen 6.000 per 5 minuten. De limiet van Business Central speelt hier geen rol; de doorlooptijd wel, want elke order wacht op de webhook en de import.

Zendingen komen niet via een webhook. salesShipments staat niet op de lijst met entiteiten die een webhook ondersteunen en heeft geen veld voor trackingnummer of vervoerder. De koppeling vraagt nieuwe zendingen op met een filter op lastModifiedDateTime, leest het trackingnummer uit een webservice en boekt de fulfilment. De naam van de vervoerder in trackingInfo.company moet exact overeenkomen met Shopify's lijst, anders krijgt de klant geen werkende trackinglink.

Een zending uit Business Central als fulfilment in Shopify, verdeeld over twee locaties De koppeling haalt nieuwe zendingen op uit Business Central en leest het trackingnummer uit een gepubliceerde webservice. In Shopify staat order #1042 verdeeld over twee fulfilment orders, 2 stuks uit het magazijn en 3 uit de winkel. De koppeling boekt één fulfilment met beide fulfilment orders en het trackingnummer. Business Central ERP Koppeling bij ons Shopify webshop GET salesShipments, gewijzigd na 10:00 zending 102231, order #1042, 5 stuks GET webservice: trackingnummer 3SABCD1234567, PostNL fulfillmentOrders van #1042 magazijn 2 stuks, winkel 3 stuks fulfillmentCreate, 2 orders fulfillment, klant gemaild Business Central heeft één regel van 5. Shopify verwacht de zending per fulfilment order, dus de koppeling verdeelt de 5 over de twee locaties.
Business Central boekt één regel van 5; Shopify verwacht de zending per locatie. De koppeling verdeelt de regel over de fulfilment orders.

Shopify-versies vervallen na 12 maanden. Shopify ondersteunt een versie 12 maanden. Een koppeling die op een vervallen versie blijft, krijgt antwoord van de oudste versie die nog bestaat, zonder foutmelding over velden die zijn verdwenen. Wij zetten de koppeling over voordat een versie vervalt. De doorvoer voor je eigen aantallen reken je uit met doorvoer berekenen.

Wat een standaardkoppeling hier niet doet

Microsoft levert de Shopify Connector mee met Business Central online. De documentatie van Microsoft noemt zelf deze grenzen:

  • Geen staffels. Prijzen worden berekend met een tijdelijke offerte voor een hoeveelheid van 1. Prijzen of kortingen per hoeveelheid gaan niet mee.
  • Alleen online. Niet voor Business Central on-premises.
  • Gesplitste regels. Een Shopify-orderregel die over twee locaties is verdeeld, wordt in Business Central één regel met één locatie. Worden alle stuks tegelijk verzonden, dan wordt de order in Shopify niet als verzonden gemarkeerd. Orders met twee regels voor hetzelfde product worden niet verzonden gemeld.
  • Btw opnieuw berekend. De btw uit de Shopify-order wordt bij het maken van de verkooporder in Business Central opnieuw berekend.
  • Op een schema. Orders, voorraad en prijzen lopen via taken in de job queue; voor voorraad noemt Microsoft elke 15 tot 30 minuten.
  • Vaste API-versie. De Shopify Connector van 2026 release wave 1 gebruikt Shopify-API 2026-01, bereikbaar tot 31 december 2026. Wie Business Central niet bijwerkt, verliest dan de synchronisatie.

Een gebouwde koppeling heeft die vaste punten niet: staffels per catalogus, de verdeling over fulfilment orders, de btw-controle en het tempo worden ingericht op jouw winkel en jouw Business Central. Andere combinaties met Business Central: Magento Business Central koppeling en WooCommerce Business Central koppeling.

Als het misgaat

Wat er misgaat Wat de koppeling doet Wat je ziet
Shopify geeft THROTTLED wacht tot er punten zijn, gaat door niets
Business Central antwoordt 429 order wacht in de wachtrij, nieuwe poging met langere pauze niets, tenzij het aanhoudt
Ordertotaal wijkt af van Shopify order wordt vastgehouden order, beide totalen en het verschil
SKU bestaat niet in Business Central die order wordt vastgehouden order en SKU
CHANGE_FROM_QUANTITY_STALE stand opnieuw lezen, open orders verrekenen, opnieuw schrijven een regel in het logboek
Vervoerder onbekend bij Shopify fulfilment met trackingnummer en URL de vervoerder
Webhook-abonnement in Business Central verlopen opnieuw aangemaakt, gemiste wijzigingen op datum opgehaald een regel in het logboek

Een order die blijft falen, bewaart de koppeling met de oorspronkelijke inhoud en biedt hij opnieuw aan zodra de oorzaak is opgelost. name is de sleutel, dus een herhaling maakt geen tweede verkooporder. Een controleronde vergelijkt de Shopify-orders van de laatste dagen met externalDocumentNumber in Business Central.

Voor livegang draait de koppeling als dry run: hij leest beide kanten en laat per variant en per locatie zien welke voorraad en prijs hij zou schrijven, zonder te schrijven. Zie dry run en goedkeuring. Andere systemen achter Shopify: Shopify AFAS koppeling en Shopify Exact Online koppeling. Alle stromen staan op koppelingen. Vertel welk Shopify-abonnement en welke Business Central je hebt.

Veelgestelde vragen

Waarom niet de Shopify Connector van Microsoft?

De koppeling van Microsoft heeft vaste grenzen die Microsoft zelf beschrijft. Hij rekent prijzen uit voor een hoeveelheid van 1, dus staffels gaan niet mee. Hij draait alleen op Business Central online, op een vast schema in de job queue. En een orderregel die in Shopify over twee locaties is verdeeld, wordt in Business Central één regel, waarna de fulfilment niet terugkomt.

Werkt de koppeling ook met Business Central on-premises?

Ja. De API v2.0 bestaat ook on-premises; de beheerder zet hem aan, en het adres bevat je eigen server en serverinstance. De Shopify Connector van Microsoft werkt alleen online. Voor de koppeling maakt het verder weinig uit: de stromen en de mapping zijn dezelfde.

Heb ik Shopify Plus nodig voor B2B-prijzen uit Business Central?

Niet per se. B2B zit ook op Basic, Grow en Advanced, met 3 actieve catalogi. Heeft Business Central meer klantprijsgroepen, dan kiest de koppeling welke drie niveaus de shop krijgt. Een eigen catalogus per bedrijf kan alleen op Plus. Zie klantspecifieke prijzen.

Welk ordernummer staat er in Business Central?

Het Shopify-ordernummer zoals de klant het ziet, het veld name, bijvoorbeeld #1042. Dat gaat naar externalDocumentNumber op de verkooporder, een veld van 35 tekens. Shopify zegt zelf dat name niet uniek is over meerdere winkels; met twee Shopify-winkels krijgt elk nummer een voorvoegsel per winkel.

Kan de koppeling orders ouder dan 60 dagen ophalen?

Alleen met het extra recht read_all_orders, dat bij Shopify wordt aangevraagd. Voor een lopende koppeling is 60 dagen genoeg. Bij de overstap naar Business Central, als de historie mee moet, is het wel nodig.

Wat gebeurt er als de koppeling een paar uur uitvalt?

Shopify probeert een webhook tot 8 keer in 4 uur. Daarna haalt de controleronde alle orders op die sinds de laatste geslaagde ronde zijn gewijzigd. Zendingen en voorraad uit Business Central wachten in de wachtrij. Er gaat niets verloren; het komt later binnen.

Vertel wat je nodig hebt

Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.

  • Je weet de prijs en de doorlooptijd voordat je iets toezegt
  • Wij zoeken uit welke koppeling het werk uit handen neemt
  • Wij verzorgen de bouw, hosting, bewaking en het onderhoud
  • Je team krijgt minder overtypwerk en minder uitzoekwerk

Leveranciers, producten, orders per dag, een ruwe schatting is prima.

Of mail direct: carsten@syncmyshop.com