Naar de inhoud
SyncMyShop

Systemen

Mplus koppeling met je webshop: MplusKASSA en webshop op dezelfde voorraad

Een Mplus koppeling haalt artikelen en vrije voorraad per filiaal uit MplusKASSA naar je webshop en zet webshoporders als order in de kassa. De API is SOAP met een WSDL, werkt met syncMarkers die bij elke wijziging één ophogen, en rekent prijzen in centen. Toegang loopt via het partnerprogramma van Mplus.

Wat is MplusKASSA en wie gebruikt het?

MplusKASSA is een kassasysteem van Mplus Software uit Leeuwarden, voor retail en horeca. De versie waar de API op draait heet Q-line. Mplus brengt elke 1 tot 2 maanden een nieuwe hoofdversie van Q-line uit en zegt zelf dat het geen software-as-a-service is: niet elke klant draait dezelfde versie. De kassadatabase staat bij een deel van de klanten op een gehoste server en bij een ander deel lokaal op de kassa in de winkel.

Voor een webshop is dat verschil belangrijk. Mplus houdt per filiaal de voorraad bij, kent orders naast kassabonnen en heeft artikelen met kleur en maat. Een winkelier met een webshop wil dat een online verkoop de winkelvoorraad verlaagt en dat de webshop niet verkoopt wat in de winkel al over de toonbank ging.

Wat je met MplusKASSA koppelt

MplusKASSA is leidend voor artikelen, prijzen en voorraad. De webshop is leidend voor de online order.

Stroom Richting API-functie
Artikelen, kleur en maat Mplus naar webshop getProducts met syncMarker
Vrije voorraad per filiaal Mplus naar webshop getStock met stockId
Webshoporders webshop naar Mplus createOrder, later payOrder en deliverOrder
Klanten webshop naar Mplus relaties
Facturen en kassabonnen Mplus naar boekhouding getInvoices, getReceipts

Een webshoporder gaat Mplus in met een extOrderId. Die waarde is uniek en kan niet opnieuw gebruikt worden, en met findOrder vind je de order er later op terug. Een order heeft in Mplus altijd een relatie nodig, dus de koppeling zoekt of maakt eerst de klant. De extOrderId is de sleutel tegen dubbele orders: probeert de koppeling een order na een time-out opnieuw, dan zoekt hij eerst op extOrderId of de order er al staat.

Hoe MplusKASSA data vrijgeeft

SOAP, ident en secret

De API van Mplus is gebaseerd op SOAP. Achter het API-adres van een klant staat met ?wsdl het WSDL-bestand en met ?docs een leesbare lijst van alle functies voor de versie van die klant. Verbindingen lopen alleen over HTTPS. Inloggen gaat met twee parameters in de URL, ident en secret; vanaf versie 43.1.1 kan het ook met HTTP Basic Authentication in de header. Mplus levert daarnaast een PHP-clientbibliotheek.

Toegang krijg je via het partnerprogramma. Na acceptatie heeft de ontwikkelaar een eigen ontwikkeladministratie met API-gegevens. Mplus vraagt bij een koppeling voor een bestaande klant te controleren dat die op Q-line draait. Een rate limit noemen de ontwikkelaarspagina's die wij lazen niet (bekeken op 3 oktober 2026); we noemen dus geen getal.

syncMarkers in plaats van webhooks

Elke wijziging aan een artikel, relatie, order, factuur of kassabon hoogt een teller op: de syncMarker. Elk type heeft zijn eigen reeks. De koppeling bewaart de hoogste waarde die hij verwerkt heeft en vraagt de volgende keer alles vanaf die waarde plus één. Voor voorraad werkt stockId op dezelfde manier; die verschuift bij een verkoop en bij elke order, factuur, inkooporder of ontvangst. getCurrentSyncMarkers geeft de hoogste waarde per type, zodat de koppeling ziet of er iets te halen valt.

Een ronde geeft standaard 1.000 records. Met syncMarkerLimit kan dat tot 10.000. Een eerste keer inlezen van 25.000 artikelen kost bij de standaard 25 aanroepen, bij 10.000 per keer 3. Daarna komen alleen de wijzigingen mee. De webhooks van Mplus zijn er voor iets anders: gebeurtenissen aan de kassa zelf, zoals een gescande code of een betaling die begint.

Een WooCommerce-order omzetten naar createOrder in MplusKASSA De koppeling zet de prijs van 19,95 om naar 1995 cent, maakt van het ordernummer een unieke extOrderId, zet de verzendkosten van 4,95 als eigen orderregel van 495 cent en vertaalt de btw-klasse naar een btw-code van Mplus. WooCommerce MplusKASSA createOrder number 1359 line_items[].price 19.95 line_items[].quantity 2 line_items[].tax_class (standaard) 21% in Nederland shipping_total 4.95 extOrderId WEB-1359 uniek, nooit hergebruikt data.price 1995 altijd in centen data.quantity 2 data.vatCode 2 code uit Mplus, geen percentage regel artikel 999 495 verzendkosten als orderregel prefix WEB- x 100 vertaaltabel x 100
Vijf velden van een webshoporder en hun omzetting naar een order in MplusKASSA.

Waar het bij MplusKASSA op vastloopt

Centen, decimalen en btw-codes

Mplus geeft prijzen altijd in centen: 19,95 is 1995. Aantallen zijn gehele getallen met een veld decimalPlaces, dus 0,530 kilo is 530 met 3 decimalen. Een webshop werkt met 19.95 en met aantallen als getal. Een koppeling die de factor 100 op één plek vergeet, zet een jas van 19,95 als 1.995,00 of als 0,20 in de kassa. Daarom rekent de koppeling op één plek om en vergelijkt hij bij elke order het ordertotaal in beide systemen.

De btw gaat als vatCode mee, een code uit Mplus, en niet als percentage. Een order heeft daarnaast een vatMethod: inclusief, exclusief of verlegd (VAT-METHOD-SHIFTED). Een B2C-webshop rekent inclusief btw; een zakelijke order naar een ander EU-land kan verlegd zijn. Een regel van 100,00 exclusief btw die als inclusief binnenkomt, wordt 100,00 in plaats van 121,00. Zie bedragen en btw mappen.

Zo ziet de order uit de figuur eruit, met de veldnamen van createOrder als JSON weergegeven; de API zelf verwacht SOAP:

{
  "extOrderId": "WEB-1359",
  "entryBranchNumber": 1,
  "relationNumber": 20417,
  "vatMethod": "VAT-METHOD-INCLUSIVE",
  "lineList": [
    { "articleNumber": 10482,
      "data": { "quantity": 2, "price": 1995, "vatCode": 2 } },
    { "articleNumber": 999,
      "data": { "quantity": 1, "price": 495, "vatCode": 2 } }
  ]
}

Vrije voorraad en een kassa die uit staat

getStock geeft per artikel en filiaal drie getallen:

Veld Betekenis volgens Mplus In de webshop
amountFree wat veilig verkocht kan worden voorraad, min een eventuele buffer
amountReserved vast in niet-geleverde orders telt niet mee
amountIncoming onderweg via inkooporders eventueel als verwachte levering

Bij een artikel met 10 vrij en een buffer van 2 toont de webshop 8. Bijwerken kan relatief met updateStock (min 3) of absoluut met setStock. Een webshoporder hoort als order binnen te komen en niet als voorraadcorrectie, zodat hij in Mplus als verkoop te volgen is.

Staat de database lokaal op de kassa en wordt die 's avonds uitgezet, dan antwoordt de API dat hij de database niet kan bereiken. Na een update van de kassa kan de API een tijd melden dat de database te nieuw is; een API die Mplus host werkt zichzelf binnen 15 minuten bij. In beide gevallen blijven webshoporders in de wachtrij van de koppeling staan tot Mplus weer antwoordt. Zie wat gebeurt er als een koppeling uitvalt.

Product en artikel

In Mplus groepeert een product de artikelen. Een shirt in 3 kleuren en 4 maten is één product met 12 artikelen, elk met eigen articleNumber, barcode, colour en size. In de webshop is het product het artikel en zijn de 12 de varianten. De koppeling gebruikt het artikelnummer of de barcode als sleutel per variant. Zie varianten.

Platformen die we aan MplusKASSA koppelen

Per combinatie zijn er nog geen eigen pagina's. De webshopkant staat per platform beschreven: WooCommerce koppeling, Shopify koppeling, Magento koppeling en CCV Shop koppeling. Andere kassasystemen: Lightspeed Kassa koppeling en SW-Retail koppeling. Het overzicht van de voorraadstromen staat op voorraad koppelen.

Wij bouwen de koppeling voor een vaste prijs en hosten, draaien en bewaken hem daarna voor een vast bedrag per maand. Voor de livegang draait hij als dry run: je ziet per webshoporder welke regels, centen en btw-codes in Mplus zouden landen, zonder dat er een order ontstaat. Vertel welke Mplus-versie en welke webshop je hebt, dan hoor je wat er via de API kan.

Veelgestelde vragen

Hoe krijg je toegang tot de API van MplusKASSA?

Via het partnerprogramma van Mplus. Na acceptatie krijgt de ontwikkelaar een Q-line-licentie, een ontwikkeladministratie en API-gegevens. Voor een koppeling bij een bestaande klant vraagt Mplus te controleren dat die klant de Q-line-versie gebruikt. Daarna levert Mplus per klant een API-adres met een ident en een secret.

Heeft MplusKASSA webhooks voor voorraadwijzigingen?

De webhooks van Mplus zijn gebeurtenissen aan de kassa: een sessie start, een code wordt gescand, een betaling begint. Ze zijn bedoeld om de kassa uit te breiden, bijvoorbeeld met vouchers. Voor voorraad, artikelen en orders werkt de koppeling met syncMarkers en stockId: hij vraagt per ronde alleen op wat sinds de vorige keer veranderd is.

Waarom ziet de webshop soms een uur lang geen nieuwe voorraad?

Vaak omdat de database op de kassa in de winkel staat en die kassa uit is. De API haalt zijn gegevens uit de kassadatabase; staat die lokaal en is de kassa uitgezet, dan antwoordt de API dat hij de database niet bereikt. De koppeling probeert het later opnieuw en meldt het als het langer duurt dan afgesproken. Een gehoste database lost dit op; dat regel je via je Mplus-dealer.

Kan de koppeling ook gewichtsartikelen aan, zoals vlees of kaas per kilo?

Ja. Mplus geeft aantallen als geheel getal met een veld decimalPlaces: 0,530 kilo gaat over als 530 met 3 decimalen. De webshop moet het artikel dan per kilo of per 100 gram verkopen, en de koppeling rekent het aantal om. Zie eenheden en verpakkingen.

Werkt het met meerdere filialen?

Ja. Voorraad haal je per filiaal op met het filiaalnummer, en een order krijgt een entryBranchNumber. De koppeling legt vast welke filialen meetellen voor de webshop en in welk filiaal de webshoporder binnenkomt. Zie meerdere magazijnen.

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