Koppelingen
Orders, klanten en verzending: een bestelling staat meteen overal waar hij moet staan
Een order uit je webshop staat zonder overtypen in je ERP of boekhouding, bij de juiste debiteur en met de juiste btw-code. Het magazijn krijgt de pickopdracht en de klant zijn track-and-trace. Wij bouwen de koppeling op jouw regels, en draaien en bewaken hem daarna.
Van bestelknop tot track-and-trace
Een klant bestelt. Daarna moeten vier partijen het weten: de administratie kent de order, het magazijn weet wat er gepickt wordt, de vervoerder krijgt een zending en de klant krijgt zijn code. Elke stap is een eigen stroom met een eigen richting en een eigen moment.
| Gegeven | Richting | Moment |
|---|---|---|
| Order met regels, adressen en betaalstatus | webshop naar ERP of boekhouding | bij het plaatsen of bij betaling |
| Nieuwe klant | webshop naar ERP | met de eerste order |
| Pickopdracht | ERP of koppeling naar magazijn | zodra de order is vrijgegeven |
| Orderstatus en track-and-trace | magazijn of vervoerder naar webshop | bij elke zending |
| Factuur | ERP naar webshop of klant | na facturatie |
| Retour en creditnota | webshop naar ERP en magazijn | bij de retouraanmelding |
De webshop wacht niet op het ERP. Hij meldt de order en krijgt direct 200 OK terug. De order staat dan in de wachtrij en de koppeling werkt de stappen daarna af. Shopify wil dat antwoord binnen 5 seconden hebben, en een verkooporder aanmaken met een debiteur, drie regels en een voorraadcontrole kan langer duren. Hoe die melding werkt staat in wat is een webhook. De andere vier stromen staan op koppelingen.
Waar een order in je administratie landt
Een order uit de webshop kan op drie manieren in de administratie komen, en het pakket bepaalt welke er bestaan. In Exact Online ziet dat er zo uit, nagelezen op 3 oktober 2026 in de API-documentatie van Exact Online:
| Vorm | Endpoint | Beschikbaar in | Kenmerk |
|---|---|---|---|
| Verkooporder | SalesOrders |
Handel en Productie | status 12 open, 20 gedeeltelijk, 21 volledig, 45 geannuleerd |
| Verkoopfactuur | SalesInvoices |
ook in Boekhouden | type 8020 factuur, 8021 creditnota; status 10 concept, 20 open, 50 verwerkt |
| Verkoopboeking | SalesEntries |
de financiële administratie | een boeking in een dagboek, type 20 of 21 voor een creditnota |
Met Boekhouden is er dus geen verkooporder en loopt de voorraad niet mee in Exact Online. Dat verschil staat uitgewerkt in Exact Online Boekhouden of Handel. Facturen kunnen als concept (status 10) worden aangemaakt, zodat iemand ze naloopt voordat ze definitief zijn.
Vijf regels voor drie producten
Webshoporder 10482 heeft drie orderregels: 2 keer € 12,50, 1 keer € 48,00 en 4 keer € 6,25. Dat is € 25,00 plus € 48,00 plus € 25,00 is € 98,00. De btw van 21% is € 20,58 en het totaal € 118,58. In de boekhouding zijn dat vijf regels: drie omzetregels, één btw-regel en één regel op de debiteur.
Een koppeling die de order als één bedrag van € 118,58 boekt, is sneller gebouwd. De omzet per artikel en de btw per tarief zijn dan uit de boeking verdwenen, en de btw-aangifte moet uit de webshop worden nagerekend.
Bij SalesInvoices en SalesEntries is het dagboek een verplicht veld. Per verkoopkanaal leg je vast in welk dagboek en op welke grootboekrekening de omzet landt. Dat is het eerste waar een accountant naar vraagt: omzet van de webshop, van bol en van de balie op aparte rekeningen.
Ook afronding hoort hier. Drie regels van € 1,45 geven per regel € 0,30 btw, samen € 0,90. Over het totaal van € 4,35 is de btw € 0,91. Rekent de webshop per order en het ERP per regel, dan verschillen ze één cent en lukt het automatisch afletteren van de betaling niet. De koppeling neemt de bedragen van de webshop over en boekt het verschil op een vaste rekening. De details staan in bedragen en btw mappen.
Klanten en debiteuren zonder dubbelingen
De webshop kent een klant aan zijn e-mailadres, het ERP aan zijn debiteurnummer. Zonder vaste volgorde van zoeken maakt elke order van een bestaande klant een nieuwe debiteur aan. De koppeling zoekt in vier stappen:
| Stap | Zoekt op | Bij een treffer |
|---|---|---|
| 1 | KvK-nummer of btw-nummer | order op die debiteur |
| 2 | e-mailadres van de organisatie | order op die debiteur |
| 3 | e-mailadres van de contactpersoon | order op de organisatie van die contactpersoon |
| 4 | geen treffer | nieuwe debiteur, of de order op de controlelijst |
Bij stap 4 telt het type. Staat er een bedrijfsnaam op de order, dan wordt het een organisatie met een contactpersoon. Zonder bedrijfsnaam wordt het een persoon. AFAS heeft daarvoor twee UpdateConnectoren: KnSalesRelationOrg en KnSalesRelationPer.
Voor particuliere verkoop is een eigen debiteur per klant zelden nodig. Dertig orders per dag over 300 dagen zijn 9.000 orders per jaar, en zonder regel 9.000 debiteuren die elk één factuur krijgen. Een verzameldebiteur vangt die op: één debiteur per kanaal, met naam en adres van de klant op de order zelf. WooCommerce geeft een gastbestelling door met customer_id 0. De koppeling herkent daaraan dat er geen account achter zit.
Een klant die al twee keer in het ERP staat voordat de koppeling begint, lost de koppeling niet op: hij meldt het. Twee treffers in stap 1 gaan naar de controlelijst. De hele keten staat in dubbele klanten en debiteuren.
Statussen, deelleveringen en retouren
Webshop, ERP en vervoerder gebruiken elk een eigen set statussen, en ze passen niet een op een.
| WooCommerce | Exact Online verkooporder | Wat de koppeling doet |
|---|---|---|
processing |
12, open | order aanmaken na betaling |
| geen eigen status | 20, gedeeltelijk | track-and-trace per zending doorgeven, order blijft processing |
completed |
21, volledig | status zetten als de laatste zending weg is |
cancelled |
45, geannuleerd | annuleren zolang er niets geleverd is |
refunded |
creditnota, type 8021 | creditnota aanmaken, voorraad terug na controle |
De tweede regel laat zien waar het schuurt. Een order van 10 stuks waarvan er vandaag 6 vertrekken en volgende week 4, is in het ERP één order met twee leveringen. WooCommerce heeft standaard geen status voor een deellevering. Shopify heeft die wel, PARTIALLY_FULFILLED. De klant moet in beide gevallen twee codes krijgen, elk met de regels die in dat pakket zitten. Dat staat uitgewerkt bij deelleveringen en track-and-trace.
Een order kan ook bij het doorzetten al splitsen: twee regels uit eigen voorraad, één regel rechtstreeks van de leverancier. Dat zijn drie regels op één webshoporder, twee pickopdrachten en twee zendingen.
Een retour is vier gebeurtenissen die los van elkaar lopen: de klant meldt de retour aan, het pakket komt binnen, het artikel wordt gecontroleerd en het geld gaat terug. In de administratie wordt de terugbetaling een creditnota met negatieve bedragen. De voorraad komt pas terug als het artikel is goedgekeurd, op de locatie waar het binnenkwam. Zie retouren en creditnota's en orderstatussen mappen.
Btw, landen en valuta
De webshop rekent met een percentage, het ERP met een btw-code. Het hoge tarief heeft in het ene systeem bijvoorbeeld code 2 en in het andere id 4, en die tabel leg je één keer vast. Daarna bepaalt de order zelf welke code geldt:
| Order | Herkend aan | Btw-behandeling |
|---|---|---|
| Nederlandse klant | afleverland NL | Nederlandse btw |
| Particulier in een ander EU-land | afleverland in de EU, geen btw-nummer | Nederlandse btw tot de drempel, daarboven de btw van het land van de klant |
| Bedrijf in een ander EU-land | afleverland in de EU, geldig btw-nummer, geen btw op de regels | 0%, intracommunautaire levering |
| Klant buiten de EU | afleverland buiten de EU | export |
De drempel voor afstandsverkopen is € 10.000 omzet per kalenderjaar, exclusief btw, over alle EU-landen samen. Daarboven geldt de btw van het land van de klant. Met de Unieregeling doe je daarvan één melding per kwartaal voor alle EU-landen. Dit is op 3 oktober 2026 nagelezen bij de Belastingdienst. Voor de koppeling betekent het een omzetrekening en een btw-code per land: de sleutel is kanaal, afleverland en wel of geen btw-nummer.
Voor het 0%-tarief moet het btw-nummer van de afnemer geldig zijn, en de levering komt in de opgaaf ICP. De koppeling controleert het nummer op het moment van de order bij VIES, de dienst van de Europese Commissie. Geef je daarbij je eigen btw-nummer mee, dan komt er een uniek raadplegingsnummer terug. Dat nummer wordt bij de order bewaard als bewijs van de controle.
Bij orders in een andere valuta staat vast welke koers geldt: die van de webshop op het moment van de order, of die van het ERP op de factuurdatum. Meer hierover in btw voor webshops.
Wat er stil misgaat
Een fragment van een order uit WooCommerce, met zes dingen die een koppeling goed moet doen:
{
"number": "10482",
"status": "processing",
"date_created": "2026-10-01T00:30:12",
"date_created_gmt": "2026-09-30T22:30:12",
"customer_id": 0,
"prices_include_tax": true,
"total": "118.58",
"total_tax": "20.58",
"billing": {
"company": "Bakker Installatie en Klimaattechniek Noord B.V.",
"address_1": "Dorpsstraat 12 A",
"postcode": "1234ab",
"country": "NL"
},
"line_items": [
{"sku": "00482", "quantity": 2, "total": "25.00", "total_tax": "5.25"}
]
}
| Veld | Wat er misgaat | Wat de koppeling doet |
|---|---|---|
date_created_gmt |
de order is van 1 oktober 00:30, in UTC is het 30 september 22:30: hij valt in september en in het derde kwartaal | boeken op de lokale datum |
customer_id 0 |
een gastbestelling wordt bij elke order een nieuwe debiteur | de zoekvolgorde hierboven, of de verzameldebiteur |
prices_include_tax |
prijzen inclusief btw komen als exclusief in het ERP: € 118,58 wordt € 143,48 | omrekenen per regel |
company |
48 tekens. De API van PostNL staat voor de bedrijfsnaam 35 tekens toe: "Bakker Installatie en Klimaattechni" | inkorten volgens een regel, de volledige naam in het ERP |
address_1 |
straat, huisnummer en toevoeging in één veld, het ERP wil er drie | splitsen, en bij twijfel naar de controlelijst |
sku |
00482 wordt ergens onderweg 482 en het ERP kent het artikel niet |
artikelcodes als tekst behandelen |
Drie oorzaken van een afgekeurde order komen steeds terug: een artikel dat in het ERP niet bestaat, een zakelijke order zonder btw-nummer en een verplicht veld dat de webshop niet meestuurt. Exact Online eist op een verkooporder een klant en op elke regel een artikel. Bij een factuur komt daar het dagboek bij.
De vierde is de herhaling. Een verzoek aan het ERP loopt in een time-out, maar de order is wel aangemaakt. Een nieuwe poging zonder controle maakt order twee. De koppeling zet daarom het webshopnummer in een vast veld van de order, in Exact Online bijvoorbeeld Description, en zoekt daar eerst op.
Voor livegang lopen vijf gevallen apart door de test: een order die tijdens het doorzetten wordt geannuleerd, een creditnota, een klant die twee keer bestaat, een veld dat leeg blijkt te mogen zijn en een time-out midden in een reeks. Meer over het splitsen van adressen in adresvelden mappen.
Doorvoer en limieten
| Systeem | Grens | Gevolg |
|---|---|---|
| Exact Online | 60 verzoeken per minuut en 5.000 per dag, per administratie | bij 3 verzoeken per order 20 orders per minuut |
| Shopify | een webhook moet binnen 5 seconden beantwoord zijn; orders ouder dan 60 dagen alleen met read_all_orders |
eerst antwoorden, dan verwerken |
| bol | een verzonden of geannuleerde order staat nog 48 uur in de lijst en is drie maanden op ordernummer op te vragen | de ronde mag geen twee dagen stilliggen |
Een order kost in Exact Online drie verzoeken: de debiteur zoeken, de artikelen van de regels ophalen en de order aanmaken. Een nieuwe klant kost er één extra.
- Een gewone dag. 50 orders keer 3 is 150 verzoeken, 3% van het dagbudget van 5.000.
- Een piekdag. 500 orders keer 3 is 1.500 verzoeken. Het drukste uur met 150 orders vraagt 450 verzoeken, en er passen 3.600 in een uur.
- Samen met de voorraadronde. Het dagbudget geldt voor de hele koppeling op die administratie. Verbruikt de voorraadstroom 3.800 verzoeken, dan blijven er 1.200 over. Dat zijn 400 orders. Order 401 wacht op het budget van de volgende dag.
De derde regel is de reden dat orders in de wachtrij voorrang krijgen en dat de voorraadronde alleen wijzigingen ophaalt. Meer over die keuze in realtime of batch.
B2B-orders zijn anders
Een zakelijke order heeft velden die een consumentenorder niet heeft, en regels die vóór het doorzetten gelden.
- Referentie van de klant. Het inkoopnummer van de klant hoort op de order, de pakbon en de factuur. In Exact Online is dat
YourRef. Ontbreekt het, dan kan de administratie van de klant de factuur niet aan een bestelling koppelen. - Bestellen op rekening. De betaalconditie komt uit het ERP. Een klant met een kredietlimiet van € 5.000 en € 4.600 open kan een order van € 600 niet op rekening plaatsen. Zie bestellen op rekening.
- Goedkeuring. Een order die eerst akkoord nodig heeft, claimt pas voorraad na dat akkoord. Exact Online heeft daarvoor een
ApprovalStatusop de verkooporder: 0 wacht op goedkeuring, 2 goedgekeurd. Zie reserveren bij goedkeuring. - Offerte. Een geaccepteerde offerte wordt een order met de prijzen van de offerte, ook als de prijslijst intussen is gewijzigd. Zie van offerte naar order.
- Ordernummers per kanaal. Order 10482 uit de webshop en order 10482 van bol zijn twee orders. Een voorvoegsel per kanaal,
WEB-10482enBOL-10482, houdt ze uit elkaar.
De prijs op een zakelijke order komt uit de prijzenstroom. Bestelt de inkoper vanuit zijn eigen inkoopsysteem, dan komt de order binnen via OCI of PunchOut.
Jij houdt de controle
Voordat de koppeling orders schrijft, draait hij droog op orders die er al zijn. Hij leest ze, past alle regels toe en laat zien wat hij zou aanmaken:
| Uitkomst van de dry run | Aantal |
|---|---|
| Orders gelezen (laatste 14 dagen) | 700 |
| Zou worden aangemaakt | 668 |
| Afgekeurd: artikel onbekend in het ERP | 17 |
| Afgekeurd: zakelijke order zonder btw-nummer | 9 |
| Afgekeurd: debiteur twee keer gevonden | 6 |
De 32 afgekeurde orders laten zien welke regels nog ontbreken voordat er één order in de administratie staat. Daarna kies je per stroom of orders direct doorgaan of op goedkeuring wachten, en welke orders de koppeling overslaat, bijvoorbeeld testorders of orders van een bepaald kanaal.
Na livegang staat bij elke order wat ermee is gebeurd: webshoporder 10482, debiteur 10432 gevonden op btw-nummer, verkooporder 20417 aangemaakt om 00:30:14. Belt een klant over een order die niet is geleverd, dan zie je in welke stap hij is blijven staan. Zie dry run en goedkeuring, monitoring en wat gebeurt er als een koppeling uitvalt.
Wij bouwen de koppeling voor een vaste prijs en hosten, draaien en bewaken hem daarna voor een vast bedrag per maand. Vertel welke webshop en welke administratie je hebt.
Systemen en platformen
| Groep | Systemen | Wat bij orders telt |
|---|---|---|
| ERP | Exact Online, AFAS, Business Central | bij Exact Online bepaalt het pakket of er verkooporders zijn; bij AFAS gaan orders via de UpdateConnector FbSales |
| Boekhouding | SnelStart, Twinfield, Moneybird | een order wordt een factuur of een boeking, met een grootboekrekening per kanaal |
| Magazijn en verzending | Picqer, Monta, Sendcloud | één code per zending terug naar de webshop |
| Webshopplatformen | WooCommerce, Shopify, Magento | de statussen en of er een status voor deelleveringen is |
Zoek je alleen de route van webshop naar boekhouding, kijk dan bij WooCommerce koppelen aan je boekhoudpakket. Een order schrijft de voorraad af die de voorraadstroom toont, en verwijst naar het artikel uit de productdatastroom.
Veelgestelde vragen
Wat gebeurt er als een order niet doorkomt?
De order blijft in de wachtrij staan en de koppeling probeert het opnieuw met steeds langere pauzes. Weigert het ERP de order om de inhoud, bijvoorbeeld een artikel dat daar niet bestaat, dan gaat hij naar de foutenlijst met de reden en de oorspronkelijke inhoud. Je krijgt een melding en na herstel wordt dezelfde order opnieuw aangeboden. Er verdwijnt geen order ongemerkt.
Hoe snel staan mijn bestellingen in het ERP?
Met een webhook staat de order binnen seconden in de wachtrij en kort daarna in het ERP. Heeft de webshop geen webhook, dan bepaalt het interval van de ronde de wachttijd: bij een ronde per kwartier wacht een order gemiddeld 7,5 minuut. De limiet van het ERP telt ook mee. Exact Online staat 60 verzoeken per minuut toe, bij 3 verzoeken per order zijn dat 20 orders per minuut.
Kan de koppeling onderscheid maken tussen B2B en B2C?
Ja, op de velden van de order: een bedrijfsnaam, een btw-nummer of een klantgroep. Een zakelijke klant krijgt een eigen debiteur met zijn betaalconditie en zijn referentie op de order. Een particuliere order kan op een verzameldebiteur landen. Ook de grootboekrekening en de btw-code kunnen per soort klant verschillen.
Wat gebeurt er op een piekdag?
De webshop krijgt op elke order direct antwoord, de wachtrij vangt het verschil op. Tien keer zoveel orders, 500 in plaats van 50, zijn bij 3 verzoeken per order 1.500 verzoeken aan het ERP. Die worden verwerkt in het tempo dat het ERP toelaat. Orders gaan in de wachtrij voor op stromen die kunnen wachten, zoals een volledige voorraadronde.
Nemen jullie retouren mee?
Ja. Een terugbetaling in de webshop wordt een creditnota in de administratie, gekoppeld aan de oorspronkelijke order of factuur. Per magazijn staat vast of de voorraad direct terugkomt of pas na controle van het artikel. Een gedeeltelijke retour, 2 van de 5 stuks, wordt per orderregel verwerkt.
Kunnen oude orders met terugwerkende kracht worden doorgezet?
Zolang het kanaal ze nog levert. Shopify geeft een app standaard de orders van de laatste 60 dagen en oudere orders pas met de extra toestemming read_all_orders. Bij bol is een verzonden order nog drie maanden op ordernummer op te vragen. Artikelnummers die sindsdien zijn gewijzigd matchen niet meer en komen op de foutenlijst.
Komt een order als verkooporder of als factuur in Exact Online?
Dat hangt af van het pakket. Verkooporders bestaan in de API alleen bij Handel en Productie. Met Boekhouden wordt een order een verkoopfactuur of een verkoopboeking in een verkoopdagboek. De keuze bepaalt ook of de voorraad in Exact Online meeloopt.
Wat als een klant zijn order wijzigt of annuleert nadat hij is doorgezet?
Zolang de order in het ERP nog open staat, zet de koppeling de wijziging of de annulering door. Is er al geleverd of gefactureerd, dan loopt het via een retour en een creditnota. Een annulering die binnenkomt terwijl de order nog onderweg is naar het ERP is een van de gevallen die voor livegang apart worden getest.
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