Prijzen en klantafspraken
Klantspecifieke prijzen in je webshop: elke klant logt in en ziet zijn eigen afspraak
De prijs die je met een klant hebt afgesproken staat in je ERP, bij zijn debiteurnummer. Wij bouwen de koppeling die die afspraak naar het account van die klant in de webshop brengt, met begindatum en einddatum, zodat de prijs die hij ziet de prijs op zijn factuur is.
Vijftig afspraken onthoud je, 1.150 niet
Met vijftig klanten weet de binnendienst wie welke prijs heeft. In het voorbeeld van prijzen en klantafspraken staan er 1.150 losse prijsafspraken in het ERP, verdeeld over 96 van de 800 debiteuren. Bakker Installatie B.V., debiteur 10432, heeft er 40. Elke afspraak is een prijs die de webshop aan precies één bedrijf moet tonen.
Gaat dat mis, dan merk je het aan het bestelgedrag. Een klant die € 9,60 heeft afgesproken en in de webshop € 10,63 ziet, bestelt per e-mail en gebruikt de webshop alleen om artikelnummers op te zoeken. De order wordt dan weer overgetypt.
De vier prijslagen en hun volgorde staan op de hub. Deze pagina gaat over de onderste laag: hoe de webshop weet wie er inlogt, in welke vorm de prijs per klant wordt weggeschreven en wanneer hij wijzigt.
Hoe werkt het?
Eerst de klant, dan de prijs
Een prijsafspraak hoort bij een debiteur. De webshop kent geen debiteuren. Hij kent accounts met een e-mailadres. Daartussen staat een vaste verwijzing:
| Schakel | Voorbeeld | Waar het staat |
|---|---|---|
| Inkoper | m.bakker@bakker-installatie.example |
het account in de webshop |
| Bedrijf | Bakker Installatie B.V. | in Shopify een Company met externalId 10432 |
| Debiteur | 10432 | Account in Exact Online |
| Afspraak | artikel 10482, € 9,60, tot 31-12-2026 | SalesItemPrices met Account, StartDate en EndDate |
Meldt een nieuwe inkoper zich aan, dan zoekt de koppeling in een vaste volgorde: eerst op debiteurnummer, dan op het e-mailadres van de organisatie, dan op dat van de contactpersoon. Levert geen van de drie iets op, dan komt het account op de controlelijst en ziet de inkoper de basisprijs van € 12,50. Een nieuwe debiteur maakt de koppeling niet stil aan: twee debiteuren voor één klant zijn twee prijzen en twee openstaande posten. Hoe dat wordt voorkomen staat in dubbele klanten en debiteuren.
Bovenop de groepslijst of volledig uitgerekend
Er zijn twee manieren om de 40 afspraken van debiteur 10432 weg te schrijven.
| Vorm | Wat de klant in de webshop heeft | Prijzen voor debiteur 10432 |
|---|---|---|
| Bovenop | de prijslijst van zijn groep, plus een eigen lijst met alleen de afspraken | 40 |
| Uitgerekend | één eigen lijst met voor elk artikel de eindprijs | 6.000 |
Bovenop is klein: 1.150 afspraken over 96 klanten zijn 96 aanroepen naar Shopify, één per prijslijst van hoogstens 250 prijzen. Het werkt zolang elke afspraak lager is dan de groepsprijs, want Shopify toont van twee catalogi de laagste prijs. Is een afspraak hoger, dan toont de webshop de groepsprijs en factureert het ERP de afspraak.
Elke run telt daarom hoeveel afspraken boven de groepsprijs liggen. Stel dat het er 37 zijn, bij 9 debiteuren. Die 9 krijgen een uitgerekende lijst: 9 maal 6.000 is 54.000 prijzen, in aanroepen van 250 zijn dat er 216. De andere 87 houden hun lijst bovenop de groep. Alle 96 uitrekenen zou 576.000 prijzen en 2.304 aanroepen kosten voor hetzelfde resultaat.
Een prijs zoals hij voor debiteur 10432 klaarstaat:
{
"debiteur": "10432",
"artikel": "10482",
"prijs": 9.60,
"laag": "klantafspraak",
"geldig_van": "2026-01-01",
"geldig_tot": "2026-12-31",
"groepsprijs": 10.63
}
De prijs staat klaar voordat de klant inlogt
De koppeling vraagt de prijs niet op bij het ERP op het moment dat de klant kijkt. Hij rekent hem vooraf uit en zet hem in de webshop.
Er zijn drie momenten waarop een prijs wordt bijgewerkt:
| Moment | Wat er gebeurt | Verzoeken aan Exact Online |
|---|---|---|
| Elke nacht | alle afspraken opnieuw gelezen, begin- en einddatums beoordeeld | 1.150 afspraken, 1.000 per verzoek: 2 |
| Elk kwartier, bijvoorbeeld | alleen wat sinds de vorige Timestamp is gewijzigd |
96 per dag |
| Bij de order | de prijs op de orderregel naast de prijs in het ERP gelegd | 1 per order |
De nachtelijke ronde is er voor de datums. Een afspraak met EndDate 31-12-2026 verandert op 1 januari niet in het ERP. Er is dus geen gewijzigde regel om op te halen, en zonder eigen controle bestelt de klant in januari nog tegen € 9,60. Andersom geldt hetzelfde: een afspraak die in november wordt ingevoerd met StartDate 01-01-2027 mag in november niet zichtbaar zijn.
Een afspraak op een artikelgroep
Niet elke afspraak is een prijs per artikel. Debiteur 10432 heeft 2,5% op de artikelgroep Fittingen. In het ERP is dat 1 regel. In de webshop zijn het 340 prijzen, voor elk artikel in de groep één. Artikel 10495 kost in de prijslijst € 4,20: 4,20 maal 0,975 is 4,095, afgerond € 4,10. Komt er een artikel bij in de groep, dan komt er een prijs bij zonder dat de afspraak zelf wijzigt. De koppeling kijkt daarom naar wijzigingen in de afspraken en in de samenstelling van de groep.
Wat er stil misgaat
| Wat er gebeurt | Voorbeeld | Gevolg |
|---|---|---|
| De debiteur bestaat twee keer | 10432 en 11207 zijn dezelfde klant | de afspraak hangt aan de ene, de inkoper aan de andere: hij ziet € 10,63 |
| Het account hangt aan geen bedrijf | een inkoper meldt zich aan met een privé-adres | hij ziet € 12,50 en bestelt tegen die prijs |
| De einddatum gaat niet mee | EndDate 31-12-2026 |
in januari geldt in de webshop nog € 9,60 |
| De afspraak is per doos | Price 115,2 bij NumberOfItemsPerUnit 12 |
€ 115,20 per stuk in plaats van € 9,60 |
| Twee lijsten naast elkaar | afspraak € 10,80, groepsprijs € 10,63 | de webshop toont € 10,63, de factuur zegt € 10,80 |
| De oude lijst blijft hangen | een klant gaat van Installateurs naar Groothandel | hij heeft twee groepslijsten en ziet van beide de laagste prijs |
De laatste rij komt voor bij elke wijziging van klantgroep. De koppeling vervangt een toewijzing en voegt er geen toe.
Wat je ermee regelt
- Een prijs per debiteur. Elke afspraak uit het ERP bij het juiste bedrijf in de webshop.
- Account en debiteur. Een vaste verwijzing, met een zoekvolgorde voor nieuwe accounts en een controlelijst voor wat niet past.
- Begin en einde. Datums worden elke nacht beoordeeld, ook als er in het ERP niets wijzigt.
- Afspraken op groepen. Een korting op een artikelgroep wordt per artikel uitgerekend en volgt de groep.
- Dezelfde prijs op de order. De orderregel gaat met de getoonde prijs naar het ERP: zie orders, klanten en verzending.
Prijzen per aantal staan bij staffelprijzen. Welke artikelen een klant te zien krijgt staat bij assortiment per klant.
Met welke systemen
| Systeem | Waar de prijs per klant staat | Grens of bijzonderheid |
|---|---|---|
| Exact Online | SalesItemPrices met een Account, een begin- en een einddatum |
een klant hangt aan één prijslijst tegelijk; de prijslijsten zitten in de pakketten voor handel en productie |
| AFAS | in de GetConnector die de beheerder samenstelt | wat er niet in staat, bestaat voor de koppeling niet; zonder take komen 100 regels terug |
| Business Central | een prijs per klant of klantprijsgroep, met minimumaantal en datums | beste prijs: de laagste prijs met de hoogste regelkorting geldt |
| Shopify | een catalogus met prijslijst per bedrijfslocatie | alleen op Plus; 25 catalogi per locatie, 10.000 per winkel; de laagste prijs wint |
| Magento | Open Source: prijzen per klantgroep. Adobe Commerce B2B: een gedeelde catalogus met eigen prijzen per bedrijf | de gedeelde catalogus zit alleen in Adobe Commerce B2B |
| Shopware | prijzen op regels uit de Rule Builder | de regel bepaalt welke klant de prijs ziet |
| WooCommerce | geen prijs per klant in de kern | een uitbreiding bewaart hem, de koppeling schrijft naar de velden daarvan |
Business Central en Shopify rekenen dus op dezelfde manier: de laagste geldige prijs. Bij die combinatie is bovenop de groepslijst altijd juist. Exact Online laat de afspraak winnen, en daar is de telling van afspraken boven de groepsprijs nodig. De grenzen van Shopify staan in het helpcentrum over catalogi, de prijsberekening van Business Central in de documentatie van Microsoft. Beide zijn nagelezen op 3 oktober 2026.
Wat een standaardkoppeling hier niet doet
Standaardkoppelingen en koppelplatformen documenteren hun grens bij prijzen zelf. De prijs gaat over op het niveau van de klantgroep, en in de eigen beschrijving staat erbij dat hij niet klantspecifiek is. Een debiteurkorting blijft buiten de synchronisatie. Prijslijsten gaan één kant op, per artikel. Waar een platform prijzen per prijsniveau overzet, is dat 1 prijsniveau tegelijk, en de omweg voor meer is een eigen script met formules die je zelf schrijft en onderhoudt.
Voor de 14 prijslijsten uit het voorbeeld is dat genoeg. Voor de 1.150 afspraken niet: die horen elk bij één debiteur, en een klantgroep per klant is geen groep meer. Het verschil in aanpak staat in koppeling of koppelplatform.
In een koppeling die voor jouw afspraken is gebouwd, komt elke afspraak bij het juiste bedrijf terecht en laat een dry run per klant zien welke prijzen zouden wijzigen voordat er iets is geschreven. Dat staat bij dry run en goedkeuring. Stuur de prijsafspraken van één klant met uitzonderingen, dan hoor je welke lagen de API vrijgeeft en welke uit een export komen.
Veelgestelde vragen
Zien alle inkopers van één klant dezelfde prijs?
Ja. De prijs hoort bij de debiteur en niet bij de persoon. Drie inkopers van Bakker Installatie B.V. loggen elk in met een eigen e-mailadres, hangen alle drie aan debiteur 10432 en zien € 9,60. Een inkoper die zich aanmeldt met een adres dat bij geen debiteur past, ziet de basisprijs tot het account is gekoppeld.
Wat gebeurt er als een prijsafspraak afloopt?
Op de dag na de einddatum geldt weer de prijs van de klantgroep. De koppeling beoordeelt begin- en einddatums zelf, elke nacht, want in het ERP verandert op die dag niets aan de regel en er is dus geen wijziging om op te halen. Een afspraak tot 31-12-2026 van € 9,60 wordt op 1 januari € 10,63, en dat staat in het overzicht van die run.
Hebben we Shopify Plus nodig voor een prijs per klant?
Voor een eigen catalogus per bedrijf wel: een catalogus direct aan een bedrijfslocatie hangen kan alleen op Plus. Op Basic, Grow en Advanced zijn er 3 actieve catalogi, genoeg voor drie klantgroepen en niet voor 96 klanten met een eigen afspraak. Nagelezen in het helpcentrum van Shopify op 3 oktober 2026.
Kan een klantprijs hoger zijn dan de prijs van de klantgroep?
Ja, bijvoorbeeld als levering op de bouwplaats in de prijs zit. In het ERP wint de afspraak. Shopify toont de laagste prijs als een artikel in twee catalogi van dezelfde klant staat. Voor die klanten schrijft de koppeling daarom één volledig uitgerekende prijslijst weg en geen afspraak bovenop de groepslijst.
Werkt dit ook binnen een OCI-sessie?
Ja. De inkoper komt vanuit zijn inkoopsysteem binnen op het account van zijn bedrijf. De prijslijst van die debiteur staat op dat moment al in de webshop, dus de sessie toont dezelfde prijzen als na een gewone login, en de winkelmand gaat met die prijzen terug. Het verloop staat bij OCI en PunchOut.
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