Naar de inhoud
SyncMyShop

Kennisbank

Je webshop koppelen aan je ERP: zo pak je het aan

Je koppelt een webshop aan je ERP door per gegeven vast te leggen welk systeem leidend is en daarna zes stromen te bouwen: artikelen, voorraad, prijzen, orders, klanten en orderstatus. Het ERP is leidend voor artikel, voorraad en prijs, de webshop voor de order en de betaling.

Bijgewerkt op

Wat is een ERP en waarom is het ERP meestal leidend?

Een ERP (enterprise resource planning) is het pakket waarin inkoop, voorraad, verkoop en boekhouding in één administratie zitten. Naast een Nederlandse webshop staat meestal Exact Online, AFAS Profit, Business Central of SAP Business One.

Het ERP is leidend omdat de gegevens daar ontstaan. Een magazijnontvangst verhoogt de voorraad, een inkoopfactuur bepaalt de kostprijs, een prijsafspraak met een debiteur staat in een prijslijst. De webshop toont die gegevens en maakt ze niet zelf. Bij de order is het omgekeerd: die ontstaat in de webshop, samen met de betaling.

Leidend leg je vast per gegeven, niet per systeem. Zonder die afspraak overschrijven twee systemen elkaar. Iemand zet in de webshop een actieprijs van € 9,95, de nachtelijke ronde zet de ERP-prijs van € 12,50 terug, en de actie is weg zonder dat iemand een melding krijgt.

Gegeven Leidend Richting Hoe vaak
Artikel: nummer, omschrijving, eenheid ERP naar de webshop bij wijziging, of elke nacht volledig
Voorraad per magazijn ERP of WMS naar de webshop elke 5 tot 15 minuten
Prijs en prijslijst ERP naar de webshop elke nacht, of bij wijziging
Order en betaling Webshop naar het ERP direct na de bestelling
Debiteur ERP voor bestaande klanten, webshop voor nieuwe beide kanten bij elke order
Orderstatus en track-and-trace ERP of WMS naar de webshop elke 5 tot 15 minuten
Productteksten en afbeeldingen Webshop of PIM blijft buiten het ERP niet

Welke stromen koppel je?

Zes stromen, elk met een eigen richting en een eigen tempo. Het diagram laat zien wat welke kant op gaat.

De stromen tussen ERP en webshop, met de richting per stroom Artikelen, voorraad en prijzen gaan van het ERP via de koppeling naar de webshop. Orders en nieuwe klanten gaan van de webshop naar het ERP. Orderstatus en track-and-trace gaan terug naar de webshop. Regels die de validatie niet halen komen op een controlelijst. ERP leidend: artikel, voorraad, prijs Koppeling wachtrij, mapping, logboek Webshop leidend: order, betaling Controlelijst afgekeurde regels met reden artikelen, voorraad, prijzen orders, debiteuren voorraad, prijzen, status orders, klanten onbekende btw-code Per gegeven is één systeem leidend. De koppeling schrijft alleen in de richting van de pijl en legt elke wijziging vast.
De stromen tussen ERP en webshop. De koppeling schrijft per gegeven in één richting.

Artikelen. De sleutel is het artikelnummer. Dat moet in beide systemen exact dezelfde tekenreeks zijn: 00123456 en 123456 zijn voor een koppeling twee artikelen. Voert het ERP elke kleur als los artikel, dan staan er in de webshop losse producten in plaats van één product met varianten, tenzij de koppeling ze groepeert. Meer daarover in koppelen op SKU of op EAN.

Voorraad. Het ERP kent meerdere getallen per artikel. Van 20 stuks fysiek zijn er 4 gereserveerd voor openstaande orders en 2 houd je achter als veiligheidsvoorraad: 20 min 4 min 2 is 14 verkoopbaar. Stuur je het fysieke getal door, dan verkoop je 6 stuks die er niet zijn. Zie welke voorraad je in je webshop toont.

Prijzen. Een ERP bewaart prijzen exclusief btw, een consumentenwebshop inclusief. € 12,50 exclusief wordt bij 21% btw € 15,13 inclusief (12,50 x 1,21 = 15,125, afgerond). Rondt de webshop per regel af en het ERP per order, dan verschillen de totalen een cent en loopt het afletteren vast. Bedragen en btw mappen gaat hier dieper op in.

Orders. De webshop levert een order zoals hieronder, hier in de vorm van de WooCommerce REST API. Het ERP vraagt om andere dingen: een debiteur, een artikel-ID per regel, een btw-code, een betaalconditie en een magazijn.

{
  "number": "20418",
  "billing": {
    "company": "Bakker Installatie B.V.",
    "email": "inkoop@bakker-installatie.example"
  },
  "line_items": [
    { "sku": "10482", "quantity": 12, "price": "12.50" }
  ],
  "prices_include_tax": false,
  "payment_method": "ideal"
}

De koppeling vertaalt sku naar het artikel in het ERP, payment_method naar een betaalconditie en het btw-tarief naar een btw-code. Kent het ERP die btw-code niet, dan gaat de order naar een controlelijst en wordt hij niet half geboekt.

Klanten. De webshop herkent een klant aan een e-mailadres, het ERP aan een debiteurnummer. Zonder vaste matchvolgorde krijgt een bestaande klant die met een ander e-mailadres bestelt een tweede debiteur. Zie dubbele klanten en debiteuren.

Orderstatus. Het ERP of het WMS meldt dat een order verzonden is, met vervoerder en track-and-trace-code. Bij een deellevering horen er meerdere zendingen bij één order en toont de webshop een status per zending.

Hoeveel API-verkeer levert dat op?

Elke stroom kost aanroepen en elk ERP begrenst die. Exact Online staat per app per administratie 60 aanroepen per minuut en 5.000 per dag toe. Reken het door voor een webshop met 8.000 artikelen en 120 orders per dag.

  • Orders: 120 orders x 3 aanroepen (debiteur opzoeken, order aanmaken, status teruglezen) = 360 per dag.
  • Voorraad, artikel voor artikel: 8.000 aanroepen per ronde. Dat duurt 134 minuten bij 60 per minuut, en het dagbudget van 5.000 is op voordat de eerste ronde klaar is.
  • Voorraad via een sync-endpoint dat 1.000 records per aanroep teruggeeft: 8 aanroepen per ronde. Elke 15 minuten is 96 rondes x 8 = 768 per dag.
  • Prijzen, één keer per nacht: 8 aanroepen.

Samen 360 + 768 + 8 = 1.136 van de 5.000. Dezelfde gegevens artikel voor artikel ophalen past niet één keer in een dag. Het verschil zit in de manier van vragen, niet in de hoeveelheid data. De som staat uitgewerkt in doorvoer berekenen. Wat er gebeurt als je de grens raakt, lees je in wat is een rate limit.

Per ERP in het kort

Exact Online

REST API met OAuth 2.0. De limiet van 60 per minuut en 5.000 per dag geldt per app per administratie, dus een tweede administratie is een tweede verbinding met een eigen budget. Het toegangstoken verloopt na 10 minuten en het refresh token wordt bij elke verversing vervangen. Twee processen die tegelijk verversen maken elkaars token ongeldig, en dan staat de koppeling stil tot iemand opnieuw inlogt. Details op Exact Online koppeling.

AFAS Profit

Lezen gaat via een GetConnector, schrijven via een UpdateConnector. Je eigen AFAS-beheerder maakt de app connector aan, voegt de connectoren toe en genereert het token. Dat token is één keer zichtbaar. Welke velden een GetConnector teruggeeft bepaalt de beheerder: een veld dat er niet in staat, bestaat voor de koppeling niet. Details op AFAS webshop koppeling.

Business Central

API v2.0 op OData v4, met OAuth 2.0 via Microsoft Entra ID. Business Central online laat per gebruiker 6.000 OData-aanvragen per 5 minuten en 5 aanvragen tegelijk toe, en antwoordt daarboven met een 429. Business Central bepaalt de grootboekrekeningen van een order uit de boekingsgroepen van de klant, Customer Posting Group en Gen. Bus. Posting Group. Maakt de koppeling een klant aan zonder die groepen, dan loopt het boeken van de order vast. Details op Business Central koppeling.

SAP Business One

De Service Layer: OData over HTTPS, met een sessie waarop je eerst inlogt. Die sessie verloopt standaard na 30 minuten. Gebeurt dat midden in een reeks orders, dan logt de koppeling opnieuw in en gaat verder bij de order waar hij was. Details op SAP Business One koppeling.

Exact Globe, NetSuite, Odoo en andere pakketten

Voor elk ander ERP is de eerste vraag hoe je er gegevens uit haalt en in zet: via een API, een databaseview of een geplande export. Exact Globe draait op een eigen server, dus de koppeling heeft een verbinding naar die server nodig. NetSuite rekent met governance units per script en laat op het Standard-niveau 5 gelijktijdige aanvragen per account toe. Odoo heeft sinds versie 19 een nieuwe JSON-2 API en haalt de oude XML-RPC en JSON-RPC API in Odoo 22 weg. Een koppeling op de oude API moet voor die tijd om. Zie Exact Globe koppeling, NetSuite koppeling, Odoo koppeling en koppelen zonder API.

Wat je vooraf moet weten

Negen vragen waarvan het antwoord de bouw verandert.

Vraag Wat het antwoord verandert
Welk systeem is leidend voor voorraad, en welk voor prijs? De richting van elke stroom en wat er gebeurt als twee systemen het oneens zijn
Betalen klanten verschillende prijzen? Met prijslijsten wordt één prijs per artikel een prijs per artikel per lijst: 8.000 artikelen x 50 prijslijsten is maximaal 400.000 prijsregels
Hoeveel voorraadlocaties zijn er, en welke leveren weborders? Magazijn 100 plus winkel 10 is 110 als je optelt, en 100 als alleen het magazijn verzendt
Zijn kleur en maat varianten, of losse artikelen in het ERP? Of de koppeling artikelen moet groeperen tot één product
Laat een leveranciersbestand producten weg? Of afwezigheid nul betekent of onbekend. Het eerste haalt een leverbaar product offline, het tweede laat oude voorraad staan
Verkoop je in een andere eenheid dan je inkoopt? Een omrekenfactor per artikel: 1 doos is 12 stuks, en de voorraad van 30 dozen is 360 stuks
Is er al een koppeling of script, en is het gedocumenteerd? Of de nieuwe koppeling eerst naast de oude meedraait om te zien wat die precies deed
Wie beheert het ERP en kan API-toegang geven? De planning. Bij AFAS moet je beheerder de connectoren publiceren voordat er iets getest kan worden
Mag de webshop doorverkopen als de koppeling een uur stilstaat? De grootte van de voorraadbuffer en de wachtrij. Zie wat er gebeurt als een koppeling uitvalt

Wat betekent dit voor je koppeling?

Wij bouwen de koppeling tussen je webshop en je ERP op jouw systemen en jouw regels: welke stroom welke kant op gaat, welk veld leidend is en hoeveel verkeer het ERP toelaat. Voor de livegang draait de koppeling een proefronde zonder te schrijven, zodat je per artikel en per order ziet wat er zou veranderen. Daarna hosten en bewaken wij de koppeling. Wijzigt je ERP-leverancier de API, dan passen wij hem aan.

Wat dat per ERP inhoudt staat op ERP koppeling met je webshop. Wil je de negen vragen voor jouw situatie doorlopen, stuur dan je systemen en aantallen in.

Veelgestelde vragen

Welk systeem is leidend bij een koppeling tussen webshop en ERP?

Dat leg je per gegeven vast. Het ERP is leidend voor artikel, voorraad en prijs, omdat ontvangsten, inkoopfacturen en prijsafspraken daar geboekt worden. De webshop is leidend voor de order en de betaling. Productteksten en afbeeldingen blijven in de webshop of in een PIM.

Kan ik mijn huidige ERP houden als ik een webshop koppel?

Ja. De koppeling sluit aan op het ERP dat je hebt en op de manier waarop dat ERP gegevens vrijgeeft: een API, een GetConnector in AFAS of een geplande export. Je richt het ERP niet opnieuw in. Wel moet per stroom duidelijk zijn welke velden het ERP teruggeeft.

Hoe weet ik of mijn ERP een API heeft?

Exact Online, AFAS Profit, Business Central en SAP Business One hebben er alle vier een. De betere vraag is of de API de velden teruggeeft die je nodig hebt, zoals een staffelprijs of de voorraad per magazijn. Ontbreekt een veld, dan komt het uit een aparte export. Zie koppelen zonder API.

Moet de koppeling tussen webshop en ERP realtime zijn?

Per stroom verschilt dat. Orders en de voorraad die een klant ziet gaan binnen minuten over de lijn. Prijslijsten en artikelgegevens kunnen in een nachtelijke ronde, wat minder API-aanroepen kost en makkelijker te controleren is. Zie realtime of batch.

Wat gebeurt er met orders als het ERP even niet bereikbaar is?

De webshop blijft verkopen. Orders wachten in een wachtrij en worden opnieuw aangeboden met steeds langere pauzes tot het ERP weer antwoordt. Een order die na herhaalde pogingen nog faalt, komt met het originele bericht op een aparte lijst en raakt niet stil kwijt.

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