Features

Assemblage en BOM: zo bereken je de voorraad van elke bundel

Je verkoopt een koffiegeschenkdoos op bol.com. Daarin zitten een molen, twee zakken bonen, een houten kist en een gedrukte kaart. Alle vier die artikelen verkoop je ook los, verspreid over drie andere kanalen.

Hoeveel geschenkdozen kun je veilig aanbieden?

De meeste verkopers gokken. Ze kiezen een getal dat veilig voelt, zetten er 20 online en sturen bij als het misgaat. Dat werkt tot de dag waarop één component opraakt en vier listings tegelijk op nul vallen, precies op het kanaal waar beschikbaarheid je ranking bepaalt.

Een assemblage is een product dat alleen bestaat omdat andere producten bestaan. De voorraad is geen getal dat je opslaat. Het is een getal dat je continu berekent uit alles wat eronder ligt. Klopt die berekening niet, dan verkoop je te veel of laat je omzet liggen. Een derde uitkomst is er niet.

In dit artikel lees je hoe assemblages en een bill of materials echt werken in een multichannel e-commerce operatie: de rekenregels, de valkuilen waar niemand je voor waarschuwt, en hoe je het beheert zonder Excel.

Wat een assemblage en een BOM precies zijn

Een assemblage (ook wel bundel, kit of set genoemd) is een verkoopbare SKU die is opgebouwd uit andere SKU's. De bill of materials, kortweg BOM, is het recept: welke componenten erin gaan en hoeveel van elk per afgewerkte eenheid.

Onze koffiegeschenkdoos heeft een eenvoudige BOM van één niveau:

  • 1 × Molen (SKU GR-100)
  • 2 × Bonen 250g (SKU BN-250)
  • 1 × Houten kist (SKU BX-01)
  • 1 × Cadeaukaart (SKU CD-01)

Het sleutelwoord is per stuk. De BOM legt de verhouding vast, niet het totaal. Er gaan twee zakken bonen in elke doos, dus bonen verdwijnen twee keer zo snel uit je voorraad als molens. Precies die factor twee is waar handmatige berekeningen stilletjes op stuklopen.

BOM's met meerdere niveaus

Een component kan zelf ook een assemblage zijn. Als je SKU "Bonen 250g" in werkelijkheid bestaat uit bulkbonen plus een zak plus een etiket, heb je een BOM met meerdere niveaus: de geschenkdoos hangt af van een subassemblage, die weer afhangt van losse componenten.

De beschikbaarheid moet dan door alle niveaus omhoog doorrekenen. In de praktijk blijven de meeste e-commerce verkopers op één niveau, en dat is meestal verstandig. Voeg pas diepte toe als de subassemblage ook echt los verkocht wordt.

De kernformule: beschikbaarheid is een beperking

Dit is de berekening die er meer toe doet dan alle andere in dit artikel.

Bundel beschikbaar = MIN over alle componenten van AFRONDEN NAAR BENEDEN(component beschikbaar ÷ aantal per bundel)

Je bundelvoorraad wordt bepaald door het schaarste component. Niet door het gemiddelde, niet door het totaal, en niet door het component waar je als eerste aan dacht.

Met echte cijfers. Je hebt 40 molens en elke doos heeft er één nodig, dus molens laten 40 dozen toe. Je hebt 90 zakken bonen en elke doos heeft er twee nodig, dus bonen laten 45 dozen toe. Je hebt 25 houten kisten, goed voor 25 dozen. En je hebt 500 cadeaukaarten, goed voor 500 dozen.

MIN(40, 45, 25, 500) = 25 geschenkdozen.

Je hebt 500 kaarten en 40 molens, en niets daarvan doet ertoe. Vijfentwintig houten kisten begrenzen het hele verhaal. Had je er 40 online gezet op basis van het aantal molens, dan had je 15 stuks te veel verkocht. Op bol.com of Amazon betekent dat annuleringen, een lagere prestatiescore en een listing die niet meer scoort.

Let op het afronden naar beneden. Negentig zakken bonen gedeeld door twee is netjes 45, maar 91 zakken zijn nog steeds 45 dozen. Een halve bundel is geen verkoopbare eenheid, en naar boven afronden is precies hoe spookvoorraad je systeem binnenkomt.

Beschikbaar is niet hetzelfde als aanwezig

Nog een laag. Het getal dat je in die formule stopt mag nooit je ruwe fysieke voorraad zijn:

Component beschikbaar = fysiek aanwezig − gereserveerd − buffervoorraad

Gereserveerd zijn de stuks die al aan openstaande orders zijn toegewezen. Buffervoorraad is de veiligheidsmarge die je bewust per kanaal achterhoudt. Beide verlagen wat een assemblage kan claimen.

En hier zit de valkuil: buffervoorraad wordt vermenigvuldigd met het aantal in de BOM. Houd je 10 zakken bonen achter als buffer, dan haal je 5 geschenkdozen uit je beschikbaarheid, niet 10. Verkopers die buffers op componentniveau instellen en zich afvragen waarom hun bundelvoorraad harder daalt dan verwacht, ontmoeten meestal voor het eerst deze vermenigvuldiger.

Virtuele versus fysieke assemblage

Er zijn twee fundamenteel verschillende manieren om een assemblage te draaien. De verkeerde kiezen voor jouw fulfilment-opzet richt meer schade aan dan welke rekenfout dan ook.

Virtuele assemblage, samengesteld op bestelling

De bundel heeft geen eigen voorraad. Hij bestaat als definitie. Alle voorraad zit op componentniveau en de afboeking gebeurt op het moment dat de order binnenkomt:

Bij verkoop: per component, voorraad −= (aantal in BOM × bestelde stuks)

Je picker pakt de vier artikelen en verpakt ze bij het inpakken. De beschikbaarheid wordt live herberekend uit de componenten.

Dit is het juiste model als je vanuit je eigen magazijn verzendt, als je bundelsamenstelling per seizoen wisselt, of als je actiesets draait die zes weken bestaan. Je legt geen fysieke voorraad vast in een samenstelling waar je in november spijt van krijgt.

Fysieke assemblage, vooraf gebouwd

Je bouwt op dinsdag 30 geschenkdozen. De componenten verlaten de voorraad en de assemblage komt de voorraad binnen als eenheid met een eigen barcode en EAN:

Bij bouwen: componentvoorraad −= (aantal in BOM × gebouwd aantal), assemblagevoorraad += gebouwd aantal

Vanaf dat moment gedraagt de assemblage zich als elk gewoon product. De beschikbaarheid is een opgeslagen getal, geen berekend getal.

Dit is verplicht zodra een derde partij voor je uitlevert. De magazijnen van Amazon FBA en bol.com LVB assembleren niets. Ze picken wat op de stelling ligt. Wil je een geschenkdoos laten verzenden vanuit een fulfilmentcentrum, dan moet daar een fysieke geschenkdoos met eigen EAN liggen.

De keuze maken

Kies virtueel als je vanuit je eigen magazijn verzendt, als samenstellingen vaak wisselen en als je maximale flexibiliteit wilt in wat je aanbiedt. De voorraad blijft op componentniveau en niets zit vast in een set.

Kies fysiek als een fulfilmentpartner voor je verzendt, als de bundel in hoge volumes loopt en je de arbeid wilt bundelen, of als de set een eigen EAN nodig heeft voor een marketplace-listing.

Veel verkopers draaien beide tegelijk voor hetzelfde product: virtueel voor de eigen webshop en B2B-orders, fysiek voor de stuks die naar FBA of LVB gaan. Dat werkt prima, zolang je systeem begrijpt dat de vooraf gebouwde stuks niet meer beschikbaar zijn voor de virtuele bundel.

Het probleem van gedeelde componenten

Dit is het punt waarop een echt voorraadsysteem zich onderscheidt van een spreadsheet.

Voeg een tweede bundel toe. Een "Starterset" met 1 molen en 1 zak bonen. Beide bundels claimen nu dezelfde molens.

De geschenkdoos is 25 keer beschikbaar, begrensd door de houten kisten. De starterset is 40 keer beschikbaar, begrensd door de molens. En de molen zelf staat los aangeboden op drie kanalen, met 40 stuks.

Je adverteert dus 25 + 40 + 40 = 105 stuks aan vraag tegenover 40 fysieke molens.

Dat is niet automatisch overselling. De meeste van die listings zullen nooit allemaal uitverkopen. Maar het wordt overselling op het moment dat één verkoop niet overal wordt doorgerekend.

Elke componentmutatie moet elke assemblage die dat component gebruikt opnieuw berekenen, en het resultaat doorzetten naar elke gekoppelde listing.

Verkoop je één starterset, dan zakt de molen naar 39 en de bonen naar 89. De geschenkdoos blijft op 25 staan door de kisten, dus daar verandert niets. Verkoop je vijftien startersets, dan raakt de molenvoorraad 25. Nu wordt de geschenkdoos mede begrensd door molens, en de zestiende starterset verlaagt ook de beschikbaarheid van de geschenkdoos.

Dit handmatig bijhouden over vier kanalen is niet traag. Het is onmogelijk. De herberekening moet bij elke mutatie gebeuren, en het aantal mutaties stijgt met elk kanaal dat je toevoegt.

Eén component leeg, meerdere listings dood

De opgestapelde schade is de echte kostenpost. Als de houten kisten opraken, verlies je niet één listing. Je verliest de geschenkdoos op bol.com, op Amazon, in je Shopify-shop én in je B2B-portaal, allemaal binnen dezelfde minuut.

Op marketplaces is op nul staan geen pauze. Bol.com en Amazon gebruiken beschikbaarheid en leverbetrouwbaarheid als ranking-signaal. Een listing die uit voorraad raakt verliest positie, verliest het koopblok, en herstelt niet op het moment dat je bijvult. Je betaalt twee keer voor die onderbreking: één keer in gemiste verkopen, één keer in een tragere aanloop erna.

Een gedeeld component dat in vier bundels zit, is een single point of failure voor vijf listings. Behandel het ook zo.

Kostprijs van een assemblage

De kostprijs van een bundel is niets wat je zelf intikt. Die rolt omhoog:

Kostprijs assemblage = Σ (kostprijs component × aantal in BOM) + assemblagearbeid + verpakking

Voor de geschenkdoos: de molen kost € 18,50, de twee zakken bonen samen € 8,40, de houten kist € 3,10, de cadeaukaart € 0,25 en de assemblagearbeid € 1,50.

Totale kostprijs: € 31,75

Verkoop je hem voor € 59,95 op bol.com, met ongeveer 15% commissie (€ 8,99) en € 4,95 verzendkosten:

Marge = € 59,95 − € 31,75 − € 8,99 − € 4,95 = € 14,26, oftewel 23,8%

Stel nu dat je systeem de bundel op een inkoopprijs van € 0 heeft staan, omdat niemand ooit een "geschenkdoos" bij een leverancier heeft besteld. Je margerapport toont 74%. Je schaalt de bundel op, zet er advertenties achter, plaatst hem op je homepage, en je schaalt je minst winstgevende SKU in de overtuiging dat het je beste is.

Het wordt erger zodra componentprijzen bewegen. Een leverancier verhoogt de bonenprijs met 15% en elke bundel met bonen erin verliest ongemerkt marge. Rolt de kostprijs automatisch omhoog vanuit de BOM, dan zie je het dezelfde week. Zo niet, dan kom je er bij de jaarafsluiting achter.

Meerdere magazijnen: componenten moeten op dezelfde plek liggen

Beschikbaarheid is niet globaal. Die is per locatie.

Bundel beschikbaar (per magazijn) = MIN over componenten van AFRONDEN NAAR BENEDEN(beschikbaar in dat magazijn ÷ aantal in BOM)

Je bouwt geen geschenkdoos van een molen in Utrecht en een houten kist die bij je 3PL in Venlo ligt. Heeft je magazijn in Utrecht 40 molens en 0 kisten, terwijl de 3PL 0 molens en 25 kisten heeft, dan is je werkelijke bouwbare aantal nul, ook al zegt een simpele optelsom 25.

Dit weegt het zwaarst als je per kanaal vanuit verschillende locaties verkoopt: eigen magazijn voor de webshop, FBA voor Amazon, LVB voor bol.com. Elke fulfilmentroute heeft een eigen beschikbaarheidsberekening nodig, op basis van de componenten die fysiek op die locatie liggen.

Retouren, terugboeken en demonteren

Een geretourneerde bundel komt terug als één fysieke doos. Je hebt twee keuzes, en beide moeten worden vastgelegd.

Je kunt hem terugboeken als assemblage. De doos is intact en opnieuw verkoopbaar, dus de assemblagevoorraad stijgt met één. Dit geldt alleen bij fysieke assemblages.

Of je demonteert hem en boekt de componenten terug, wat neerkomt op componentvoorraad += aantal in BOM voor elke regel. De molen en de bonen zijn daarna weer los verkoopbaar, en elke bundel die ze gebruikt rekent naar boven bij.

De valkuil is dit fysiek wél doen en digitaal niet. Een geretourneerde geschenkdoos wordt opengemaakt, de bonen gaan terug de stelling in, niemand legt iets vast, en je bonentelling klopt voorgoed twee stuks niet. Herhaal dat een paar dozijn keer per jaar en je besteladviezen zijn op fictie gebouwd.

Elke beweging hoort in een mutatielogboek te landen dat je kunt filteren en herleiden. Als een telling zes weken later niet klopt, is dat logboek het verschil tussen de oorzaak in twee minuten vinden en het verschil afboeken.

Inkoop: bestel nooit op bundelniveau

Besteladviezen op basis van alleen bundelverkopen leiden altijd tot te weinig componenten. De vraag moet omlaag doorstromen via de BOM:

Vraag per component = losse verkopen + Σ (bundelverkopen × aantal in BOM)

Stel dat je 60 zakken bonen per maand los verkoopt, de geschenkdoos 20 keer (2 zakken per stuk) en de starterset 35 keer (1 zak per stuk):

60 + (20 × 2) + (35 × 1) = 135 zakken per maand

Voorspel je alleen op losse verkopen, dan bestel je voor 60 en sta je in week twee droog. Die stockout haalt vervolgens tegelijk de bonenlisting, de geschenkdoos en de starterset onderuit.

Tel daar de levertijd van je leverancier bij op en het risico wordt zichtbaar. Bij zes weken levertijd op bonen ligt je bestelpunt rond 135 ÷ 30 × 42 ≈ 189 zakken, plus veiligheidsvoorraad. Prognoses op componentniveau zijn hier geen luxe. Het is de enige variant die een bruikbaar getal oplevert.

Hoe Stockpilot dit oplost

Stockpilot beheert assemblages van begin tot eind, van BOM-definitie tot live listings op je marketplaces.

Leg de BOM vast. Onder Inventory > Bundles maak je een bundel aan en voeg je de componenten toe met een aantal per stuk. Die definitie is de enige bron van waarheid voor beschikbaarheid, kostprijsopbouw en voorraadmutaties.

Koppel de bundel aan listings. Een bundel koppel je op dezelfde manier aan verkoopkanaal-listings als een los artikel, over 100+ integraties waaronder bol.com, Amazon, Kaufland, Shopify, WooCommerce en Magento. Eenmaal gekoppeld houdt Stockpilot de voorraad van die listing actueel, elke keer dat een component in de bundel beweegt: verkocht, ontvangen, geteld of gecorrigeerd.

Automatische mutaties. Verkoop je een bundel, dan worden alle losse componenten direct afgeboekt in de verhouding uit de BOM. Geen handmatige correcties, geen nachtelijke batch, geen Excel-afstemming.

Buffervoorraad per kanaal. Stel een veiligheidsmarge per kanaal in en die werkt door in de componentbeschikbaarheid waarop elke bundelberekening draait. Zo eten agressieve marketplace-listings niet de voorraad op waar je webshop van afhankelijk is.

Meerdere magazijnen per kanaal. Voorraad in je eigen magazijn, bij een fulfilmentpartner en bij FBA of LVB zie je in één overzicht, met magazijntoewijzing per kanaal. De bundelbeschikbaarheid wordt berekend uit de componenten op de locatie die de order daadwerkelijk verstuurt.

Volledige mutatiehistorie. Elke voorraadwijziging wordt gelogd met wat er gebeurde, wanneer en waarom. Klopt een bundeltelling niet, dan herleid je het naar de mutatie in plaats van te gokken.

Inkoop op componentniveau. Inkooporders en besteladviezen draaien op je componenten, op basis van verkoopsnelheid over al je kanalen, inclusief de vraag die je bundels genereren.

B2B en magazijn. Bundels zijn bestelbaar via het B2B-portaal, en de pick-and-pack module met barcodescanning verzorgt de fysieke kant van het samenstellen.

De kern

Een assemblage is geen product met een voorraadstand. Het is een claim op andere producten, herberekend bij elke mutatie, begrensd door het schaarste component en gedupliceerd over elk kanaal waarop je hem aanbiedt.

Dat is eenvoudig op te schrijven en onmogelijk handmatig bij te houden voorbij een handvol SKU's. De fout is bovendien nooit spectaculair. Er gaat geen alarm af. Je verkoopt stilletjes te veel, bestelt stilletjes te weinig en verliest stilletjes positie op listings waarvan je dacht dat ze gezond waren.

Bundels zijn een van de meest winstgevende zetten in e-commerce. Ze verhogen je gemiddelde orderwaarde, laten trage voorraad doorstromen en creëren producten waar je concurrent niet op kan prijsvechten. Dat voordeel houdt alleen stand als de voorraadberekening eronder elke seconde van de dag klopt.

Leg je BOM goed vast, laat het systeem rekenen, en verkoop je bundel met vertrouwen.

Magazijnbeheer

Scan, pick en pack vanuit je magazijn

Magazijnoperaties simpel gemaakt. Scannen, picken, printen, klaar.

Voorraadbeheer

Synchroniseer voorraad op al je kanalen

Geen overselling meer. Geen spreadsheets meer. Eén voorraadtelling, overal gesynchroniseerd.

Purchase order management

Verwerk orders van leveranciers met gemak

Weet wat je moet bestellen, wanneer, en bij wie. Stop met tekorten. Stop met overstocking.

Ontdek wat Stockpilot voor
jouw business kan doen

In 45 minuten laten onze experts zien hoe je orders, voorraad en verzending vanuit één platform beheert. Voor webshops, marketplaces en alles daartussen.

Klantverhalen

Wat onze klanten zeggen

Stockpilot gaat verder dan alleen marktplaatsintegratie. Het heeft ons geholpen belangrijke bedrijfsprocessen te automatiseren en de persoonlijke ondersteuning maakt hen een geweldige partner.

Ferenc Leijs
Oprichter & CEO - e-Gadget

Dankzij Stockpilot’s B2B-portaal en kanaalbeheer hebben we onze volledige orderflow gestroomlijnd – alle bestellingen van elk kanaal worden nu automatisch doorgestuurd naar Amazon MCF, wat ons tijd en gedoe bespaart.

Chloé en Sebastiaan
Oprichters – Chiyu Kintsugi

Stockpilot maakte onze overgang naar B2C niet alleen mogelijk, maar ook succesvol. Hun team werkte nauw met ons samen om alles te integreren in onze bestaande opstelling, en nu is dit een belangrijk onderdeel van onze business geworden.

Fedde Huyghe
Algemeen directeur - Bike Butler

Stockpilot brengt alles samen. Verkoop, voorraad, verzending en boekhouding — het loopt allemaal via één systeem. Daardoor kunnen we ons richten op het laten groeien van het merk, zonder steeds bezig te zijn met het oplossen van de achterkant.

Mika en Sander
Oprichters - Rossberck

Voor Stockpilot werkte ik dagelijks met Excel om de voorraad op bol.com handmatig bij te houden. Nu wordt alles direct gesynchroniseerd met ValkAspos. Dat scheelt tijd en voorkomt fouten.

Gerard de Nijs
Winkeleigenaar - Top1Toys

Stockpilot hielp ons om onze Amazon MCF-flow te centraliseren en onze wereldwijde fulfilment te stroomlijnen. Het sluit naadloos aan op onze setup en geeft ons volledig inzicht. Terwijl we verder groeien, willen we meer automatiseren via het platform.

Zhao Yitian
CEO - KOM