Naar de inhoud
SyncMyShop

Kennisbank

Welke voorraad toon je in je webshop: fysiek, beschikbaar of gereserveerd?

Toon de beschikbare voorraad: wat er fysiek ligt, min wat al gereserveerd is voor open orders, min wat niet verkocht mag worden, op de locaties die webshoporders mogen leveren. Van 60 stuks op de plank blijven er in het voorbeeld op deze pagina 32 over voor de webshop.

Bijgewerkt op

Het korte antwoord

De webshop toont de beschikbare voorraad. De fysieke voorraad is te hoog, want daarin zitten ook de stuks die al verkocht zijn en nog op de plank liggen. Het verschil is geen afronding. Voor artikel KB-2210 ziet het er zo uit:

fysiek, drie locaties samen        60
in de winkel, verzendt niet        -8
in de keuring na retour            -6
gereserveerd voor open orders      -9
veiligheidsvoorraad                -5
beschikbaar voor de webshop        32

Wie het getal 60 naar de webshop stuurt, biedt 28 stuks aan die niet geleverd kunnen worden. Dat blijkt niet op de dag zelf. Het blijkt bij de order die het 33e stuk verkoopt.

Van 60 stuks fysiek naar 32 stuks beschikbaar voor de webshop Artikel KB-2210 heeft 60 stuks fysieke voorraad. Daarvan liggen er 8 in de winkel en 6 in de keuring, zijn er 9 gereserveerd voor open orders en blijven er 5 achter als veiligheidsvoorraad. Er zijn 32 stuks beschikbaar voor de webshop. Na een order van 12 stuks zijn dat er 20. Fysieke voorraad van artikel KB-2210, drie locaties samen 60 Beschikbaar 32 Gereserveerd 9 Buffer 5 Winkel 8 Keuring 6 Naar de webshop 32 Na een order van 12 stuks 60 Beschikbaar 20 Gereserveerd 21 Buffer 5 Winkel 8 Keuring 6 Naar de webshop 20 60 - 8 in de winkel - 6 in de keuring - 9 gereserveerd - 5 veiligheidsvoorraad (buffer) = 32. De fysieke voorraad blijft 60 tot de order van 12 stuks het magazijn verlaat.
De fysieke voorraad blijft 60. Wat de webshop mag tonen daalt van 32 naar 20 zodra de order van 12 stuks is gereserveerd.

Drie keuzes bepalen het getal: welke standen van de voorraad je aftrekt, welke locaties meetellen en hoeveel je achterhoudt. De rest van deze pagina loopt ze langs. Het geheel van de stroom staat op voorraad en beschikbaarheid koppelen.

Zes standen van dezelfde voorraad

Een ERP of magazijnsysteem houdt per artikel meer dan één getal bij. De namen verschillen per pakket, de standen zijn overal dezelfde zes.

Stand Wat het is In het voorbeeld Telt mee voor de webshop
Fysiek Alles wat er ligt 60 Nee, te hoog
Gereserveerd Verkocht, nog niet verzonden 9 Nee
Geblokkeerd Beschadigd, in keuring, in quarantaine 6 Nee
Veiligheidsvoorraad Bewust achtergehouden buffer 5 Nee
Beschikbaar Fysiek min de drie hierboven 32 Ja
Verwacht Op een open inkooporder, met datum 120 op 14 oktober Apart, met de datum

Daarnaast bestaat de backorder: verkocht zonder dat er voorraad was. Dat is een negatief getal aan de beschikbare kant. Een artikel met 0 fysiek en 6 stuks in backorder heeft een beschikbare voorraad van min 6, en van de 120 die op 14 oktober binnenkomen zijn er dan 114 nieuw te verkopen.

Nul is ook geen enkelvoudige stand. Een artikel kan op 0 staan en volgende week weer binnenkomen, op 0 staan en uit het assortiment gaan, of ontbreken in het bestand van vandaag. De webshop toont voor die drie hetzelfde getal en heeft drie verschillende teksten nodig. Hoe dat voor leveranciersbestanden wordt vastgelegd staat bij voorraad van je leverancier koppelen.

Hoe systemen deze standen noemen

Beschikbare voorraad heet in veel magazijnsystemen vrije voorraad. Deze veldnamen zijn op 3 oktober 2026 nagelezen in de documentatie van Shopify, Picqer en Exact Online. Voor Picqer gaat het om de lijst stock in het product, voor Exact Online om ItemWarehouses.

Stand Shopify Picqer Exact Online
Fysiek on_hand stock CurrentStock
Gereserveerd voor orders committed reserved PlannedStockOut
Beschikbaar available freestock FreeStock, in de functie StockPosition
Geblokkeerd damaged, quality_control, reserved Geen veld in deze lijst Geen veld in deze lijst
Veiligheidsvoorraad safety_stock Geen veld in deze lijst SafetyStock
Verwacht incoming Via inkooporders PlannedStockIn

Shopify legt de som vast in de documentatie over voorraadstanden: on_hand is de optelling van available, committed, reserved, damaged, safety_stock en quality_control. Voor het magazijn in het voorbeeld is dat 32 + 9 + 0 + 0 + 5 + 0 = 46.

Picqer geeft de standen per magazijn terug. Dit is het magazijn uit het voorbeeld in de vorm van de Picqer API:

{
  "productcode": "KB-2210",
  "stock": [
    {
      "idwarehouse": 18,
      "stock": 46,
      "reserved": 9,
      "reservedbackorders": 0,
      "reservedpicklists": 9,
      "reservedallocations": 0,
      "freestock": 37
    }
  ]
}

freestock is 46 min 9 is 37. De veiligheidsvoorraad van 5 zit daar niet in. Die trekt de koppeling er zelf af: 37 min 5 is 32.

Drie benamingen leveren in de praktijk fouten op:

  • reserved betekent in Shopify iets anders dan in Picqer. In Picqer is het voorraad voor open orders. In Shopify is het voorraad die tijdelijk apart staat, en heet voorraad voor open orders committed.
  • ReservedStock in Exact Online is niet de reservering voor alle open orders. Exact omschrijft het veld als het aantal in een back-to-back-order dat al is ontvangen en nog niet is uitgeleverd. Wat nog uitgeleverd moet worden op verkooporders staat in PlannedStockOut. CurrentStock is volgens de documentatie inclusief de voorraad die aan verkooporders is toegezegd.
  • ProjectedStock in Exact Online rekent alle geplande mutaties mee, ook de inkooporder van 120 stuks die nog moet binnenkomen. Wie dat veld naar de webshop stuurt, verkoopt voorraad die er nog niet is, zonder leverdatum erbij.

WooCommerce heeft één getal per product: stock_quantity, met daarnaast stock_status (instock, outofstock of onbackorder) en de instelling backorders (no, notify of yes). Er zijn geen standen. De koppeling rekent dus aan de bronkant uit wat beschikbaar is en schrijft alleen de uitkomst weg. Schrijft hij CurrentStock of on_hand naar stock_quantity, dan staat de fysieke voorraad in de webshop.

Welke locaties tellen mee?

Voorraad is een getal per locatie. De 60 stuks uit het voorbeeld liggen op drie plekken:

Locatie Fysiek Levert webshoporders Telt mee
Magazijn 46 Ja 46
Winkel 8 Nee 0
Retourlocatie, in keuring 6 Nee 0
Totaal 60 46

Een koppeling die het totaal per artikel opvraagt, krijgt 60. Een koppeling die per locatie opvraagt en alleen de locaties optelt die leveren, krijgt 46. Het verschil van 14 stuks ontstaat zonder dat er een fout in de gegevens zit: beide getallen kloppen, ze beantwoorden een andere vraag.

De keuze is per locatie en per kanaal. Een winkel die bestellingen klaarzet voor afhalen telt mee voor de webshop en niet voor een marktplaats waarvoor alleen het magazijn verzendt. Een extern fulfilmentmagazijn telt mee voor het kanaal dat het bedient. Een retourlocatie telt nergens mee tot de keuring klaar is en de stuks zijn teruggeboekt naar het magazijn.

Shopify houdt voorraad per locatie bij en Picqer per magazijn, in de lijst stock hierboven. In Exact Online is het een regel per artikel en magazijn in ItemWarehouses. De vraag welke locaties leveren staat in geen van die systemen als veld. Het is een afspraak die in de koppeling wordt vastgelegd. De uitwerking staat bij voorraad uit meerdere magazijnen.

Wat er misgaat tussen twee rondes

Ook met het juiste getal loopt de webshop achter op het magazijn. Hoeveel, hangt af van hoe vaak de koppeling de voorraad ophaalt en in welke volgorde hij orders en voorraad verwerkt.

Een voorbeeld met een ronde van elke 15 minuten. De webshop toont 32. Om 10:02 bestelt een klant 12 stuks en verlaagt de webshop zijn eigen teller naar 20. Om 10:05 loopt de voorraadronde. De order van 10:02 staat op dat moment nog niet in het ERP, dus het ERP meldt 32 beschikbaar en de koppeling schrijft 32 terug. Tot de ronde van 10:20 biedt de webshop 12 stuks te veel aan.

Er zijn twee manieren om dat te voorkomen, en een koppeling gebruikt er minstens één:

  • Eerst orders, dan voorraad. De ronde stuurt openstaande orders naar het ERP en haalt daarna de voorraad op. Het ERP heeft de 12 stuks dan al gereserveerd en meldt 20.
  • Orders onderweg aftrekken. De koppeling weet welke orders hij nog niet heeft afgeleverd en trekt die van het antwoord af: 32 min 12 is 20.

Wat overblijft is de verkoop via andere kanalen binnen één ronde: de winkel, een marktplaats, de binnendienst. Daarvoor dient de veiligheidsvoorraad. Een buffer per kanaal is gebruikelijk, bijvoorbeeld de webshop op beschikbaar min 5 en een marktplaats op beschikbaar min 7. Hoe vaak een ronde moet lopen staat in realtime of batch. Wat er gebeurt als twee klanten binnen dezelfde ronde het laatste stuk bestellen staat in twee klanten, het laatste exemplaar.

Een buffer verlaagt ook het getal waarbij het artikel als uitverkocht wordt getoond. Bij een buffer van 5 en 5 stuks beschikbaar staat er 0 in de webshop terwijl er 5 liggen. Voor een artikel waarvan er 3 per maand verkocht worden is dat 5 stuks die nooit online te koop zijn. De buffer wordt daarom per artikelgroep of per artikel ingesteld, niet als één getal voor het hele assortiment.

Verwachte voorraad is een getal met een datum

De 120 stuks op de inkooporder zijn geen voorraad en ze zijn wel informatie voor de klant. Een webshop die alleen 0 toont, verliest de order van een klant die best tot 14 oktober wil wachten. Een webshop die 120 toont zonder datum, belooft levering uit voorraad.

De koppeling stuurt daarom twee velden: het aantal beschikbaar (0) en de verwachte leverdatum (14 oktober). In Shopify is incoming een eigen stand naast available; in Exact Online is het PlannedStockIn. De datum zelf staat op de inkooporderregel, niet bij de voorraad, en moet daar apart worden opgehaald. Staat er meer dan één inkooporder open, dan telt de eerste datum waarop genoeg binnenkomt om de openstaande backorders te dekken. Hoe dat in de webshop terechtkomt staat bij backorders en verwachte leverdatum.

Wat betekent dit voor je koppeling?

Wij leggen bij de bouw per artikelgroep vast welke standen worden afgetrokken, welke locaties meetellen voor welk kanaal en hoe groot de buffer is. De koppeling rekent het beschikbare getal uit aan de bronkant en schrijft alleen dat naar de webshop. Een dry run vóór de livegang zet het berekende getal naast wat er nu in de webshop staat, per artikel, zodat de verschillen zichtbaar zijn voordat er iets wordt overschreven.

Daarna draaien en bewaken wij de koppeling. In het dashboard zie je per ronde welke voorraad is gewijzigd, van welk getal naar welk getal. De opzet van de hele stroom staat op voorraad en beschikbaarheid koppelen. Vertel welke systemen en locaties je hebt, dan hoor je welk getal elk systeem levert en wat er nog afgetrokken moet worden.

Veelgestelde vragen

Wat is het verschil tussen fysieke en beschikbare voorraad?

Fysieke voorraad is alles wat er ligt, ook wat al verkocht is en op verzending wacht. Beschikbare voorraad is wat een nieuwe klant nog kan kopen: fysiek min gereserveerd, min geblokkeerd, min een eventuele buffer. Shopify noemt de twee on_hand en available, Picqer stock en freestock.

Wat is gereserveerde voorraad?

Voorraad die bij een order hoort die nog niet is verzonden. De stuks liggen op de plank en tellen mee in de fysieke voorraad, en ze zijn niet meer te koop. Een order van 12 stuks verlaagt de beschikbare voorraad direct met 12; de fysieke voorraad daalt pas als het pakket het magazijn verlaat.

Moet ik de voorraad van mijn winkel meetellen in de webshop?

Alleen als de winkel webshoporders verzendt of klaarzet voor afhalen. Tel je de winkel mee zonder dat hij verzendt, dan verkoop je online stuks die het magazijn niet kan leveren. De keuze wordt per locatie vastgelegd, en per verkoopkanaal kan hij anders zijn. Meer hierover bij meerdere magazijnen.

Hoe groot moet de veiligheidsvoorraad zijn?

Groot genoeg voor wat er tussen twee rondes van de koppeling via andere kanalen verkocht wordt. Verkoop je van een artikel 4 stuks per uur in de winkel en loopt de ronde elk kwartier, dan is dat 1 stuk per ronde en dekt een buffer van 2 ook een drukke ronde. Voor artikelen die traag lopen is 0 een normale waarde.

Kan ik voorraad verkopen die nog onderweg is?

Ja, als de webshop de leverdatum erbij toont. Verwachte voorraad komt uit open inkooporders en heeft een datum. De koppeling stuurt het aantal en de datum als aparte velden mee, zodat de webshop 0 op voorraad toont met de tekst verwacht op 14 oktober. Zie levertijd synchroniseren.

Waarom springt de voorraad in mijn webshop terug na een bestelling?

De webshop verlaagt zijn eigen teller bij de bestelling. Schrijft de koppeling daarna de beschikbare voorraad uit het ERP naar de webshop terwijl de order daar nog niet is aangekomen, dan staat het oude, hogere getal er weer. De koppeling trekt daarom orders die nog onderweg zijn af, of verwerkt eerst de orders en dan de voorraad.

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