Een B2C-shop toont één prijs, een winkelwagen en een knop om nu te betalen. B2B-verkoop draait om drie andere dingen: wat mag deze ingelogde debiteur zien, mag hij meteen bestellen of eerst een offerte vragen, en welke regels gelden er voordat die order mag bestaan. Zolang die drie in Excel of in de binnendienst zitten, is een catalogus met iDEAL geen webshop. Het is een etalage waarna iemand alsnog de echte prijs typt.
Accountprijzen horen bij de debiteur, niet bij het product
Nettoprijs per klantnummer is iets anders dan een kortingspercentage op de catalogus. Jij hebt met die afnemer een afspraak: artikel A kost 4,12, artikel B 11,80, en die bedragen staan in jouw prijslijst of in het ERP. De shop moet die regel ophalen bij inloggen, op de productpagina tonen en in de winkelwagen hetzelfde bedrag rekenen. Als die drie plekken niet dezelfde bron hebben, belt de inkoper omdat de bevestiging afwijkt van het scherm.
Groepsstaffels zijn een tussenlaag. Alle afnemers in "groothandel West" krijgen 18 procent, tot 500 stuks, daarna 22. Dat werkt tot het moment waarop één klant een eigen contract heeft dat de groep overschrijft. Dan heb je twee waarheden: de groep en de uitzondering. In een nette B2B-shop is de volgorde vastgelegd: eerst de debiteurprijs, dan de groep, dan de standaardcatalogus. Wie die volgorde in drie plugins of in een sheet houdt, krijgt discussie bij elke nieuwe SKU.
Prijzen verbergen tot iemand is ingelogd, hoort bij groothandel. Gastbezoekers zien het assortiment of alleen een aanvraagformulier, geen nettoprijs. Accountaanvragen keur jij goed, met KvK-nummer en een koppeling naar de debiteurkaart. Zonder die koppeling maakt de shop een tweede klant aan en leeft de prijsafspraak nergens. Dat is geen instelling in een thema. Dat is stamdata.
BTW-verlegging, betalingsconditie en een kredietlimiet zitten aan dezelfde kaart vast. Een buitenlandse afnemer met ICP ziet een andere regel dan een lokale horeca-afnemer op 14 dagen. De limiet mag de winkelwagen blokkeren voordat de order de magazijnlijst haalt, niet erna via een telefoontje. Zet die velden in het account, niet als vrije notitie op de order.
Staffel op volume is nog een laag bovenop de nettoprijs. Koopt de debiteur 200 stuks, dan zakt zijn contractprijs, of hij blijft op de afgesproken 4,12 omdat het volume al in het contract zit. Die keuze moet in de regel staan, niet in iemands hoofd. Mix je beide zonder document, dan rekent de shop volume-korting bovenop een al onderhandelde nettoprijs en verdwijn je onder de inkoop.
Offerte is een status, geen bijlage
Catalogusartikelen met een vaste nettoprijs mogen gewoon in de winkelwagen. Maatwerk, grote volumes of een artikel dat je niet publiek prijst, starten als aanvraag. De inkoper stelt een mandje samen, jij of je buitendienst zet een prijs, de klant accepteert, daarna ontstaat pas een order. Die tussentijdse status moet de shop kennen: concept, verzonden, geaccepteerd, verlopen, omgezet. Een PDF in de mail naast een shop die alleen "betaald" kent, is twee systemen.
Geldigheid en versie tellen mee. Een offerte van dertig dagen mag niet meer omgezet worden als de inkoopprijs is verschoven of de voorraad weg is. Wijzig jij de prijs, dan is dat een nieuwe versie, niet een stille edit op dezelfde PDF. Conversie naar order moet notities, staffels en de geldigheidsdatum meenemen. Verdwijnen die velden, dan is de offerte een los document en blijft Excel de waarheid.
Goedkeuring speelt aan twee kanten. Intern: de binnendienst mag niet elke korting zelf vastzetten als de eigenaar een drempel heeft. Bij de klant: de inkoper vult het mandje, de chef accordeert voordat jij mag leveren. Standaardshops kennen gast of account, niet twee rollen op één bedrijfsaccount. Zonder die rollen mailt iemand een screenshot en bel je alsnog heen en weer.
Hybride mandjes komen vaker voor dan een shop die alleen offerte of alleen checkout is. Tien SKU's hebben een nettoprijs en mogen direct. Twee artikelen zijn op aanvraag. De shop moet die twee uit de betaalflow halen en in dezelfde aanvraag parkeren, anders splitst de inkoper het werk over twee kanalen. Eén orderintentie en twee documenttypes is erger dan alleen Excel.
Bestellogica die een winkelwagen niet kent
Minimumafname en verpakkingseenheden zijn de eerste regels die een consumenten-checkout laat vallen. Doos van twaalf, laag van 48, of een minimale ordervaarde van 250 euro exclusief btw voor die debiteur. De shop moet dat afdwingen bij het toevoegen, niet bij het inpakken. Anders corrigeer je in het magazijn en factureer je iets anders dan de bevestiging.
Inkoopnummer van de klant hoort op de order, naast jouw eigen nummer. Factuur en pakbon moeten dat PO-nummer tonen, anders blijft de goederenontvangst bij de afnemer openstaan. Leverdata, deelleveringen en restorders horen in dezelfde staatmachine. "Gedeeltelijk geleverd, rest volgt" is geen notitie. Het is een status die voorraad, factuurmoment en het klantenportaal moet delen.
Leveren op rekening is geen extra betaalmethode. Het is een check: mag deze debiteur nog voor dit bedrag openzetten, en mag deze inkoper dat zelf doen. Mislukt die check, dan geen order, wel een duidelijke melding. iDEAL ernaast voor kleine bijbestellingen kan, maar de kernflow is niet "nu betalen". Wie de checkout ombouwt tot factuur met iDEAL als uitzondering, merkt dat elk veld dat de consumentenflow verwacht (betaalstatus, capture, refund) in de weg zit.
Herhaalbestelling vanuit de laatste order is dagelijkse praktijk in food, installatie en groothandel. De inkoper opent de vorige levering, past aantallen aan, en stuurt hem in. Dat lijkt triviaal tot prijzen of verpakkingen intussen zijn gewijzigd. Dan moet de shop de oude regels herrekenen of blokkeren, niet stilletjes de oude nettoprijs laten staan. Zonder die herberekening verkoop je op een prijslijst die niet meer bestaat.
Afkaptijd voor levering de volgende dag is bestellogica, geen verzendinstelling. Bestelling voor 14:00 uit het magazijn, daarna de dag erna. Combineer dat met deellevering en je hebt een belofte per regel, niet per orderkop. Standaardshops rekenen één verzenddatum op het mandje. Jouw magazijn denkt in regels, en de klant ook.
Wat je eerst bouwt, en wat het kost
Begin bij de prijsbron. Als Exact, een ERP of een eigen prijstabel leidend is, haalt de shop daar de nettoprijs vandaan en slaat hij hem niet nog eens in drie tabellen op. Als de shop leidend is, moet de boekhouding diezelfde regel ontvangen. Zonder die zin op papier bouw je accountprijzen die bij de eerste creditfactuur al niet meer kloppen. Koppelingen zijn dan geen latere fase. Ze bepalen hoe de prijsregel eruitziet.
Reken een eerste tranche met inloggen, debiteurkaart, nettoprijzen of groepsstaffels, en bestellen op rekening grofweg op 50 tot 90 uur. Bij 85 euro exclusief btw is dat 4.250 tot 7.650 euro, plus hosting. Offerte-naar-order, twee rollen per bedrijf en een PDF die dezelfde velden houdt, tillen dat naar 8.000 tot 15.000 euro. Verpakkingseenheden, deelleveringen, kredietlimiet en een prijskoppeling twee kanten op landen vaak tussen 15.000 en 25.000 euro. Dat is geen thema-installatie. Het is jouw verkoopproces in software.
Hosting en onderhoud horen in dezelfde rekensom. Een Laravel-shop op een eigen server zit vaak tussen 20 en 80 euro per maand, plus een paar uur per kwartaal voor PHP, backups en monitoring. Dat is lager dan een stapel B2B-apps op een SaaS-platform, hoger dan een thema dat je vergeet. De uren zitten in prijswijzigingen en nieuwe debiteurenregels, niet in het thema updaten.
Excel ernaast is het scherpste signaal. Past de uitzondering niet in de shop, dan past de shop niet bij de uitzondering. Eén sheet voor een zeldzame actie is te overzien. Een sheet voor prijzen, een voor offertes en een voor restorders is drie bronnen van waarheid. Op https://pimvdmolen.nl/webshop-of-excel-ontgroeid staat die knip scherper: etalage is iets anders dan orderproces. Lokaal in Uden of Maashorst verandert de regel niet. De binnendienst herkent de order of hij herkent hem niet.
Ik bouw dit soort shops in Laravel, met een admin waarin jij uitzonderingen zet zonder CSV-rondjes. Catalogus mag lean starten: de artikelen die het merendeel van de omzet doen, plus de prijsregel die nu in de sheet leeft. De rest volgt in een volgende fase, als de eerste orders zonder nabellen kloppen.
Webshops met B2B-regels horen bij het werk onder webshops en e-commerce. Op https://pimvdmolen.nl/diensten/webshops-e-commerce lees je hoe ik catalogus, accountprijzen en orderflow aanpak, op uurbasis of in fases. Schets via https://pimvdmolen.nl/contact welke prijsbron leidend is, of je offertes voor de order nodig hebt, en welke bestelregel de huidige shop of sheet niet aankan. Dan krijg je een eerlijke scope, geen winkelwagen met een B2B-stickertje.