Magento en Exact Online
Magento Exact Online koppeling
Prijslijsten uit Exact Online worden klantgroepen en tier prices in Magento, voorraad per magazijn landt op de juiste bron en artikelen worden simple en configurable products. Orders en nieuwe klanten gaan als verkooporder en debiteur naar Exact. Gebouwd op jouw Magento 2 of Adobe Commerce en jouw administratie, en daarna door ons gedraaid en bewaakt.
Wat je tussen Magento en Exact Online koppelt
Magento-shops op Exact Online zijn vaak B2B: groothandels met prijsafspraken per klant, staffels en meer dan één magazijn. Daarom loopt deze koppeling meestal op Exact Online Handel, en zijn prijzen de zwaarste stroom.
| Stroom | Richting | Magento 2 | Exact Online |
|---|---|---|---|
| Artikelen | naar Magento | POST /V1/products |
sync/Logistics/Items |
| Basisprijs | naar Magento | /V1/products/base-prices |
logistics/SalesItemPrices |
| Prijslijsten en staffels | naar Magento | /V1/products/tier-prices |
sales/SalesPriceList... |
| Aanbiedingsperiodes | naar Magento | /V1/products/special-price |
SalesPriceListPeriods |
| Voorraad per magazijn | naar Magento | /V1/inventory/source-items |
sync/Inventory/StockPositions |
| Orders | naar Exact | GET /V1/orders |
salesorder/SalesOrders |
| Klanten | naar Exact, klantgroep terug | customers, group_id |
crm/Accounts |
| Leveringen | naar Magento | POST /V1/order/{id}/ship |
salesorder/GoodsDeliveries |
De vier prijsresources van Exact (SalesPriceLists, SalesPriceListLinkedAccounts, SalesPriceListPeriods en SalesPriceListVolumeDiscounts) zijn alleen te lezen. Prijslijsten worden in Exact beheerd en gaan één kant op. Het increment_id van de Magento-order, bijvoorbeeld 000010482, gaat naar YourRef op de verkooporder. Het entity_id bewaart de koppeling zelf, om de levering later aan de goede order te hangen. De opzet in het algemeen staat op ERP koppeling met je webshop.
Welk systeem is leidend, per gegeven
| Gegeven | Leidend | Richting | Gedrag |
|---|---|---|---|
| Artikelcode, omschrijving, eenheid | Exact | naar Magento | via de sync op Timestamp |
| Attribuutset, teksten, afbeeldingen, categorieën | Magento of het PIM | blijft in Magento | niet overschreven |
| Prijslijst, staffels, aanbiedingen | Exact | naar Magento | nachtelijk, plus bij elke wijziging |
| Welke prijslijst bij welke klant | Exact | naar Magento als group_id |
uit SalesPriceListLinkedAccounts |
| Aantal per magazijn | Exact | naar de bron in Magento | alleen gewijzigde regels |
| Verkoopbare voorraad | Magento | berekend in Magento | bron min reserveringen |
| Order | Magento tot de import | naar Exact | één keer, YourRef als sleutel |
| Debiteur, adres, btw-nummer | Exact na aanmaken | eerste keer uit Magento | wijzigingen naar de controlelijst |
Wat Magento en Exact Online anders bewaren
Prijslijsten en klantgroepen
Hier passen de twee systemen goed op elkaar. In Exact hangt een debiteur aan hooguit één prijslijst tegelijk, en in Magento heeft een klant één group_id. Elke prijslijst wordt een klantgroep, en de koppeling zet elke gekoppelde debiteur in de juiste groep.
Het verschil zit in de regels. Een prijslijst in Exact is gebaseerd op artikelen (Entity 1) of op artikelgroepen (Entity 2). Een tier price in Magento hoort altijd bij één sku, customer_group, website_id en quantity. Een staffel op een artikelgroep moet dus worden uitgevouwen. De rekensom:
prijslijst GROOTHANDEL-A, artikelgroep Bevestiging
400 artikelen x 3 staffels (1, 50, 250 stuks) = 1.200 tier prices
12 prijslijsten met dezelfde opbouw = 14.400 tier prices
lezen uit Exact via de sync, 1.000 per pagina = 1 verzoek
schrijven naar Magento, 500 per verzoek (eigen keuze) = 29 verzoeken
Exact laat met EntryMethod zien of een staffel een korting is (1) of een nieuwe prijs (2). Een nieuwe prijs wordt een tier price met price_type fixed, een korting een tier price met price_type discount, een percentage. Bij een korting op de standaardprijs rekent Exact met de actuele verkoopprijs van het artikel, dus een gewijzigde basisprijs verandert ook de staffelprijs. De koppeling leest die mee.
Let op met de vervangaanroep. PUT /V1/products/tier-prices verwijdert alle bestaande tier prices van een product en zet alleen de meegestuurde terug. Wie per prijslijst een PUT stuurt, wist de tier prices van de andere klantgroepen op dat product. De koppeling schrijft met POST en verwijdert vervallen staffels gericht met tier-prices-delete. Meer over de keuzes staat op klantspecifieke prijzen en staffelprijzen.
Aanbiedingen met een periode
Een prijslijst in Exact kan periodes hebben, met StartDate, EndDate en Type 1 voor basis of 2 voor aanbieding. Magento heeft twee plekken voor een prijs met een datum, en beide passen maar half. Een special price heeft price_from en price_to, maar geldt per store_id voor iedereen en niet per klantgroep. Een tier price is per klantgroep, maar heeft geen datum. Een aanbieding voor alle klanten wordt een special price. Een aanbieding binnen een klantprijslijst schrijft de koppeling op de startdatum als tier price en verwijdert hij op de einddatum.
Varianten
Exact Online heeft geen hoofdartikel met varianten: een jas in 4 kleuren en 6 maten is 24 artikelen. Magento verwacht één configurable product met 24 simple products. De koppeling groepeert de artikelen op een afgesproken kenmerk en leest de optie-ID's voor kleur en maat uit jouw Magento, want die verschillen per installatie. Het koppelen van een simple product aan het model gaat met één childSku per aanroep: 24 aanroepen voor deze jas, uit een wachtrij. Zie varianten.
Magazijnen en bronnen
StockPositions geeft per artikel en per magazijn CurrentStock, ReservedStock, PlanningOut en FreeStock. Magento met Multi-Source Inventory rekent met bronnen en eigen reserveringen. Elk magazijn in Exact wordt een source_code in Magento. Welk getal je schrijft, bepaalt of een order dubbel telt: Magento trekt een openstaande order zelf af tot de zending in Magento staat. Schrijft de koppeling een getal waarin Exact de geplande uitgifte van diezelfde order al heeft verrekend, dan staat 20 stuks met een order van 4 in de shop als 12. Zie voorraad over meerdere magazijnen.
Adressen
Magento levert de straat als lijst van regels in street. Exact heeft AddressLine1, AddressLine2 en AddressLine3, zonder apart huisnummerveld. Tot drie straatregels gaan één op één over. Het land komt uit country_id als code van twee letters.
De technische werkelijkheid van deze combinatie
| Onderwerp | Magento 2 en Adobe Commerce | Exact Online |
|---|---|---|
| Limiet op verzoeken | geen algemene limiet | 60 per minuut, 5.000 per dag |
| Per pagina | zonder pageSize alles |
60, sync-endpoints 1.000 |
| Schrijven in bulk | /async/bulk/V1, via de message queue |
niet, één record per verzoek |
| Wijziging melden | Adobe Commerce 2.4.4+: events; Open Source: polling | webhooks, onder meer SalesOrders en StockPositions |
| Toegang | OAuth 1.0a, HMAC-SHA256 | OAuth 2.0, refresh token 30 dagen |
Nagelezen op 3 oktober 2026 in de documentatie van Adobe en Exact Online.
De Exact-kant is de smalle kant. Prijzen en voorraad lezen kost weinig dankzij de sync-endpoints. Orders kosten per stuk: debiteur zoeken, verkooporder aanmaken, levering ophalen. Bij 600 orders per dag zijn dat 3 x 600 = 1.800 verzoeken. De voorraad elke 10 minuten via de sync is 144, en prijzen, artikelen en debiteuren elk uur via 4 sync-endpoints 96. Samen 2.040 van de 5.000.
De Magento-kant is de zware kant. Een volledige prijsronde van 14.400 tier prices is zwaar werk voor de server van de shop. Adobe documenteert geen limiet op de REST API, dus de grens is je server: een koppeling die midden op de dag duizenden prijzen tegelijk schrijft, maakt de shop traag. Volledige rondes draaien 's nachts, overdag gaan alleen wijzigingen mee. Een bulkverzoek wordt pas verwerkt als de consumer async.operations.all draait; staat hij stil, dan blijft elke bewerking open zonder foutmelding. De koppeling controleert de status na elke batch. De rekenmethode staat in doorvoer berekenen.
Wat een standaardkoppeling hier niet doet
Standaardkoppelingen voor Magento en Exact Online documenteren hun eigen grenzen voor B2B:
- Een eigen extensie in Magento. Voor de B2B-variant installeer je een REST- en prijslijstuitbreiding van de leverancier.
- Alleen prijslijsten per artikel. Prijslijsten op een artikelgroep worden niet overgezet.
- Geen debiteurenkorting. Een korting per debiteur moet eerst als prijslijst in Exact worden aangemaakt.
- Eén prijsmethode voor alle artikelen. Staffel of verkoopprijs kies je één keer voor de hele prijslijst, en later omzetten is lastig.
- Prijzen in één richting, en zonder aanbiedingsperiodes.
Een gebouwde koppeling vouwt artikelgroepen uit naar SKU's, zet debiteurenkortingen om naar klantgroepen en plant aanbiedingen op hun start- en einddatum, zonder extensie van een derde in je Magento.
Als het misgaat
| Wat er misgaat | Wat de koppeling doet | Wat je ziet |
|---|---|---|
| 429 van Exact | orders wachten, prijsrondes worden uitgesteld | niets, tenzij het aanhoudt |
| SKU uit een prijslijst bestaat niet in Magento | die regels gaan naar de controlelijst | de SKU en de prijslijst |
| Debiteur aan een prijslijst zonder klantgroep | klantgroep aangemaakt, klant toegewezen | een regel in het logboek |
| Bulkbewerking blijft open | melding na de controle | de batch en het aantal open regels |
| Order met een artikel dat niet in Exact staat | die order wordt vastgehouden | de order en de SKU |
| Verbinding weg na het aanmaken van de order | eerst zoeken op YourRef, dan pas opnieuw |
niets, de order staat één keer in Exact |
Een order die blijft falen bewaart de koppeling met de oorspronkelijke inhoud, en hij biedt hem opnieuw aan zodra de oorzaak is opgelost. Voor livegang draait hij als dry run: je ziet per klantgroep en per SKU welke prijs er in Magento zou komen, voordat er iets verandert.
Wij hosten en bewaken de koppeling en passen hem aan als Adobe of Exact een interface wijzigt. De systeemkant staat op Exact Online koppeling, de platformkant op Magento koppeling, en alle stromen op koppelingen. Verwante combinaties: WooCommerce Exact Online koppeling, Magento Business Central koppeling en Magento AFAS koppeling. Vertel hoe jullie prijslijsten in Exact zijn opgebouwd.
Veelgestelde vragen
Welk Exact Online-pakket heb ik nodig voor een Magento koppeling?
Handel of Productie. Verkooporders, leveringen, voorraadposities en de prijslijsten zijn in de API-documentatie van Exact alleen beschikbaar in die twee pakketten. Voorraad per magazijn via ItemWarehouses en een magazijn op de verkooporder (WarehouseID) vragen Plus, Professional of Premium. Met Boekhouden kan een Magento-order alleen als verkoopboeking of verkoopfactuur landen.
Kan een debiteurenkorting uit Exact in Magento staan?
Niet als korting per klant: Magento heeft geen kortingsveld op de klant. De koppeling leest DiscountSales van de debiteur, een fractie (0,055 is 5,5%), en zet klanten met dezelfde korting in een eigen klantgroep met tier prices van het type discount. Zijn er veel verschillende kortingen, dan is een prijslijst in Exact de nettere bron.
Werkt de koppeling met Magento Open Source of alleen met Adobe Commerce?
Met allebei. Er zijn twee verschillen. Op Adobe Commerce is price_from verplicht bij een special price, op Open Source niet. En Adobe I/O Events vraagt Adobe Commerce 2.4.4 of hoger; op Open Source haalt de koppeling nieuwe orders op met een zoekopdracht op updated_at.
Hoe worden kleuren en maten uit Exact configurable products?
Exact Online heeft geen varianten: elke maat en kleur is een eigen artikel met een eigen code. De koppeling groepeert die artikelen op een afgesproken kenmerk, zoals een vrij veld of het eerste deel van de artikelcode, en maakt per groep één configurable product met de artikelen als simple products. Een artikel zonder dat kenmerk wordt een los simple product.
Gaan B2B-klanten uit Magento naar Exact of andersom?
Beide, met een vaste verdeling. Een klant die zich in Magento registreert gaat als debiteur naar Exact. De prijslijst koppel je in Exact aan de debiteur, en de koppeling zet daarna de klantgroep in Magento. Adres, btw-nummer en betalingsconditie zijn in Exact leidend; wijzigt de klant ze in Magento, dan gaat dat naar een controlelijst.
Wat gebeurt er met een aanbieding die al loopt als de koppeling start?
Adobe Commerce accepteert een special price alleen met een price_from in de toekomst. Een aanbiedingsperiode uit Exact die al begonnen is, schrijft de koppeling met de huidige tijd plus een paar minuten als start en de einddatum uit Exact als price_to.
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