Magento 2 + Monta — fulfilment koppeling
Terug naar blog

Magento 2 + Monta — fulfilment koppeling

AuthorRuthger Idema
29 juli 20269 min leestijd

Magento 2 koppelen aan Monta voor fulfilment: hoe de orderflow, voorraadsync, track&trace en foutafhandeling technisch werken — en wanneer 3PL via Monta loont.

Magento 2 + Monta — fulfilment koppeling

Vanaf 500 orders per maand wordt zelf pakjes inpakken een bottleneck. Je betaalt medewerkers voor werk dat niets toevoegt aan je marge, je maakt fouten bij pieken, en je hebt schapruimte nodig die geld kost. Monta lost dat op als fulfilment- en WMS-partner. De koppeling met Magento 2 is technisch goed uitvoerbaar — maar er zitten een paar valkuilen in de orderflow die we hieronder uitleggen.

Wij zien bij klanten dat de integratie in de meeste gevallen via de officiële Monta API loopt. Monta biedt een REST API met endpoints voor orders, voorraad en retouren. Magento 2 heeft van zichzelf geen native Monta-module, dus je bouwt ofwel een custom module, ofwel je gebruikt een tussenliggende connector zoals een iPaaS-platform of een bestaande Magento-extensie. Dit artikel behandelt hoe die Magento 2 Monta koppeling technisch werkt, wat de valkuilen zijn, en wanneer uitbesteden aan Monta überhaupt de moeite waard is.


Hoe de orderflow werkt

De basis is simpel: een order in Magento 2 triggert een push naar Monta. Monta verwerkt de order, pakt in, en geeft statussen en track&trace terug. In de praktijk zit hier meer nuance in.

Stap 1 — Order aanmaken in Monta

Zodra een order in Magento de status processing krijgt (na betaalbevestiging), stuur je die via de Monta API door. Het endpoint is POST /orders. Je stuurt minimaal: orderreferentie, afleveradres, en de orderregels met SKU's en aantallen.

php
// Voorbeeld: Monta order aanmaken vanuit Magento 2 Observer
public function execute(Observer $observer): void
{
    $order = $observer->getEvent()->getOrder();

    if ($order->getStatus() !== 'processing') {
        return;
    }

    $payload = [
        'WebshopOrderId' => $order->getIncrementId(),
        'DeliveryAddress' => [
            'Name'        => $order->getShippingAddress()->getName(),
            'Street'      => $order->getShippingAddress()->getStreetLine(1),
            'HouseNumber' => $order->getShippingAddress()->getStreetLine(2),
            'ZipCode'     => $order->getShippingAddress()->getPostcode(),
            'City'        => $order->getShippingAddress()->getCity(),
            'CountryCode' => $order->getShippingAddress()->getCountryId(),
        ],
        'Lines' => $this->buildOrderLines($order->getItems()),
    ];

    $this->montaClient->createOrder($payload);
}

Let op: Monta verwacht een huisnummer als apart veld. Magento slaat dat op in street_line_2 als de klant het netjes invoert, maar dat is niet gegarandeerd. Je hebt een straat-parser nodig die huisnummer splitst van de straatnaam.

Stap 2 — Bevestiging en idempotentie

Stuur orders idempotent. Als de API-call mislukt of een timeout geeft, wil je dezelfde order opnieuw kunnen sturen zonder dat Monta hem dubbel aanmaakt. Gebruik WebshopOrderId (het increment_id van Magento) als idempotentiesleutel. Monta retourneert een fout als de order al bestaat, die je dan kunt negeren.

Stap 3 — Verzendmethode meesturen

Monta ondersteunt meerdere vervoerders (PostNL, DHL, DPD). Stuur de gewenste shipping method mee in de order payload. In Magento koppel je de shipping method code aan een Monta carrier code. Zo weet Monta welk label het moet printen. Mis je deze mapping, dan pakt Monta de default carrier — wat niet altijd is wat je klant verwacht.


Voorraadsynchronisatie

Voorraad syncen is het onderdeel dat het meeste mis kan gaan. Monta beheert de fysieke voorraad; Magento toont wat er beschikbaar is. Die twee moeten kloppen.

Pull-strategie vs. webhook

Je hebt twee opties:

AanpakVoordelenNadelen
Polling (pull)Simpel te implementeren, geen endpoint nodigVertraging (15-60 min), hogere API-belasting
Webhook (push)Real-time updates, minder API-callsVereist publiek endpoint in Magento, retry-logica nodig
HybrideWebhook voor mutaties, poll als fallbackMeer complexiteit, meest betrouwbaar

In de praktijk werkt een hybride aanpak het best. Monta kan voorraadwijzigingen pushen via webhooks. Magento ontvangt die, valideert de handtekening, en werkt de cataloginventory_stock_item-tabel bij. Draai naast de webhooks dagelijks een volledige reconciliatie via polling. Zo vang je gemiste events op.

Houd rekening met de frequentie. Bij hoog ordervolume kunnen er tientallen voorraadmutaties per minuut zijn. Verwerk die asynchroon en batch meerdere updates samen voordat je de Magento-database schrijft. Anders maak je de database tot bottleneck.

Magento multi-source inventory

Gebruik je MSI (Multi Source Inventory) in Magento 2.4+, dan wijs je de Monta-source toe aan één specifieke bron. Zorg dat die bron gekoppeld is aan de juiste stock en saleskanalen. Een veelgemaakte fout is dat de webhook de default source bijwerkt terwijl de webshop een andere source gebruikt — dan blijft de voorraad op nul terwijl Monta wél aantallen heeft.


Statusupdates en track&trace

Monta stuurt statusupdates terug naar Magento zodra een order verwerkt is. De drie relevante statusovergangen:

  1. Order geaccepteerd — Monta heeft de order ontvangen en ingepland.
  2. Order verzonden — Pakket is overhandigd aan de vervoerder, track&trace code beschikbaar.
  3. Order geretourneerd — Retoursendingen worden verwerkt, voorraad gecrediteerd.

Voor track&trace gebruik je de POST /shipments/create webhook van Monta (of je pollt GET /orders/{id}). Verwerk het tracking-nummer in Magento als shipment inclusief track:

php
$track = $this->trackFactory->create();
$track->setNumber($trackingCode);
$track->setCarrierCode($carrierCode); // bijv. 'postnl'
$track->setTitle('PostNL');

$shipment->addTrack($track);
$this->shipmentRepository->save($shipment);

// Stuur de bevestigingsmail met tracking naar de klant
$this->shipmentNotifier->notify($shipment);

Wij zien bij klanten dat de transactiemail met track&trace voor een flink deel van de klantenservice-vragen zorgt als die uitblijft. Zorg dat de notify altijd afgaat zodra je het trackingnummer hebt.


Foutafhandeling en monitoring

Integraties gaan kapot. Een API is traag, Monta is in onderhoud, of een order heeft een SKU die Monta niet kent. Je hebt een robuuste foutafhandeling nodig.

Minimale aanpak:
  • Log elke API-call met request, response en HTTP-statuscode.
  • Gebruik een queue (Magento's MessageQueue of een externe zoals RabbitMQ) voor het doorsturen van orders. Bij een fout: retry met exponential backoff.
  • Stuur een alert als een order langer dan 30 minuten in de queue staat.
  • Houd een dashboard bij van orders die niet zijn doorgezet — dit zijn de orders waar klanten op wachten.
Veelvoorkomende fouten:
FoutOorzaakOplossing
400 Unknown SKUProduct bestaat niet in Monta WMSSync producten naar Monta vóór orders live gaan
409 Order already existsDubbele API-callLoggen en negeren (idempotent)
503 Service UnavailableMonta in onderhoudRetry na 5-15 minuten, alert na 3 pogingen
TimeoutTrage responsAsync verwerken, niet synchroon in checkout

Verwerk orders nooit synchroon tijdens de checkout. Als de Monta API een timeout geeft terwijl de klant afrekent, heb je een probleem. Gebruik altijd een asynchrone queue.


Retouren afhandelen

Monta verwerkt retouren fysiek. De koppeling moet dat terugkoppelen naar Magento. Monta stuurt een webhook als een retour binnenkomt. Je verwerkt dat als een credit memo in Magento, inclusief voorraadcreditering.

In de praktijk is retourbeheer het meest complexe onderdeel. Klanten retourneren soms met verkeerde packing slip, met beschadigde producten, of meerdere orders tegelijk. Monta registreert de ontvangst, maar het besluit over terugbetaling neemt je zelf in Magento. Automatiseer alleen de standaardgevallen; uitzonderingen doe je handmatig.

Zet een duidelijk retourportaal in voor klanten. Zo weet Monta welke retour eraan komt en kan de afhandeling sneller. Monta biedt hier ook functionaliteit voor, maar de integratie met de klantervaring in Magento vraagt eigen werk.


Wanneer Monta loont — en wanneer niet

Dit is de eerlijke afweging. Monta uitbesteden kost geld. Zelf verzenden ook, maar anders.

Monta loont als:
  • Je meer dan 300-500 orders per maand verzendt.
  • Je pieken hebt (sale, Black Friday) die je intern niet kunt opvangen.
  • Je internationaal wilt uitbreiden — Monta heeft meerdere fulfillment-locaties.
  • Je geen magazijnruimte wilt huren of beheren.
  • Je team meer tijd moet besteden aan groei dan aan logistiek.
Monta loont NIET als:
  • Je onder de 200 orders per maand zit. De vaste kosten wegen dan niet op tegen de besparing.
  • Je producten verkoopt met veel maatwerk (personalisatie, handgeschreven kaartjes, specifieke verpakking) — dat regelt een standaard WMS lastig.
  • Je marges extreem krap zijn en fulfilment-fees de marge opsouperen.
  • Je producten bijzondere opslag vereisen (gekoeld, gevaarlijke stoffen) die Monta niet biedt.

Reken op opslagkosten, pickkosten per regel, verpakkingsmateriaal en verwerkingskosten per order. Vergelijk dat met je huidige interne kosten inclusief arbeid, huur en fouten. Wij zien bij klanten dat de break-even doorgaans ergens tussen 250 en 500 orders per maand ligt, afhankelijk van ordergrootte en productgewicht.

Een simpele rekensom: als je intern €3,50 per order kwijt bent aan arbeid en ruimte, en Monta rekent €2,80 per order all-in bij jouw volume — dan bespaar je 20% én schaal je gratis op tijdens piekmomenten. Als je maar 150 orders per maand verzendt en Monta een minimumbedrag per maand hanteert, draai je verlies. Maak die berekening voor je tekent.


Koppeling via extensie of maatwerk?

Er zijn Magento 2 extensies beschikbaar (via Magento Marketplace of direct bij integratiepartijen) die een standaard Monta-koppeling bieden. Die zijn sneller op te zetten maar minder flexibel.

Kies voor een bestaande extensie als:

  • Je een standaard B2C setup hebt zonder afwijkende orderflows.
  • Je snel live wilt, budget is beperkt.

Kies voor maatwerk als:

  • Je complexe orderflows hebt (B2B, abonnementen, deelzendingen).
  • Je eigen ERP of PIM integreert naast Magento.
  • Je specifieke eisen hebt aan de queue-architectuur of logging.

Bij Magento projecten met meerdere integraties bouwen wij doorgaans een centrale integration layer in Laravel. Die ontvangt events van Magento, orkestreert calls naar Monta, en stuurt statussen terug. Dat geeft meer controle dan een directe module-naar-API koppeling.


Veelgestelde vragen

Is er een officiële Magento 2 module voor Monta?

Er is geen officiële first-party module van Monta voor Magento 2. Er zijn third-party extensies beschikbaar. Monta biedt wel een goed gedocumenteerde REST API waarmee je een eigen koppeling kunt bouwen. Voor complexe shops is maatwerk vaak de betere keuze.

Hoe lang duurt het om de koppeling te bouwen?

Een basiskoppeling (orders doorsturen, track&trace terug) bouw je in twee tot vier daagse. Een volledige koppeling inclusief voorraadsync, retouren, foutafhandeling en monitoring reken je op twee tot drie weken ontwikkeltijd. Dat hangt af van de complexiteit van je orderflows en de bestaande Magento-architectuur.

Wat als Monta's API tijdelijk niet beschikbaar is?

Gebruik een queue. Orders die niet door kunnen worden in een wachtrij geplaatst en automatisch opnieuw verzonden zodra de API weer bereikbaar is. Zonder queue riskeer je orders die nooit bij Monta aankomen — die klanten worden niet bediend.

Werkt de Monta-koppeling ook met Magento multi-store of B2B?

Ja, maar het vraagt extra configuratie. Bij multi-store wil je per store view kunnen instellen welke Monta-webshop (je kunt meerdere webshops in Monta registreren) de orders ontvangt. Bij B2B-orders houd je rekening met afwijkende facturatie, creditlimieten en leveradressen per account. Dat vraagt om maatwerk in de koppelingslogica.


Wil je weten of een Monta-koppeling past bij jouw Magento 2 setup, of zoek je een team dat dit technisch voor je uitvoert? Neem contact op — we kijken graag mee naar je huidige architectuur.

Ruthger Idema

Geschreven door Ruthger Idema

15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.

Meer over ons team →
Deel dit artikel:

Wil je jouw e-commerce naar het volgende niveau?

Plan een vrijblijvend gesprek met onze experts over Magento, Shopify of Laravel maatwerk.

Plan een Tech Check