Je oude fulfilmentpartij kent de voorraad, je nieuwe partij kent de pakstraat, en je webshop kent vooral de belofte aan de klant. Op de dag van de wissel moeten die drie werkelijk hetzelfde bedoelen. Een verschil van één SKU of één open order is dan geen administratieve ruis, maar een pakket dat op de verkeerde plek blijft liggen.
Een fulfilmentwissel is daarom een cutover van voorraad, orderbezit en klantbelofte. In deze gids zet je die overgang op als een gecontroleerde migratie, met een nulstand, read-back, proeforders, retouren, reconciliatie en menselijke vrijgave. De genoemde API-versies, productdetails en prijzen zijn gecontroleerd op 14 oktober 2026.
Een 3PL-cutover is de gecontroleerde overgang van opslag en orderafhandeling van een oude naar een nieuwe fulfilmentpartij. Je verplaatst dozen en draagt tegelijk de bronhouder van voorraad, de eigenaar van open fulfilmentwerk, de verzendstatus en de route voor retouren over. De cutover is klaar wanneer ieder open orderrecord, iedere voorraadmutatie en iedere klantbelofte naar één aantoonbare eigenaar wijst.
De voorraadbelofte per kanaal blijft een aparte berekening. Deze gids begint op het moment waarop je weet wat je wilt beloven en die belofte zonder breuk aan een andere fulfilmentpartij moet overdragen.
Wat je nodig hebt voordat je een verhuisdag plant
Begin niet met pallets. Begin met eigenaarschap. De grootste fout in een fulfilmentwissel is dat iedereen aanneemt dat de ander de open orders, retouren of voorraadverschillen wel oppakt.
Een rekenkader voor echte cutoverkosten
Begroot de verhuisdag als een eenmalig project naast je normale fulfilmenttarief. Neem minimaal zes posten op: onboarding bij de nieuwe 3PL, telling en transport, dubbele run, integratie, handmatige reconciliatie en een risicobuffer. Zo voorkom je dat een goedkope softwarelaag de kosten van extra magazijnwerk, twee facturen en herstel achteraf verbergt.
Gebruik voor een eerste raming deze formule:
Totaal cutoverbudget = onboarding + telling/transport + dubbele run + integratie + handmatige reconciliatie + risicobuffer
| Kostenpost | Rekenregel voor je raming | Wat je vóór akkoord opvraagt |
|---|---|---|
| Onboarding nieuwe 3PL | vaste setupkosten + SKU-import + procesinrichting + test- en go-livebegeleiding | offerte per SKU, locatie, kanaal en testfase |
| Telling en transport | teluren × intern of extern uurtarief + pallets/dozen × handling + ritten, verzekering en toeslagen | telplan, aantal eenheden, palletvolume en transportofferte |
| Dubbele run | aantal weken × (oude maandrun-rate + nieuwe maandrun-rate) + tijdelijke opslag en exitkosten | einddatum oude contract, minimumafnames, opslag- en ontvangsttarieven |
| Integratie | analyse + mapping + bouw + test + productiegang + hosting en beheer | scope voor orders, voorraad, tracking, retouren, read-back en retry |
| Handmatige reconciliatie | uitzonderingen × minuten per uitzondering ÷ 60 × volledig uurtarief + hertellingen en retests | verwachte uitzonderingsklassen en eigenaar per queue |
| Risicobuffer | 15 tot 25% van de vijf posten hierboven; verhoog bij slechte data, veel gesplitste orders of contractonzekerheid | expliciete aannames en het besluit wanneer de buffer wordt aangesproken |
De percentages hierboven zijn een intern planningskader, geen marktprijs. Vul elke regel met een offerte of een aantoonbare urenraming en zet btw, claims, vernietiging en retourtransport apart. Een telling die afwijkingen vindt vóór vertrek kan de buffer verlagen; een telling die pas na ontvangst begint, maakt de herstelpost juist groter.
Eén eigenaar en één stopbesluit
Wijs één cutover-eigenaar aan met mandaat om de vrijgave uit te stellen. Operations bewaakt de orderstroom, finance de geld- en factuurgevolgen, de oude partij de uitslag en de nieuwe partij de ontvangst. Die rollen mogen verdeeld zijn. Het besluit om door te gaan mag dat niet zijn.
Leg vooraf vast:
- de cutoverdatum, de lokale tijdzone en een venster met lage orderdruk;
- de laatste order die nog door de oude partij mag worden verwerkt;
- de eerste order die uitsluitend naar de nieuwe partij mag;
- wie een proeforder mag vrijgeven en wie een stop mag afdwingen;
- welke tijdelijke klantbelofte je gebruikt als voorraad of tracking onzeker is;
- wanneer de oude partij geen fysieke of digitale mutaties meer mag doen.
Een register dat de hele keten volgt
Maak één dossier met een cutover_id, bijvoorbeeld CUT-2026-10-14-001. Per record bewaar je de bron-ID, SKU, order-ID, orderregel-ID, fulfilmentorder-ID, locatie, trackingnummer, retour-ID, bronversie, tijdstip, actie, uitkomst en vrijgever. Een workflowlog van Make of n8n is hiervoor onvoldoende. Die laat zien dat een stap draaide, niet dat de klantbelofte daarna klopte.
Leg per gegevenssoort de bronhouder vast:
| Gegevenssoort | Bronhouder tijdens de wissel | Bewijs dat je bewaart |
|---|---|---|
| SKU, variant en verpakkingseenheid | Productcatalogus of ERP | SKU-mapping, eenheid en barcode |
| Fysieke voorraad | WMS van de partij die de voorraad bezit | Telstaat per SKU, locatie en partij |
| Open order | Shopify of het orderplatform | Order-ID, orderregels en betaalstatus |
| Fulfilmentwerk | De toegewezen fulfilmentlocatie | FulfillmentOrder-ID, status en requeststatus |
| Verzending | WMS plus carrierplatform | Zending-ID, tracking, carrierstatus en tijd |
| Retourontvangst | De partij die het pakket fysiek ontvangt | Retour-ID, inspectie en bestemming |
| Refund en credit | PSP en boekhouding | Transactie-ID, refund-ID en boekingsstatus |
Een order heeft dus niet één magische eigenaar. Shopify kan de order en betaalstatus tonen, terwijl de fulfilmentpartij de fysieke verzending bezit. Zet die splitsing op papier voordat je een export maakt.
Een volledige nulstand
Exporteer op een afgesproken peiltijd drie lijsten, met dezelfde tijdzone en dezelfde filters:
- Voorraad: SKU, variant, barcode, locatie, eenheid, fysiek aantal, verkoopbaar aantal, gereserveerd aantal, quarantaine, schade, retour en onderweg.
- Orders: order-ID, orderregel-ID, aantallen, betaalstatus, annulering, fulfilmentstatus, tracking, beloofdatum en eventuele hold.
- Retouren en uitzonderingen: retour aangevraagd, label aangemaakt, ontvangen, geïnspecteerd, refund open, refund uitgevoerd en nog te beantwoorden klantvraag.
Vergelijk de exports met een fysieke telling. Silicon Valley Direct adviseert een betrouwbare SKU-baseline, een scheiding tussen verkoopbare, gecommitteerde en geblokkeerde voorraad, en een expliciet issue-log met SKU, afwijking, eigenaar en oplossing. Dat artikel is gepubliceerd op 8 oktober 2026 en sluit precies aan op deze nulstand: een verschil mag niet stilletjes in het transferbestand verdwijnen. Een 3PL-overdracht hoort pas verder te gaan wanneer voorraad, gegevens, workflows en eigenaarschap per checkpoint zijn gecontroleerd.
Een onafhankelijke praktijkbeschrijving van Impact Evolve meldt dat een exit-telling op 13 september 2026 bij één 3PL-overgang een verschil van meer dan £100.000 tussen fysieke telling en systeemregistratie blootlegde. Dat is geen marktgemiddelde, maar wel een reden om de exit-reconciliatie vóór transport te sluiten: na ontvangst en wegzetten is de oorsprong van een afwijking niet meer betrouwbaar vast te stellen.
Toegang, testdata en een terugvalpad
Je hebt minimaal nodig:
- leestoegang tot Shopify, WMS, PSP, boekhouding en carrierplatform;
- schrijfrechten voor de nieuwe fulfilmentlocatie, maar alleen voor aangewezen acties;
- een testwinkel of afgeschermde orderstroom;
- een SKU-mapping met oude code, nieuwe code, barcode, verpakkingseenheid en gewicht;
- een foutqueue met eigenaar, retry-tijdstip en vrijgavestatus;
- een carrieromgeving voor labels, tracking en retourlabels;
- een terugvalpad dat writes stopt en events bewaart, niet een belofte dat je dozen terug in het oude magazijn zet.
Testdata moet onaangenaam genoeg zijn. Neem een normale order op, een order met twee regels, een gedeeltelijke levering, een annulering, een refund, een adreswijziging, een retour, een dubbele webhook en een order waarvan de carriertracking pas later verschijnt.
Vink dit af voordat iemand de eerste pallet verplaatst. De fysieke overdracht is pas veilig als je ook weet welke orderregel die pallet kan claimen.
Concrete stappen: van nulstand naar vrijgegeven nieuwe partij
De volgorde hieronder houdt drie dingen uit elkaar die vaak onterecht in één knop worden gestopt: voorraad verplaatsen, orders opnieuw toewijzen en klantbeloften publiceren.
1. Bevries definities, niet meteen de hele verkoop
Schrijf eerst de zakelijke statussen uit. Wat betekent open, in behandeling, gepickt, verzonden, retour ontvangen en refund uitgevoerd? Koppel iedere status aan één gebeurtenis en één bron. Verzonden betekent bijvoorbeeld pas verzonden wanneer het WMS een zending heeft aangemaakt en de carrier een geldige zending-ID accepteert. Een labelprint is nog geen verzending.
Maak ook het voorraadcontract scherp. In Shopify bestaat het totaal op een locatie uit Committed, Unavailable en Available. Committed omvat onder meer onvervulde orders en gereserveerde conceptorders. Unavailable omvat bijvoorbeeld schade, kwaliteitscontrole en veiligheidsvoorraad. Incoming is onderweg en wordt niet automatisch verkoopbaar voordat het is ontvangen. Deze vijf voorraadstaten staan in de actuele Shopify-uitleg, gecontroleerd op 14 oktober 2026.
Gebruik die termen als bronvelden, niet als complete migratieformule. Leg vast welke staten naar de nieuwe WMS-velden gaan en welke je opnieuw berekent. Voorkom dat Available uit Shopify tegelijk wordt behandeld als fysiek aanwezig én als vrijgegeven voor de nieuwe magazijnlocatie.
2. Maak de SKU-mapping en telstaat sluitend
Maak per SKU één mappingrecord:
old_sku | new_sku | barcode | unit | case_pack | weight | old_location | new_location | status
Markeer drie soorten uitzonderingen: dubbele SKU's, ontbrekende barcodes en een andere verpakkingseenheid. Een oude partij die 12 stuks als één doos telt, terwijl de nieuwe partij 1 doos als één voorraadartikel registreert, kan een perfecte telling opleveren die toch twaalf keer fout wordt geboekt.
Laat de oude partij tellen per SKU en locatie. Laat de nieuwe partij bij ontvangst opnieuw tellen per pallet, doos en losse eenheid. Leg schade en quarantaine apart vast. Een verschil van 14 stuks zonder reden krijgt de status onderzoek, niet verkoopbaar.
De telstaat heeft minimaal deze kolommen:
| SKU | Oud systeem | Fysiek oud | In transfer | Ontvangen nieuw | Verschil | Besluit |
|---|---|---|---|---|---|---|
| P-400 | 86 | 84 | 84 | 84 | 0 | 2 stuks verklaard als schade |
| K-210 | 240 | 240 | 240 | 236 | -4 | ontvangst hertellen |
| S-900 | 18 | 18 | 18 | 18 | 0 | vrijgeven |
De eerste rij is pas sluitend omdat de twee beschadigde stuks niet in de transfer zijn opgenomen. Zet dat besluit in het dossier. Anders ziet een later rapport alleen een verschil van twee.
3. Breng open orders terug naar fulfilmentwerk
Kijk niet alleen naar de orderstatus. Haal per open order de onderliggende fulfilmentorders, regels, toegewezen locatie, resterende aantallen, requeststatus, holds, leverbelofte en tracking op. Shopify maakt fulfilmentorders automatisch aan na een order en kan één order opsplitsen over meerdere locaties. De actuele documentatie beschrijft FulfillmentOrder als het werk dat voor een order op één locatie moet gebeuren, met een eigen status en resterende hoeveelheid. Gebruik dus de fulfilmentorder als handoff-eenheid, niet alleen het zichtbare ordernummer.
Maak drie bakken:
- Oude partij afmaken: al gepickt, al verpakt of door de carrier opgehaald. Deze orders laat je niet opnieuw lopen.
- Overzetten: nog niet gepickt, geen onomkeerbare actie en fysiek uitvoerbaar door de nieuwe partij.
- Menselijke beslissing: gedeeltelijk geleverd, retour onderweg, hold, adreswijziging, refund in behandeling of een fulfilmentrequest met onduidelijke status.
Een order met twee regels kan in twee bakken vallen. Verplaats dan alleen de resterende fulfilmentorderregels en bewaar de oorspronkelijke fulfillment-ID's. De klant ziet één order, maar de operatie moet twee stukjes werk correct volgen.
4. Zet de nieuwe integratie naast de oude route
Bouw eerst een leesroute. Laat de nieuwe koppeling dezelfde order-, fulfilment-, voorraad- en trackinggegevens ophalen, maar nog geen fulfilment of voorraadcorrectie schrijven. Bewaar beide uitkomsten onder dezelfde cutover_id en vergelijk:
- order-ID en orderregels;
- SKU, locatie en resterende hoeveelheid;
- betaalstatus, valuta, btw en refundstatus;
- fulfilmentstatus en trackingnummer;
- voorraadmutaties en tijdstempels.
Gebruik webhooks als snelle trigger en een periodieke controle als vangnet. Shopify zegt in de actuele webhookdocumentatie, geraadpleegd op 14 oktober 2026, dat de volgorde binnen en tussen topics niet gegarandeerd is en dat aflevering kan ontbreken. Dezelfde documentatie adviseert daarom periodieke reconciliatie met de API. Een webhook zet een order op de wachtrij, een read-back bepaalt wat werkelijk is gebeurd.
Een bronhouder per veld met sleutel, foutqueue en reconciliatie voorkomt dat de oude en nieuwe WMS tegelijk de waarheid over dezelfde voorraad of order claimen. De technische kant volgt dezelfde lijn als een API-cutover met shadow-read, proefwrite en menselijke vrijgave.
In een bestaande Shopify-koppeling betekent dit praktisch: controleer X-Shopify-Webhook-Id, verifieer X-Shopify-Hmac-Sha256, bewaar X-Shopify-Triggered-At en laat een oudere updated_at geen nieuwere staat overschrijven. Dezelfde order drie keer ontvangen moet één uitkomst geven.
5. Richt de nieuwe locatie en carrier in
Maak de nieuwe locatie aan met precies de SKU's die zij werkelijk kan fulfilen. Stel routingregels in voor kanaal, land, producttype, voorraad en cut-offtijd. Controleer dat het juiste fulfilmentaccount de juiste locatie ziet. Een nieuwe WMS-locatie die wel voorraad bevat maar niet als fulfilmentlocatie actief is, lost geen order op.
Leg per carrier de vertaling vast:
label aangemaakt -> shipment_created
zending aangenomen -> handed_to_carrier
onderweg -> in_transit
bezorgd -> delivered
uitzondering -> carrier_exception
retour ontvangen -> returned_to_warehouse
Als je Sendcloud gebruikt, controleer dan welke accountcontracten, verzendregels, trackingmeldingen en retourlabels aan de nieuwe partij gekoppeld zijn. De actuele Sendcloud-pagina, gecontroleerd op 14 oktober 2026, noemt onder meer orderimport, tracking-API, retour-API, retourregels en meerdere vervoerders. Dat maakt Sendcloud een bruikbare carrierlaag, maar het neemt de voorraad- of orderbronhouder niet over. Op de gratis laag betaal je per label; de getoonde starttoeslag is €0,10 per label, met vermelde starttarieven zoals €7,20 voor PostNL Standaard, €6,12 voor DHLForYou Drop off en €6,09 voor DPD Home. Dezelfde pagina waarschuwt dat werkelijke kosten per contract en zending kunnen verschillen.
6. Kies een korte, expliciete cutoverfreeze
Plan een venster waarin nieuwe orders nog binnenkomen, maar niet ongemerkt twee fulfilmentpartijen kunnen bereiken. Zet de route in deze volgorde:
De freeze betekent niet per se dat je winkel offline gaat. Het betekent dat je de orderroute beheerst. Gebruik desnoods een tijdelijke bufferstatus, maar geef geen order vrij aan de nieuwe partij voordat de SKU, locatie, hoeveelheid en klantbelofte teruggelezen zijn.
7. Verplaats fysieke voorraad met ontvangstbewijs
Laat de oude partij per zending een paklijst maken met pallet-ID, doos-ID, SKU, eenheid, aantal en schade. Laat de nieuwe partij elke zending scannen en terugmelden met een ontvangst-ID. Fotografeer pallets die afwijken en laat beide partijen dezelfde telstaat ondertekenen.
Boek onderweg zijnde voorraad niet tegelijk als verkoopbaar bij beide locaties. Kies één tussenstatus, bijvoorbeeld in_transfer. Publiceer die hoeveelheid niet als beschikbare voorraad. De nieuwe partij maakt haar pas verkoopbaar na ontvangst, telling en vrijgave.
Houd de beloofde voorraad conservatief tijdens het transport. De gids over voorraad vast in een magazijn van een ander is relevant zodra een oude partij goederen niet direct vrijgeeft: controleer contract, uitslagafspraak en bewijs van ontvangst voordat je een escalatie mengt met een voorraadcorrectie.
8. Verplaats open orders met read-back
Voor iedere order in de bak overzetten doe je steeds dezelfde vier acties:
- lees de actuele fulfilmentorder opnieuw;
- controleer dat zij nog open is, geen hold heeft en nog niet deels is uitgevoerd;
- wijs de resterende regels toe aan de nieuwe locatie of dien de afgesproken fulfilmentrequest in;
- lees de nieuwe fulfilmentorder, locatie, hoeveelheid en requeststatus opnieuw terug.
Shopify's fulfillmentOrderMove vereist de juiste write-scope en kan niet verplaatsen wanneer de order gesloten is, al voortgang heeft, de nieuwe locatie het artikel niet voert of de requeststatus SUBMITTED, ACCEPTED, CANCELLATION_REQUESTED of CANCELLATION_REJECTED is. In dat laatste geval moet eerst de annuleringsroute met de fulfilmentpartij worden afgehandeld. De mutation retourneert zowel de verplaatste als de oorspronkelijke fulfilmentorder en eventuele user errors.
Maak een read-backrecord met minimaal:
{
"order_id": "#10482",
"fulfillment_order_before": "gid://shopify/FulfillmentOrder/old",
"fulfillment_order_after": "gid://shopify/FulfillmentOrder/new",
"location_after": "new_3pl",
"remaining_quantity": 3,
"request_status": "SUBMITTED",
"read_back_at": "2026-10-14T09:18:00+02:00"
}
Een geslaagde API-respons is niet hetzelfde als een geslaagde handoff. Het nieuwe WMS moet de order kunnen zien, de juiste regels kunnen picken en de gekozen carrier kunnen aanspreken.
9. Draai proeforders en geef in ringen vrij
Begin met één interne order, daarna vijf echte orders met lage complexiteit, daarna een ring met verschillende landen, betaalmethoden, zendingstypen en productcombinaties. Laat een proeforder echt door pick, pack, label, carrieracceptatie en tracking lopen. Controleer dat de klantmail niet al verzonden zegt voordat de carrier een zending heeft aangenomen.
De vrijgavecriteria zijn:
- iedere proeforder is op de nieuwe locatie terug te vinden;
- SKU en aantal in WMS, Shopify en de pakbon zijn gelijk;
- trackingnummer, carrier en servicecode komen terug in de order;
- de klantbelofte blijft haalbaar of is aantoonbaar aangepast;
- retourlabel en retouradres wijzen naar de nieuwe route;
- voorraad daalt één keer bij de juiste gebeurtenis;
- dubbele webhook of timeout maakt geen tweede fulfilment;
- open uitzonderingen hebben een eigenaar en een geplande actie.
Zet een volgende ring pas aan na menselijke vrijgave van de vorige. Een groen percentage zonder dossier voor de afwijkingen is geen groen licht.
10. Sluit de oude partij pas na de eerste retourcyclus
Maak na de cutover dagelijks een verschilrapport voor orders, voorraad, tracking en retouren. Bewaar een apart overzicht van retouren die vóór de wissel zijn aangevraagd, maar na de wissel aankomen. De oude partij mag zo'n pakket niet stil terugboeken naar haar eigen voorraad als de nieuwe partij de retour inmiddels bezit.
Een retourproces bestaat uit ontvangst, inspectie, bestemming en daarna refund, ruiling of credit. J&J Global Fulfilment beschrijft dit proces in een artikel dat op 5 oktober 2026 is bijgewerkt en maakt terecht onderscheid tussen jouw commerciële retourbeleid en de operationele uitvoering door de 3PL. Plan retouren daarom als eigen werkstroom met een retourautorisatie, inspectieklasse en voorraadbestemming.
Sluit de oude partij pas af wanneer alle open fulfilmentorders een eindstatus hebben, de eerste retouren zijn gematcht, de carrierclaims zijn toegewezen, de voorraadverschillen zijn verklaard en je de export en logs hebt ontvangen die je contract belooft.
Valkuilen die op verhuisdag duur worden
De meeste fouten ontstaan niet door een ontbrekende API-call, maar door een verkeerde grens tussen twee systemen.
| Valkuil | Wat er werkelijk misgaat | Mitigatie |
|---|---|---|
Alleen on hand overzetten | Gereserveerde, beschadigde en retourvoorraad wordt verkoopbaar | Splits fysieke, committed, unavailable, retour en in-transfer voorraad |
| Beide partijen blijven schrijven | Een order of voorraadmutatie krijgt twee eigenaars | Zet één route per recordtype actief en maak de andere alleen-lezen |
| Open order als één geheel verplaatsen | Een gedeeltelijke levering of hold raakt kwijt | Verplaats fulfilmentorderregels en lees de nieuwe status terug |
| Een geaccepteerde request verplaatsen | Shopify blokkeert de locatie of beide partijen gaan leveren | Annuleringsrequest laten accepteren, daarna opnieuw toewijzen |
| Webhooks als volgorde behandelen | Een late status zet een nieuwere fulfilment terug | Gebruik event-ID, updated_at, idempotentie en periodieke reconciliatie |
| Label is gelijk aan verzending | De klant krijgt tracking voordat de carrier het pakket heeft | Maak carrieracceptatie een afzonderlijke status |
| Retouradres vergeten | Nieuwe retouren komen bij het oude magazijn binnen | Test retourlabel, portal, ontvangst, inspectie en refund samen |
| Contract alleen op opslag lezen | Data-export, uitslag, claims of bewaartermijnen ontbreken | Controleer opzegging, exitlijst, retentierecht, bewijs en laatste factuur |
Let op de contractuele exit. De Physical Distribution Conditions van evofenedex, de LSV 2014, vermelden een retentierecht op goederen en documenten en een beperking van claimtermijnen. Dat modelcontract is geen automatisch oordeel over jouw situatie en jouw getekende overeenkomst kan afwijken. Het is wel een reden om de uitslagvoorwaarden, betalingsgeschillen, voorraadlijst en claimtermijn vóór de verhuisdag met een jurist of contracteigenaar te controleren. De geraadpleegde versie is op 14 oktober 2026 bekeken. De voorwaarden laten zien waarom een fysieke overdracht ook een contractuele overdracht is.
Beslis-kader: welke aanpak past bij jouw cutover?
De keuze gaat niet over welke tool de mooiste workflow heeft. Ze gaat over hoeveel beslissingen, bronnen en herstelpaden je moet beheersen.
Kies een native 3PL-koppeling als de route eenvoudig blijft
Een native Shopify-app of een door de nieuwe 3PL onderhouden koppeling past wanneer je één webshop, één voorraadlocatie, één fulfilmentpartij en weinig uitzonderingen hebt. Open orders kunnen via de standaardroute door, retouren hebben één bestemming en de partij kan aantoonbaar SKU, tracking en voorraad terugmelden.
Vraag vóór akkoord drie dingen op: welk Shopify-object de app beheert, hoe open orders worden overgenomen en hoe je historische events opnieuw kunt ophalen. Een vinkje bij Shopify-integratie zegt niet of retouren, gedeeltelijke leveringen en locatieverplaatsing zijn inbegrepen.
Kies een workflowlaag als je vooral wilt orkestreren
n8n of Make is geschikt wanneer je APIs wilt aanroepen, mappings wilt transformeren, meldingen wilt sturen en uitzonderingen naar een queue wilt brengen. Laat de zakelijke nulstand en reconciliatie niet uitsluitend in de workflowtool leven.
n8n Cloud Starter kost op 14 oktober 2026 €20 per maand bij jaarlijkse betaling voor 2.500 workflowuitvoeringen met onbeperkte stappen. Pro kost €50 per maand bij jaarlijkse betaling voor 10.000 uitvoeringen. De gratis self-hosted Community Edition blijft beschikbaar, maar functies zoals omgevingen, externe secrets, projecten en Git-versiebeheer ontbreken daar. Make rekent sinds 27 augustus 2026 met credits per actie; het gratis plan bevat 1.000 credits per maand en een webhookwachtrij. Deze prijzen en productdetails zijn op 14 oktober 2026 gecontroleerd.
Kies deze route dus als de flow middelcomplex is en iemand de uitvoering kan beheren. Zet voor geld, voorraadcorrecties en fulfilmentvrijgave een aparte registratie en menselijke stap naast de workflow.
Kies maatwerk als de handoff zelf bedrijfskritisch is
Maatwerk past wanneer meerdere verkoopkanalen, WMS'en, PSP's of landen samenkomen, wanneer open orders gesplitst zijn, of wanneer één fout direct een voorraadtekort, dubbele zending of verkeerde refund kan veroorzaken. Dan bouw je een adapter met versioned mappings, idempotentie, read-back, auditlog, retry, foutqueue en vrijgave.
Dat is geen automatiseringsversiering. Het is de laag die de orderidentiteit bewaart terwijl de fulfilmentpartij wisselt. Een bestaande koppeling kan prima blijven voor de standaardroute, terwijl maatwerk alleen de cutover, reconciliatie en uitzonderingen beheert.
Hoeveel systemen en fulfilmentlocaties moet je tegelijk beheersen?
Het eerlijke antwoord kan dus ook native zijn. Zodra je meerdere bronhouders, gesplitste fulfilmentorders en onomkeerbare acties combineert, is een losse workflow geen controlelaag meer.
Uitgewerkt voorbeeld: Shopify, n8n, Sendcloud en een nieuwe 3PL
Stel: een Nederlandse webshop verkoopt 2.400 SKU's via Shopify. De oude 3PL verwerkt gemiddeld 780 orders per week. De nieuwe partij heeft een eigen WMS en gebruikt Sendcloud voor PostNL, DHLForYou en DPD. n8n orkestreert de API-aanroepen. De webshop wil op woensdag 14 oktober om 09:00 uur overschakelen.
De nulstand om 08:00 uur
De eigenaar maakt dossier CUT-2026-10-14-001. De voorraadexport bevat 4.320 verkoopbare eenheden, 286 gecommitteerde eenheden in open orders, 74 eenheden in schade of kwaliteitscontrole en 160 eenheden in inkomende transfers. Die laatste groep verhuist niet mee als verkoopbare voorraad.
Voor SKU P-400 staat het oude WMS op 86 fysiek, 27 gecommitteerd en 4 beschadigd. De telploeg vindt 84 verkoopbare eenheden en twee beschadigde eenheden. Het transferbestand bevat dus 84, niet 86. Shopify blijft de 27 open orderregels als Committed tonen totdat de fulfilmentorders zijn afgehandeld.
De 86 open orders worden verdeeld:
- 19 orders zijn al gepickt of verpakt en blijven bij de oude partij;
- 61 orders zijn open en gaan naar de nieuwe partij;
- 6 orders hebben een adreswijziging, gedeeltelijke refund of retour en krijgen menselijke controle.
De laatste oude order is die vóór 08:45 uur. Nieuwe orders blijven binnenkomen, maar de orderrouter zet ze vanaf 09:00 uur alleen op de nieuwe locatie. De 61 open orders worden niet als één bulkbestand ingeschoten. Elke fulfilmentorder krijgt een read-back.
Eén order door de nieuwe route
Order #10482 bevat twee stuks P-400 en één K-210. De P-400-regel staat in Shopify als open fulfilmentorder op de oude locatie. Er is geen hold, geen fulfilment en de nieuwe locatie voert beide SKU's.
n8n leest de fulfilmentorder, controleert de actuele requeststatus en vraagt een verplaatsing aan. Shopify retourneert een nieuwe fulfilmentorder-ID met status OPEN. n8n slaat de oude en nieuwe ID, de drie resterende eenheden en de locatie op. Daarna ontvangt het nieuwe WMS de order, maakt via Sendcloud een PostNL-label aan en wacht op de carrieracceptatie.
De carrierterugmelding bevat de Sendcloud-zending-ID, trackingcode, gekozen vervoerder en tijdstip. Pas daarna schrijft de adapter tracking terug naar Shopify en mag de klantmail verzonden worden. Een tweede webhook voor dezelfde zending vindt dezelfde event-ID en voert geen tweede fulfilment uit.
De retour op vrijdag
De klant van #10482 meldt één P-400 retour. De retourautorisatie wijst naar de nieuwe locatie. Het pakket komt binnen in de retourzone, wordt tegen de oorspronkelijke orderregel gescand en krijgt de toestand ongeopend, restock. Het WMS maakt één eenheid verkoopbaar. De refund blijft gekoppeld aan de PSP-transactie, niet aan de voorraadmutatie. De reconciliatie toont daarna: twee stuks geleverd, één stuk retour ontvangen, één refund en één extra verkoopbare eenheid.
De vrijgave
De cutover-eigenaar geeft de volgende ring pas vrij nadat alle 61 orders een nieuwe fulfilmenteigenaar hebben, de telstaat op nul verklaarde verschillen na sluit, en de eerste tien zendingen carriertracking teruglezen. De zes uitzonderingen blijven in de queue. Dat is geen mislukking. Het is precies de reden dat de queue bestaat.
Vergelijkingstabel: wat koop of bouw je werkelijk?
De prijzen hieronder zijn gecontroleerd op 14 oktober 2026. De fulfilmentpartij zelf werkt meestal met een offerte voor opslag, pick-pack, retouren en onboarding. De bedragen in de tabel zijn dus de software- of carrierlaag, niet de volledige logistieke rekening.
| Aanpak | Actuele prijsindicatie | Past bij | Sterk punt | Breekpunt bij een cutover |
|---|---|---|---|---|
| Native 3PL-app voor Shopify | Meestal inbegrepen bij de 3PL-offerte; providerprijs op aanvraag | Eén webshop, één locatie, standaardorders | Snelste ingebruikname en beheer bij de provider | Onvoldoende zicht op open orders, retouren of read-back |
| n8n Cloud Starter of Pro | €20 per maand voor 2.500 uitvoeringen, of €50 voor 10.000, jaarlijks gefactureerd | Middelcomplexe orkestratie | Onbeperkte stappen per uitvoering, HTTP en webhookroutes | Workflowhistorie is geen zelfstandig reconciliatiedossier |
| n8n Community Edition self-hosted | €0 licentie, infrastructuur en beheer apart | Technisch team met self-hosted voorkeur | Veel controle en geen prijs per uitvoering | Geen ingebouwde omgevingen, projecten en externe secrets in de gratis editie |
| Make Free of betaald | €0 met 1.000 credits per maand; betaalde plannen gebruiken credits per actie | Kleine tot middelgrote scenario's | Snel mappen, routeren en meldingen bouwen | Credits, wachtrij en scenariofouten kunnen een kritieke handoff verbergen |
| Sendcloud als carrierlaag | Gratis plan plus €0,10 per label; betaalde lagen tonen lagere labeltoeslagen en meer functies | Meerdere vervoerders, tracking en retourlabels | Carrierkeuze, label, tracking-API en retour-API in één laag | Het is geen bronhouder voor je voorraad of orderbezit |
| Eigen maatwerkadapter | Ontwikkel- en beheerkosten op offerte, plus hosting | Meerdere bronnen, hoge foutkosten en auditplicht | Precieze mapping, idempotentie, read-back en vrijgave | Duurder om te starten en je moet eigenaarschap voor onderhoud regelen |
Een native app is dus niet automatisch goedkoop als je later alsnog open orders, retouren en uitzonderingen handmatig moet herstellen. De goedkope keuze is de keuze die de volledige handoff aantoonbaar maakt.
Een fulfilmentpartij wisselen lukt pas echt wanneer voorraad, orderbezit en klantbelofte weer naar dezelfde werkelijkheid wijzen. Dozen kunnen onderweg zijn, een webhook kan te laat komen en een retour kan dagen later arriveren. De rustige, controleerbare handoff wint daarom van de snelle verhuisdag: eerst bewijs, dan vrijgave.
Veelgestelde vragen
Fulfilment zonder breuk
Ik denk mee over je voorraadnulstand, orderhandoff en retourroute en ontwerp daarna de koppeling die het hele proces controleerbaar maakt. Ik kan ook de integratie en vrijgavelaag end-to-end realiseren.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
