
AFAS Magento koppeling: orders, voorraad en prijzen zonder handwerk
Een goede AFAS Magento koppeling is saai. Elke order komt precies één keer in AFAS, elke voorraadmutatie staat op tijd in de shop, en als er iets misgaat weet je het voordat de klant belt. Wij bouwen en onderhouden die koppeling op de AFAS Profit REST API, direct of via middleware. Je praat met de mensen die het bouwen.
- Gebouwd op de officiële AFAS Profit REST API
- Retry, logging en alerts vanaf dag één
- Magento 2, Shopify of Laravel-middleware
Wat een AFAS Magento koppeling moet oplossen
Een AFAS Magento koppeling verbindt AFAS Profit met Magento 2. In AFAS staan je administratie, artikelen, debiteuren en vaak ook je voorraad. In Magento verkoop je. Zonder koppeling typt iemand orders over, wordt voorraad met de hand bijgewerkt en lopen de prijzen in de shop achter op de prijslijst in AFAS. Dat kost tijd per order en levert fouten op die je pas ziet bij een retour of een boze klant.
De vraag is zelden óf je moet koppelen. De vraag is welke data welke kant op gaat, hoe vaak, en welk systeem per gegeven de bron van de waarheid is. Meestal is AFAS leidend voor artikelen, prijzen, voorraad en debiteuren, en Magento voor orders, klantaccounts en content. Leg je die afspraak niet hard vast, dan overschrijft de koppeling vroeg of laat goede data met oude data.
Op deze pagina lees je hoe AFAS en Magento technisch met elkaar praten, welke route bij jouw situatie past (module, iPaaS of maatwerk-middleware), wat je vooraf in AFAS moet regelen en waar koppelingen in de praktijk op stuklopen. Dezelfde principes gelden voor Shopify en voor een Laravel-laag ertussen. Die behandelen we kort aan het eind.
Hoe AFAS en Magento technisch koppelen: de Profit REST API
Elke serieuze AFAS-koppeling draait op dezelfde bouwstenen. Wie deze kent, kan elk koppelvoorstel beoordelen.
AFAS Profit stelt data beschikbaar via connectoren. Met een GetConnector lees je data uit AFAS, met een UpdateConnector schrijf je data terug. Een GetConnector is geen vaste tabel maar een view die in AFAS zelf wordt ingericht: welke velden erin zitten, bepaal je in Profit. Daardoor is de inrichting in AFAS net zo belangrijk als de code aan de Magento-kant. Wijzigt iemand de view, dan verandert de output van de koppeling.
De REST-omgeving heeft per AFAS-omgeving een eigen adres, in de vorm van een omgevingsnummer gevolgd door rest.afas.online/profitrestservices. Voor test- en acceptatieomgevingen bestaan aparte adressen. Je authenticeert met een token per gebruiker of app-connector, dat je Base64-gecodeerd meestuurt in de Authorization-header met het voorvoegsel AfasToken. AFAS vereist TLS 1.2. Het token geeft precies de rechten van de gekoppelde AFAS-gebruiker, dus een aparte koppelgebruiker met minimale rechten is verplicht kost, geen luxe.
Ophalen gaat in pagina's met de parameters skip en take. Zonder die parameters geeft AFAS de eerste 100 rijen terug. Alles in één keer ophalen kan technisch, maar AFAS raadt het af. Combineer pagineren altijd met een vaste sortering, anders kan de volgorde tussen calls verschuiven en mis je records of krijg je dubbelen. AFAS adviseert verder om het aantal kolommen maal de take-waarde onder de 150.000 te houden. Eén API-call mag maximaal 75 MB zijn en verbindingen die langer dan ongeveer 15 minuten openstaan worden afgebroken. Daar ontwerp je je batches op.
Het belangrijkste architectuurpunt: AFAS heeft geen webhooks voor artikelen, voorraad of prijzen. Webhooks bestaan alleen voor dossieritems en workflows. Wil je weten wat er in AFAS is veranderd, dan moet je pollen op de velden aangemaakt op en gewijzigd op. Een koppeling die elke paar minuten de volledige artikellijst ophaalt, botst met het fair-use-beleid van AFAS en is bovendien traag. Delta-synchronisatie op gewijzigd op, met een opgeslagen laatste-sync-tijdstip, is de juiste route.
Schrijven naar AFAS gaat via UpdateConnectors met POST voor nieuwe records, PUT voor wijzigingen en DELETE voor verwijderen. Verkooporders gaan bijvoorbeeld via de UpdateConnector FbSales. De payload is genest en AFAS valideert streng: één veld op de verkeerde plek en je krijgt een foutmelding terug in plaats van een order. Daarom bouwen we die payloads centraal op één plek, met tests, en loggen we elke afwijzing met de originele foutmelding van AFAS.
Plan een vrijblijvend gesprek over je project
Een half uur via video met de mensen die het werk ook echt doen. Kies hieronder een moment dat jou past.
- Direct met het vaste team, geen tussenlagen
- Concrete feedback op je huidige situatie of plannen
- Eerlijk advies, ook als het antwoord "niet doen" is
- Indicatie van kosten en tijdlijn
Plan een gratis Tech Check
Vrijblijvend jouw uitdagingen bespreken
Of bel direct: 0591-239 299
Welke data gaat welke kant op bij AFAS en Magento 2
Dit is het datamodel dat wij als startpunt gebruiken. In de analyse passen we het aan op jouw inrichting.
| Gegeven | Richting | Bron van de waarheid | Frequentie (indicatief) | Waar het misgaat |
|---|---|---|---|---|
| Artikelen en attributen | AFAS naar Magento | AFAS (of een PIM) | Delta per kwartier tot per uur | Marketingteksten en afbeeldingen horen vaak niet in AFAS; dan heb je een PIM of Magento als bron voor content nodig |
| Voorraad | AFAS naar Magento | AFAS of WMS | Elke paar minuten, delta | Gereserveerde voorraad van openstaande orders niet meegerekend, waardoor je oversellt |
| Prijzen en prijslijsten | AFAS naar Magento | AFAS | Dagelijks of bij wijziging | Staffels, klantspecifieke prijzen en acties lopen niet één-op-één over naar Magento-prijsregels |
| Debiteuren (B2B) | Beide kanten | AFAS voor B2B, Magento voor consumenten | Bij registratie en bij wijziging | Dubbele debiteuren doordat matching op e-mailadres of KvK-nummer ontbreekt |
| Orders | Magento naar AFAS | Magento | Direct na betaling, via queue | Dubbele orders bij een time-out en een blinde retry zonder idempotentie |
| Orderstatus en track and trace | AFAS naar Magento | AFAS of WMS | Elke 5 tot 15 minuten | Status wel in AFAS, nooit terug in de shop, dus de klant mailt je klantenservice |
| Facturen en betalingen | Beide kanten | AFAS | Dagelijks | Betaalde orders staan in AFAS als openstaande post omdat de betaalstatus niet meekomt |
AFAS Magento koppeling: module, iPaaS of maatwerk-middleware
Er zijn drie routes. Geen ervan is altijd de beste. Dit is de keuzehulp die wij zelf gebruiken.
| Route | Past bij | Voordelen | Nadelen |
|---|---|---|---|
| Kant-en-klare Magento-module of connector | Standaard B2C-shop, weinig maatwerk in AFAS, vooral orders en voorraad | Snel live, lage instapkosten | Werkt alleen als jouw AFAS-inrichting op de aannames van de module lijkt; maatwerk wordt een patch op andermans code |
| iPaaS zoals Alumio | Meerdere systemen (AFAS, PIM, WMS, marketplaces), team dat zelf mappings wil beheren | Visuele mappings, monitoring en retry ingebouwd, connectoren voor AFAS en Magento | Licentiekosten per jaar; complexe businesslogica blijft lastig in een visuele tool |
| Laravel-middleware op maat | Afwijkende B2B-logica, hoge volumes, eigen regels voor prijzen, voorraad of orderroutering | Volledige controle, geen licentie per koppeling, queues en monitoring precies zoals jij ze nodig hebt | Hogere bouwinspanning vooraf en je hebt een team nodig dat het onderhoudt |
| Directe koppeling in Magento-code | Eén systeem, beperkte scope, geen plannen voor uitbreiding | Geen extra infrastructuur | Belast je webshop-server, en bij een Magento-upgrade of replatforming moet de koppeling mee |
AFAS en PHP: zelf een AFAS-koppeling bouwen
Zoek je op AFAS en PHP, dan wil je meestal weten of je zelf tegen de AFAS-API kunt programmeren. Dat kan. De REST API is gewone HTTP met JSON, dus elke PHP-applicatie kan ermee praten, ook Magento 2 en Laravel. Er bestaan open-source PHP-pakketten op Packagist die de token-authenticatie en de connector-calls inpakken, waaronder generieke Profit-clients en een Laravel-specifiek pakket. Die schelen wat werk, maar ze lossen het moeilijke deel niet op.
Het moeilijke deel zit niet in de HTTP-call. Het zit in pagineren met een vaste sortering, in delta-sync op gewijzigd op, in het mappen van AFAS-veldnamen naar je eigen datamodel, in het netjes afhandelen van afwijzingen van UpdateConnectors en in idempotentie: zorgen dat een order die twee keer wordt aangeboden toch maar één keer in AFAS komt. Wie dat overslaat, heeft binnen een week een koppeling die werkt in de demo en faalt op een drukke maandag.
Hoe wij dat in Laravel aanpakken, met DTO's voor de mapping, throttling van queue-jobs en paging in batches, lees je in onze uitgebreide gids over Laravel en AFAS-synchronisatie. Op deze pagina blijven we bij de keuzes die je als eigenaar van een webshop moet maken.
AFAS Magento online synchroniseren: realtime of batch
Realtime klinkt altijd beter, maar het is niet voor elk gegeven nodig of zelfs mogelijk. Omdat AFAS voor artikelen, voorraad en prijzen geen webhooks biedt, is alles wat van AFAS naar Magento gaat in de praktijk near-realtime: een poll elke paar minuten op wijzigingen. Voor voorraad is dat meestal ruim voldoende. Voor prijzen is een dagelijkse of uurlijkse sync vaak genoeg, mits je acties ook netjes op tijd aan- en uitzet.
Orders gaan wel direct, want Magento kan na een betaling meteen een event afvuren. Wij zetten die order dan niet synchroon in AFAS tijdens het afrekenen, maar in een queue. De klant krijgt zijn bevestiging, en de koppeling probeert het daarna. Is AFAS even niet bereikbaar of in onderhoud, dan wacht de order in de queue en gaat hij later alsnog door. Een checkout die stilvalt omdat het ERP traag reageert, is een ontwerpfout.
Voor B2B-shops met klantspecifieke prijzen speelt een extra keuze: haal je de prijs live uit AFAS op bij het bekijken van een product, of synchroniseer je prijslijsten vooraf naar Magento? Live ophalen is altijd actueel, maar maakt de snelheid van je shop afhankelijk van de API van AFAS. Vooraf synchroniseren is sneller en robuuster. Wij kiezen vrijwel altijd voor vooraf synchroniseren met een live controle bij het plaatsen van de order.
Checklist: voorbereiding voor een AFAS Magento integratie
Met deze punten op orde ben je weken eerder live. Het meeste ligt aan de AFAS-kant.
In AFAS Profit
- Een aparte koppelgebruiker of app-connector met alleen de rechten die de koppeling nodig heeft
- GetConnectors ingericht voor artikelen, voorraad, prijzen en debiteuren, inclusief de velden aangemaakt op en gewijzigd op
- Een vast unieke sleutel per artikel (artikelcode) die ook als SKU in Magento wordt gebruikt
- Een test- of acceptatieomgeving met realistische data om tegen te ontwikkelen
- Afspraken over wie GetConnector-views mag aanpassen, en dat wijzigingen vooraf gemeld worden
In Magento 2
- Een overzicht van attributen, attribuutsets en welke uit AFAS moeten komen
- Duidelijkheid over B2C, B2B of beide, en hoe klantgroepen aan AFAS-prijslijsten hangen
- Betaalmethoden, verzendmethoden en btw-tarieven gemapt op de codes in AFAS
- Cron en queue-consumers die betrouwbaar draaien op de hosting
Afspraken en eigenaarschap
- Per gegeven vastgelegd welk systeem de bron van de waarheid is
- Wat er moet gebeuren als een order door AFAS wordt afgewezen, en wie daar een melding van krijgt
- Hoe met bestaande debiteuren en historische orders wordt omgegaan bij de eerste sync
Waar AFAS-koppelingen in de praktijk op stuklopen
Dubbele orders zijn het meest voorkomende probleem. Een call naar AFAS loopt in een time-out, de koppeling weet niet of de order is aangekomen en probeert het opnieuw. Resultaat: twee orders in AFAS, twee keer gepickt. De oplossing is idempotentie: het Magento-ordernummer als externe referentie in AFAS opslaan en voor elke retry eerst controleren of de order al bestaat.
Stille fouten zijn het tweede probleem. Een koppeling die faalt zonder dat iemand het merkt, is erger dan geen koppeling, omdat iedereen aanneemt dat het goed gaat. Elke afgewezen order, elke mislukte voorraadsync en elke achterstand in de queue moet een melding opleveren bij een persoon, met de foutmelding van AFAS erbij. Een logbestand op een server dat niemand leest, telt niet.
Het derde probleem is drift in de inrichting. Iemand voegt in AFAS een veld toe aan een view, verandert een artikelgroep of zet een nieuw magazijn op, en de koppeling gaat stuk of, erger, synchroniseert ineens verkeerde data. Daarom documenteren we de verwachte GetConnector-structuur in de code en valideren we elke response daartegen. Wijkt de structuur af, dan stopt de sync en krijg je een melding, in plaats van dat er foute voorraad in je shop komt.
AFAS koppelen aan Shopify of via Laravel-middleware
Voor Shopify geldt dezelfde AFAS-kant: GetConnectors, UpdateConnectors en pollen op wijzigingen. Het verschil zit aan de shopkant. Shopify heeft geen eigen server waar je koppelcode op draait, dus de koppeling leeft altijd buiten Shopify: in een app, in een iPaaS of in eigen middleware. Shopify heeft bovendien API-limieten waar je bulkupdates van voorraad en prijzen op moet ontwerpen.
Laravel-middleware zetten we in als AFAS niet het enige systeem is. Denk aan AFAS plus een WMS, een PIM of meerdere verkoopkanalen. De middleware wordt dan het knooppunt: één plek met queues, mapping, logging en een dashboard voor fouten, zodat je shop en je ERP niet direct van elkaar afhankelijk zijn. Wissel je later van shopplatform, dan blijft de AFAS-kant van de koppeling staan.
Verder lezen over AFAS, ERP en koppelingen
Dieper in de techniek of in de alternatieven.
Laravel en AFAS-synchronisatie
Paging, DTO-mapping, throttling en retry tegen de AFAS GetConnector en UpdateConnector, uitgewerkt in Laravel.
Lees verder →Magento 2 en AFAS: orderflow en voorraad
Hoe je de orderstroom en voorraadsynchronisatie tussen Magento 2 en AFAS opzet zonder handmatig overtypen.
Lees verder →ERP koppelen: AFAS, Exact of Multivers
Vergelijking van connector, iPaaS en maatwerk voor de drie meest gebruikte Nederlandse ERP-pakketten.
Lees verder →Laravel integraties
Maatwerk-middleware op Laravel voor ERP, WMS, PIM en marketplaces, met queues en monitoring.
Lees verder →Alumio iPaaS
Wanneer een iPaaS met kant-en-klare AFAS- en Magento-connectoren de betere keuze is dan maatwerk.
Lees verder →Handleiding: Magento 2 koppelen aan externe systemen
De algemene aanpak voor ERP-, PIM- en fulfilmentkoppelingen in Magento 2.
Lees verder →Onze aanpak voor een AFAS Magento koppeling
Van analyse tot beheer, met hetzelfde vaste team.
- 1
Analyse van datastromen
We brengen per gegeven in kaart welke kant het op gaat, hoe vaak en welk systeem leidend is. Dat leggen we vast in een koppelplan dat je kunt lezen zonder technische kennis.
- 2
Routekeuze en inschatting
Module, iPaaS of Laravel-middleware: we adviseren op basis van je volumes, je AFAS-inrichting en je plannen. Je krijgt een onderbouwde inschatting van de uren vooraf.
- 3
Inrichting AFAS en testomgeving
Samen met je AFAS-beheerder of -partner richten we GetConnectors, de koppelgebruiker en een testomgeving in. Zonder testomgeving bouwen we niet tegen productie.
- 4
Bouwen en testen
We bouwen de koppeling met queues, idempotente orderverwerking en validatie van AFAS-responses, en testen met echte orders, randgevallen en foutscenario's.
- 5
Initiële sync en livegang
Eerst een gecontroleerde volledige sync van artikelen, voorraad en debiteuren, daarna overschakelen op delta-sync. Livegang plannen we buiten piekmomenten.
- 6
Monitoring en beheer
Na livegang blijven we eigenaar: alerts op fouten en achterstanden, aanpassingen bij wijzigingen in AFAS en meegaan met Magento-upgrades.
Wat je van ons krijgt
- Een koppelplan met per gegeven richting, frequentie en bron van de waarheid
- Ingerichte koppelgebruiker en gedocumenteerde GetConnector-definities
- Order-sync van Magento naar AFAS via een queue, met idempotentie tegen dubbele orders
- Delta-synchronisatie van artikelen, voorraad en prijzen op basis van gewijzigd op
- Debiteurmatching voor B2B-klanten, zonder dubbele relaties in AFAS
- Foutlog met de originele AFAS-meldingen en e-mail- of Slack-alerts bij afwijzingen
- Technische documentatie en een overdrachtssessie voor je eigen team
- Beheerafspraken voor wijzigingen in AFAS, Magento-upgrades en uitbreidingen
Waarom Coding.nl voor je AFAS-koppeling
Eén vast team, geen tussenlagen
Geen projectmanagers of accountmanagers. De mensen die je koppeling bouwen, zijn ook degenen die je belt als er iets misgaat.
Beide kanten van de koppeling
We kennen Magento 2 en Hyvä, Shopify en Laravel van binnenuit. De koppeling past daardoor op je shop in plaats van ernaast te hangen.
Eerlijke routekeuze
We bouwen maatwerk en werken met Alumio. Daardoor adviseren we de route die bij je situatie past, niet de route die wij toevallig verkopen.
15+ jaar e-commerce
We weten waar koppelingen in de praktijk breken: drukke dagen, acties, retouren en B2B-uitzonderingen. Daar ontwerpen we op.

Verder lezen
- ›Laravel + AFAS: HRM en CRM data synchronisatie
- ›Magento 2 + AFAS koppelen: orderflow en voorraadbeheer geautomatiseerd
- ›ERP-koppeling webshop: AFAS, Exact of Multivers
- ›Laravel als e-commerce middleware: architectuurpatronen die werken
- ›Alumio vs custom integraties — wanneer kies je wat?
- ›Magento 2 + Alumio: ERP, PIM en WMS in één dashboard
- ›Magento 2 REST API vs GraphQL — performance vergeleken
Veelgestelde vragen
AFAS en je webshop koppelen zonder verrassingen?
Vertel ons welke systemen je gebruikt en waar het nu wringt. We denken mee over de route en geven een onderbouwde inschatting vooraf. Je praat direct met het team dat de koppeling bouwt.