Naar de inhoud
SyncMyShop

Koppelingen

Voorraad en beschikbaarheid: je webshop toont wat je echt kunt leveren

Het getal in je webshop is de vrije voorraad van de locaties die meetellen, min reserveringen en buffer, met een verwachte leverdatum als het nul is. Wij bouwen de koppeling die dat getal uit je WMS, je ERP en de bestanden van je leveranciers haalt, en draaien en bewaken hem daarna.

Welke voorraad telt mee?

Voordat er een getal naar de webshop gaat, staat vast welke voorraad meetelt. Met één magazijn is dat één getal. Met een magazijn, een winkel, een retourlocatie en een leverancier die uit eigen voorraad levert zijn het vier getallen. Bij elk hoort een besluit: telt het mee voor de webshop, en mag een weborder ervan worden uitgeleverd?

Het geval dat het vaakst misgaat: 100 stuks in het magazijn en 10 in de winkel. De koppeling telt de locaties op en zet 110 in de webshop. De 10 in de winkel liggen in het schap en zijn zaterdagmiddag voor de helft verkocht. Een order van 105 stuks wordt geaccepteerd en kan niet volledig uit.

De regel ligt daarom vast per locatie:

Locatie Bron Telt mee voor de webshop Levert weborders uit
Magazijn Zwolle WMS ja ja
Winkel Utrecht kassasysteem nee nee
Retourlocatie WMS nee, eerst controle nee
Leverancier A CSV via SFTP alleen als de eigen voorraad nul is nee, levering loopt via Zwolle

Leidend voor voorraad is het systeem waarin de pakbon wordt afgeboekt: het WMS als dat er is, anders het ERP. De webshop is voor voorraad nooit leidend. Hij krijgt een getal en geeft orders terug. Past iemand de voorraad in het beheer van de webshop aan, dan staat die waarde er tot de volgende ronde.

In B2B komt er een vraag bij: mag deze voorraad voor deze order worden gebruikt? Voorraad die voor een project of een vaste afnemer apart ligt, staat fysiek in het rek en hoort niet in het getal dat andere klanten zien. De inrichting per locatie staat bij voorraad uit meerdere magazijnen, de afweging zelf in welke voorraad toon je in je webshop.

Fysiek, beschikbaar, gereserveerd, verwacht

"Op voorraad" bestaat uit meerdere getallen. Elk systeem splitst de voorraad in toestanden en geeft ze een eigen naam:

Toestand Picqer Exact Online Shopify
Fysiek aanwezig stock CurrentStock on_hand
Gereserveerd reserved ReservedStock committed
Vrij verkoopbaar freestock FreeStock available
Verwacht delivery_date op de inkooporder PlanningIn incoming

De namen lijken op elkaar, de indeling niet. Shopify telt binnen on_hand zes toestanden op: available, committed, reserved, damaged, safety_stock en quality_control. Picqer splitst reserved per magazijn uit naar picklijsten, backorders en allocaties. WooCommerce heeft één veld, stock_quantity, per product of variatie. Een koppeling die stock uit het ene systeem in available van het andere zet, verkoopt wat al aan een andere order is toegezegd.

Het getal voor de webshop is een som. Voor artikel 10482:

  • Magazijn Zwolle heeft 100 stuks fysiek, waarvan 12 gereserveerd voor open orders. Vrij: 88.
  • De buffer voor de webshop is 2. Naar de webshop gaat 100 min 12 min 2 is 86.
  • Winkel Utrecht (10 stuks) en de retourlocatie (4 stuks) tellen niet mee.

Alles optellen geeft 114. Het verschil met 86 is 28 stuks die de webshop aanbiedt en het magazijn niet kan leveren.

Van 114 stuks op drie locaties naar 86 stuks in de webshop Bovenste balk: alle locaties opgeteld, magazijn Zwolle 100, winkel Utrecht 10 en retourlocatie 4, samen 114. Onderste balk: alleen magazijn Zwolle telt mee. Van de 100 stuks zijn er 12 gereserveerd voor open orders en 2 buffer. Er gaan 86 stuks naar de webshop. Zonder regels: 114 naar de webshop 114 opgeteld Magazijn Zwolle 100 Winkel Utrecht 10 Retour 4 Met regels per locatie: 86 naar de webshop 100 in Zwolle Vrij, min buffer 86 Gereserveerd 12 Buffer 2
Dezelfde voorraad, twee uitkomsten: 114 als alles wordt opgeteld, 86 met een regel per locatie, min reserveringen en buffer.

Nul, uitlopend en onbekend

De meeste feeds brengen drie toestanden terug tot één getal: nul. Voor je klant en voor inkoop zijn het drie verschillende situaties.

Toestand Wat er aan de hand is Wat de webshop toont
Nul met een verwachte datum de inkooporder loopt, levering op 14 oktober "verwacht op 14 oktober", bestelbaar als nalevering
Nul en uitlopend het artikel wordt niet meer ingekocht niet bestelbaar, of een verwijzing naar de opvolger
Onbekend de bron heeft vandaag niets over dit artikel gemeld de laatste bekende stand, volgens de regel van die feed

WooCommerce heeft hier eigen velden voor: stock_status kent instock, outofstock en onbackorder, en backorders staat op no, notify of yes. Zet de koppeling die velden niet mee, dan staat een artikel dat over vier dagen binnenkomt als uitverkocht in de webshop. De uitwerking staat bij backorders.

Wat er precies over de lijn gaat

Geen zwarte doos. Dit zijn de velden van deze stroom, met een voorbeeld en de bron:

Veld Voorbeeld Bron
Sleutel: SKU of EAN 10482, 8712345678906 elke bron; zonder match komt de regel niet aan
Vrije voorraad per locatie 88 in Zwolle WMS of ERP
Leverbaarheid leverbaar, nalevering, uitlopend ERP
Levertijd 5 werkdagen leverancier of ERP
Verwachte leverdatum 14-10-2026, 240 stuks inkooporder of leveranciersbestand
Tijdstip van de stand 03-10-2026 09:42 de koppeling
Voorraad uit WMS, leverancier en winkel naar webshop en marktplaats Picqer levert voor artikel 10482 een vrije voorraad van 88 stuks in magazijn Zwolle. De koppeling trekt per kanaal een buffer af: 86 naar de webshop, 83 naar de marktplaats. Leverancier A levert 40 stuks en een verwachte datum, die pas meetellen als de eigen voorraad nul is. De 10 stuks in de winkel tellen niet mee. Picqer magazijn Zwolle Leverancier A voorraad.csv, SFTP Winkel Utrecht kassa: 10 stuks Koppeling regels per locatie en per kanaal Webshop Shopify Marktplaats buffer 5 freestock: 88 40 stuks, verwacht 14-10 telt niet mee available: 86 83 stuks Artikel 10482. De 40 stuks van leverancier A tellen pas mee als de eigen voorraad nul is. De winkelvoorraad blijft buiten het getal.
Drie bronnen, één getal per kanaal. De webshop krijgt 86, de marktplaats met een buffer van 5 krijgt 83.

Eén voorraadregel, nadat de regels zijn toegepast en voordat hij naar de webshop gaat:

{
  "sku": "10482",
  "ean": "8712345678906",
  "bron": "picqer",
  "locatie": "Magazijn Zwolle",
  "fysiek": 100,
  "gereserveerd": 12,
  "buffer": 2,
  "naar_webshop": 86,
  "verwacht": { "aantal": 240, "datum": "2026-10-14" },
  "stand_van": "2026-10-03T09:42:10+02:00"
}

De stroom loopt naar de webshop. De tegenrichting is de orderstroom: een order van 6 stuks wordt in het WMS een reservering, de vrije voorraad zakt van 88 naar 82 en de webshop krijgt 80. Tussen de order en dat nieuwe getal zit de tijd waarin een tweede kanaal hetzelfde stuk kan verkopen. Hoe orders teruglopen staat bij orders, klanten en verzending. Op welke sleutel je matcht staat in SKU of EAN.

Veiligheidsvoorraad en buffers

Een buffer is het aantal stuks dat een kanaal minder ziet dan er vrij is. Hij vangt drie dingen op: telfouten in het magazijn, retouren die nog niet zijn gecontroleerd, en de tijd tussen een verkoop op het ene kanaal en de bijgewerkte stand op het andere.

De buffer verschilt per kanaal, omdat de gevolgen verschillen. In het voorbeeld ziet de eigen webshop 2 stuks minder dan de vrije voorraad (86) en de marktplaats 5 minder (83). Een annulering op een marktplaats telt mee in je beoordeling als verkoper. Een vaste klant bel je op.

Naast de vaste buffer bestaat de drempelregel: alles onder een ingesteld aantal gaat als nul naar het kanaal. Bij een drempel van 3 en een vrije voorraad van 2 toont de webshop nul. Die regel hoort bij leveranciersvoorraad, waarvan je de stand een of twee keer per dag krijgt.

Een buffer die te ruim staat kost omzet. Twee stuks buffer op 4.000 artikelen is 8.000 stuks die geen kanaal te zien krijgt. De buffer staat daarom per artikelgroep of per omloopsnelheid en niet als één getal voor het hele assortiment: snellopers krijgen een buffer, een langzaam artikel met 1 stuk op voorraad niet. De keuzes staan bij veiligheidsvoorraad en buffers per kanaal en in veiligheidsvoorraad instellen.

Levertijd en leverdatum: het veld dat niemand meeneemt

Twee artikelen staan op nul. Het ene komt morgen binnen, het andere over zes weken. In de webshop staan ze allebei op "niet op voorraad", terwijl het eerste morgen leverbaar is.

De datum is er meestal wel. Hij staat in het bestand van de leverancier of op de inkooporder in het ERP. Standaardkoppelingen zetten een aantal over, en de verwachte datum hoort zelden bij hun vaste set velden.

Het zijn twee velden:

Veld Voorbeeld Waar het in Picqer staat
Levertijd, een duur 5 werkdagen deliverytime op het product, in dagen
Leverdatum, een datum 14-10-2026 delivery_date op de regel van de inkooporder

Van het ene naar het andere rekenen vraagt een werkdagenkalender. Een leverancier stuurt 5. Besteld op maandag 5 oktober 2026 is dat in werkdagen maandag 12 oktober, in kalenderdagen zaterdag 10 oktober en in weken maandag 9 november. Het bestand zegt niet welke van de drie het is. Dat leg je per leverancier één keer vast. Hetzelfde geldt voor de notatie: 03-04 is 3 april of 4 maart.

De klant ziet dan een datum die klopt met de inkooporder en die meeschuift als de leverancier hem verzet. Dat is uitgewerkt bij levertijd en leverdatum synchroniseren. Het verschil tussen de twee velden staat in levertijd of leverdatum.

Voorraad van je leverancier naast je eigen voorraad

Een leveranciersbestand vult gaten. Het overschrijft nooit de telling van wat in je eigen magazijn ligt. Die regel staat per bron en per veld: leverancier A levert voorraad en leverdatum aan voor artikelen waarvan de eigen voorraad nul is, en schrijft niets naar prijs of omschrijving.

Een bestand zoals het binnenkomt:

artikelnr;ean;voorraad;levertijd;verwacht
10482;8712345678906;40;5;
10483;8712345678913;>50;5;
10484;8712345678920;0;;14-10-2026
10485;8712345678937;ja;2 wkn;03-04

Vier regels, vijf afwijkingen. 5 heeft geen eenheid. >50 is geen getal: de koppeling leest het volgens een vaste regel als 50. ja zegt dat er voorraad is en niet hoeveel. 2 wkn is tekst. 03-04 is een datum zonder jaar en zonder vaste volgorde. Elke afwijking krijgt een regel. Een waarde die in geen regel past komt op de controlelijst en gaat niet stil mee.

Hebben twee leveranciers hetzelfde artikel, A met 40 stuks en B met 15, dan zijn er drie uitkomsten: A gaat voor en B telt pas mee als A nul heeft, de twee tellen op tot 55, of de leverancier met de laagste inkoopprijs gaat voor. Zonder keuze wint het bestand dat als laatste is ingelezen, en wisselt de webshop twee keer per dag tussen 40 en 15. De uitwerking staat bij voorraad van je leverancier koppelen en in CSV en Excel van leveranciers.

Wat er stil misgaat

De fouten in deze stroom geven geen foutmelding. De run slaagt en het getal is verkeerd.

De belangrijkste: een artikel ontbreekt vanochtend in het bestand. Betekent dat nul, of stond het niet in de export van vandaag? Wie ontbreken als nul leest, haalt een leverbaar artikel uit de verkoop. Wie het als onbekend leest, laat een oude stand staan. Dat is een regel per feed, en hij staat vast voordat de koppeling live gaat.

Wat er gebeurt Gevolg zonder regel Regel in de koppeling
Artikel ontbreekt in het bestand voorraad op nul, artikel uit de verkoop per feed vastgelegd, bijvoorbeeld pas na drie rondes op nul
De export van vandaag komt niet aan de stand van gisteren blijft staan en niemand merkt het controle op de leeftijd van het bestand, melding als het te oud is
Half bestand: 1.180 van 6.400 regels 5.220 artikelen op nul de run stopt als meer dan bijvoorbeeld 20% van de artikelen wijzigt
Kolom voorraad heet vandaag stock lege waarden, gelezen als nul de run stopt en meldt welk veld ontbreekt
SKU komt niet voor in de webshop de regel wordt overgeslagen de regel komt op de controlelijst
Twee kanalen verkopen het laatste stuk één order te veel buffer per kanaal, stand direct na de order door

De laatste rij in tijden: klant A bestelt om 10:02:10 het laatste stuk in de webshop. De marktplaats krijgt de nieuwe stand in de ronde van 10:05. Klant B bestelt daar om 10:03:40. Zonder buffer zijn er twee orders voor één stuk.

Doorvoer en limieten

Hoe actueel de webshop is, hangt af van hoe vaak de bron gelezen mag worden en hoeveel regels er per verzoek meekomen. Een rekenvoorbeeld met 8.000 artikelen in één magazijn, voorraad in Exact Online en een webshop op Shopify of WooCommerce.

Stap Per artikel Gebundeld
Alles lezen uit Exact Online 8.000 verzoeken: 133 minuten bij 60 per minuut, en meer dan het dagbudget van 5.000 sync/Inventory/StockPositions geeft 1.000 regels per verzoek: 8 verzoeken
Alleen wijzigingen lezen elk artikel opnieuw opvragen met de Timestamp van de vorige ronde: 300 wijzigingen in 1 verzoek
Schrijven naar Shopify 8.000 aanroepen inventorySetQuantities met 250 regels per aanroep: 32 aanroepen, of 2 voor 300 wijzigingen
Schrijven naar WooCommerce 8.000 verzoeken 100 producten per batch: 80 verzoeken, of 3 voor 300 wijzigingen

Een ronde elke 5 minuten is 12 rondes per uur en 288 per dag. Met één verzoek per ronde blijft er van het dagbudget van 5.000 nog 4.712 over voor orders en prijzen.

Het verschil met een vaste scansnelheid is groot. Er zijn koppelplatformen die voorraad nalopen met 10 producten per 5 minuten. Dat is 120 per uur. 8.000 artikelen kosten dan 66 uur en 40 minuten: bijna drie dagen voor één volledige ronde.

Waar de bron het aanbiedt, vervangt een webhook het rondvragen. Picqer stuurt products.free_stock_changed bij elke wijziging van de vrije voorraad, en Exact Online heeft een webhook op het onderwerp StockPositions. Een webhook kan uitblijven. Daarom loopt er een controleronde naast: 8.000 producten bij Picqer zijn 80 verzoeken van 100 resultaten, bij een limiet van 500 verzoeken per minuut.

De getallen zijn op 3 oktober 2026 nagelezen in de documentatie van Exact Online, Shopify en Picqer. De som voor je eigen aantallen maak je met doorvoer berekenen. Welke stroom per wijziging doorgaat en welke in een ronde, staat in realtime of batch.

Jij houdt de controle

Een voorraadkoppeling schrijft per dag duizenden waarden naar een webshop die op dat moment verkoopt. Vier dingen houden dat in de hand.

Dry run. De eerste run schrijft niets. Hij laat zien wat er zou veranderen: van 8.000 artikelen blijven er 7.412 gelijk, wijzigen er 561 en hebben er 27 geen match in de webshop. Die 27 los je eerst op.

Klein beginnen. De eerste echte run gaat over één artikelgroep, bijvoorbeeld 50 artikelen, zodat niet het hele assortiment in één keer wordt overschreven.

Goedkeuren of automatisch. Per leverancier stel je in of wijzigingen op goedkeuring wachten of direct doorgaan. Artikelen met een handmatige afspraak staan op een uitsluitingslijst. Een eigen levertijd zet je vast met een override.

Een overzicht per run. Na elke run staat er per artikel wat er is gewijzigd, van welke waarde naar welke, en waardoor:

run 03-10-2026 09:45   bron: picqer   561 wijzigingen
10482   voorraad   88 -> 82          order 20418, 6 stuks gereserveerd
10484   verwacht   14-10 -> 21-10    inkooporder verzet door leverancier
10491   voorraad   overgeslagen      staat op de uitsluitingslijst

Daarmee is een verschil te herleiden tot de oorzaak: een verkoop, een handmatige correctie, een retour, een inkoopontvangst of verbruik in productie. De onderdelen hebben elk een eigen pagina: dry run en goedkeuring, audit trail en monitoring.

Verdieping per onderwerp

Onderwerp Wat het regelt
Meerdere magazijnen per locatie: telt mee, levert uit, en in welke volgorde
Veiligheidsvoorraad buffer en drempel per kanaal en per artikelgroep
Levertijden en leverdatum een datum uit de inkooporder of het leveranciersbestand in de webshop
Backorders nul met een verwachte datum blijft bestelbaar
Bundels en samengestelde artikelen de voorraad van een set volgt het onderdeel dat het eerst op is
Leveranciersvoorraad bestanden van leveranciers naast je eigen telling

Een voorbeeld bij de bundels: een set bestaat uit 1 pomp en 2 koppelstukken. Er liggen 30 pompen en 86 koppelstukken. 86 gedeeld door 2 is 43 sets aan koppelstukken en er zijn 30 pompen: de set staat op 30. Wordt er één pomp los verkocht, dan staat de set op 29.

De voorraadstroom raakt twee andere stromen. Orders maken reserveringen, en in B2B gebeurt dat soms pas als de order is goedgekeurd en niet bij het afrekenen: zie reserveren bij goedkeuring. Wat een klant mag bestellen en tegen welke prijs loopt via prijzen en klantafspraken.

Systemen en platformen

Voorraad komt uit het systeem waarin de pakbon wordt afgeboekt en gaat naar elk kanaal waarop je verkoopt.

Vier verschillen die de opzet bepalen. Picqer geeft de vrije voorraad per magazijn (idwarehouse) en stuurt een webhook bij elke wijziging; bestanden van leveranciers leest het zelf niet in. Exact Online levert voorraadposities per magazijn, in de pakketten voor handel en productie. Shopify houdt voorraad bij per locatie en per toestand. WooCommerce heeft één getal per product of variatie, zonder locaties.

Het overzicht van alle vijf de stromen staat op koppelingen. Vertel welke systemen je voorraad bijhouden, dan hoor je langs welke route de standen eruit komen en welke ronde bij je aantallen haalbaar is.

Veelgestelde vragen

Hoe snel staat een voorraadwijziging in mijn webshop?

Dat bepaalt de bron. Stuurt het WMS of het ERP een webhook bij elke wijziging, dan gaat de nieuwe stand per wijziging door. Zonder webhook vraagt de koppeling de wijzigingen op in rondes, bijvoorbeeld elke 5 minuten voor snellopers en elk uur voor de rest. De grens is de limiet van de bron: Exact Online staat 60 verzoeken per minuut en 5.000 per dag toe.

Wat gebeurt er als twee klanten tegelijk het laatste exemplaar bestellen?

De order die het WMS of het ERP als eerste bereikt krijgt het stuk. De tweede wordt een nalevering met een datum, of je belt de klant: dat leg je vooraf vast. De kans erop wordt klein met een buffer per kanaal en doordat de nieuwe stand direct na de order doorgaat en niet wacht op de volgende ronde. Het hele verloop staat in twee klanten, het laatste exemplaar.

Stuurt de koppeling de fysieke of de vrije voorraad door?

De vrije voorraad: fysiek, min wat gereserveerd is voor open orders, min de buffer van het kanaal. Bij 100 stuks fysiek, 12 gereserveerd en een buffer van 2 gaan er 86 naar de webshop. Welke locaties in die som meetellen ligt per locatie vast.

Verwijdert de koppeling producten uit mijn webshop?

Nee. De voorraadstroom schrijft aantallen, leverbaarheid en datums, en verwijdert geen producten. Verdwijnt een artikel uit een bestand, dan bepaalt de regel van die feed wat er gebeurt: de stand blijft staan, gaat na een aantal rondes naar nul, of het product wordt onzichtbaar. Verwijderen gebeurt alleen als jij dat als regel hebt vastgelegd.

Kan mijn webshop blijven verkopen als de koppeling een uur stilligt?

Ja. De webshop houdt de laatste stand en neemt orders aan; die wachten in de wachtrij en gaan na herstel alsnog door. Het risico zit in wat er in dat uur op een ander kanaal is verkocht. Een artikel dat 4 keer per uur verkoopt, is met een buffer van 2 na een half uur door die buffer heen. Na herstel leest de koppeling de volledige stand opnieuw in.

Mag voorraad negatief worden?

In het ERP komt het voor: een levering is afgeboekt voordat de ontvangst is ingeboekt, en de stand is min 3. De webshop krijgt dan nul en de regel komt op de controlelijst, want een negatieve stand wijst op een boeking die nog moet gebeuren. Of een klant bij nul mag bestellen is een aparte instelling: de nalevering.

Kan ik per verkoopkanaal een andere voorraad tonen?

Ja. Elk kanaal heeft een eigen buffer en een eigen set locaties. De eigen webshop toont 86 en een marktplaats 83, uit dezelfde vrije voorraad van 88. Een deel van de voorraad apart houden voor één kanaal kan ook, bijvoorbeeld de laatste 5 stuks voor vaste klanten.

Werkt het ook met een Excel-lijst die mijn leverancier mailt?

Ja. Een bestand per e-mail, op SFTP of in een portaal is een bron, net als een API. De koppeling leest het in, controleert de kolommen en het aantal regels en past de regels van die leverancier toe. Komt het bestand niet of half aan, dan stopt de run en volgt er een melding. Meer hierover bij voorraad van je leverancier koppelen.

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