Naar de inhoud
SyncMyShop

Koppeling laten maken

API koppeling laten maken: van twee API's naar één werkende stroom

Twee systemen met een API zijn nog geen koppeling. Iemand moet uitzoeken hoe elk systeem toegang geeft, hoe het een wijziging meldt, wat het weigert en hoe vaak je het mag vragen. Wij bouwen de koppeling op de API's van jouw systemen, en draaien en bewaken hem daarna.

Stuur ons de namen van de twee systemen

Voor een API koppeling heb je in het begin weinig meer nodig dan de namen van de systemen. Wat een API toelaat staat in de documentatie van de leverancier, en dat zoeken wij uit. Per API zijn het steeds dezelfde zes vragen:

Vraag Waarom Voorbeeld
Wat voor API is het? REST, SOAP of GraphQL, met JSON of XML Yuki en Twinfield werken met SOAP en XML
Wie geeft de toegang? de beheerder moet iets aanmaken AFAS: app connector met de juiste connectoren
Hoe lang is een token geldig? een verlopen token legt alles stil Exact Online: 600 seconden
Hoe meldt het systeem een wijziging? bepaalt hoe snel iets aankomt webhook, sync-endpoint of zelf vragen
Hoeveel verzoeken mogen er? bepaalt de doorvoer Moneybird: 150 per 5 minuten
Staan de velden erin die je nodig hebt? ontbrekend veld is extra werk Business Central: geen voorraad per locatie in API v2.0

De laatste vraag is de belangrijkste. Business Central heeft een uitgebreide standaard-API, maar item.inventory is één getal over alle locaties. Wie voorraad per magazijn nodig heeft, publiceert in Business Central een eigen pagina of query als webservice. Dat weet je voordat je begint, of je ontdekt het halverwege. Wat een API in het algemeen wel en niet regelt, staat in wat is een API koppeling.

Wat een API wel en niet regelt

Een API geeft toegang tot de gegevens van één systeem, in de vorm die dat systeem kiest. Hij regelt niet welk systeem leidend is, hoe een klant in het ene systeem dezelfde klant in het andere is, en wat er gebeurt als een aanroep halverwege mislukt. Drie voorbeelden uit de documentatie van leveranciers:

  • De API zegt niet dat er meer is. Een GetConnector van AFAS zonder skip en take geeft de eerste 100 regels terug, zonder melding dat er meer zijn. Magento doet het omgekeerde: zonder pageSize komen alle resultaten in één antwoord.
  • Een standaardwaarde die stil iets invult. Moneybird gebruikt het standaardtarief van de administratie als een factuurregel geen btw-tarief meekrijgt. Een regel met 9% wordt dan zonder foutmelding een regel met 21%.
  • Een sleutel die anders werkt dan hij eruitziet. De debiteurcode in Exact Online is 18 posities lang met spaties aan de voorkant. Een filter op 10432 vindt niets, en een koppeling die dat niet weet maakt een tweede debiteur aan.

Daarom is het werk aan een API koppeling voor een groot deel mapping: per veld vastleggen waar het vandaan komt, hoe het wordt omgezet en wat er gebeurt met een waarde die nergens past. Dat staat uitgewerkt in wat is veldmapping.

Hoe een systeem een wijziging meldt

Er zijn drie manieren. Een webhook: het systeem stuurt zelf een bericht. Een sync-endpoint: je vraagt alles wat nieuwer is dan de vorige keer. Of zelf vragen, op een vast moment, met een filter op een datum. Elk systeem doet het anders, en bij een webhook verschilt vooral wat er gebeurt als de ontvanger even niet bereikbaar is.

Systeem Hoe het meldt Als de ontvanger niet antwoordt
Shopify webhook, antwoord binnen 5 seconden 8 pogingen binnen 4 uur, daarna abonnement verwijderd
Exact Online webhook met HashCode, of sync op Timestamp 10 pogingen verspreid over 34 uur
Picqer webhook met X-Picqer-Signature 15 pogingen in ongeveer 17 uur
WooCommerce webhook via wp-cron uitgeschakeld na 5 mislukte afleveringen op rij
Business Central webhook-abonnement abonnement verloopt na 3 dagen, verlengen nodig
AFAS Profit geen webhook voor orders en artikelen zelf vragen op wijzigingsdatum
Hoe lang Shopify, Picqer en Exact Online een gemiste webhook opnieuw aanbieden Bij een storing van 6 uur aan de ontvangende kant stopt Shopify na 8 pogingen binnen 4 uur en verwijdert het abonnement. Picqer biedt een bericht 15 keer aan in ongeveer 17 uur, Exact Online 10 keer verspreid over 34 uur. Picqer en Exact Online leveren na de storing alsnog af. Bij Shopify is na 4 uur het abonnement weg, en komt ook daarna niets meer binnen tot het opnieuw is aangemaakt. Storing bij de ontvanger 6 uur onbereikbaar Shopify: 8 pogingen binnen 4 uur abonnement verwijderd Picqer: 15 pogingen in ongeveer 17 uur laatste poging Exact Online: 10 pogingen verspreid over 34 uur laatste poging 0 uur 4 uur 17 uur 24 uur 34 uur WooCommerce noemt geen tijd: een webhook gaat uit na vijf mislukte afleveringen op rij. AFAS Profit stuurt voor orders en artikelen geen webhooks.
Hoe lang drie systemen een webhook opnieuw aanbieden. Een storing van 6 uur is voor Picqer en Exact Online te overbruggen, voor Shopify niet.

Een storing van 6 uur, doorgerekend. Een Shopify-shop met 300 orders per dag krijgt er gemiddeld 12,5 per uur. Ligt de ontvangende kant 6 uur plat, dan gaan er 6 x 12,5 = 75 orders verloren als de koppeling alleen op webhooks draait. De eerste berichten geeft Shopify na 4 uur op, en daarna is het abonnement weg, dus ook de orders van uur 5 en 6 komen niet. Daarom haalt de koppeling naast de webhook op een vast moment alle orders op die sinds de vorige controle zijn gewijzigd, en zet hij het abonnement opnieuw op als het verdwenen is. De 75 orders staan dan bij de eerstvolgende controle alsnog in het ERP.

Ook een sync-endpoint heeft een uitzondering. Exact Online zet de Timestamp-waarden opnieuw als een administratie naar een andere database is verhuisd; de documentatie raadt dan aan alles opnieuw te synchroniseren. De koppeling controleert daarvoor de DivisionMoveDate. Meer over de werking staat in wat is een webhook.

Toegang, tokens en wie ze uitgeeft

Elke API heeft een eigen manier van inloggen, en bij elk systeem moet iemand aan de kant van de klant iets aanmaken of goedkeuren. Wat er dan verloopt en wanneer, verschilt sterk:

Systeem Toegang Wat verloopt
Exact Online OAuth 2.0, beheerder logt één keer in access token na 600 s, refresh token na 30 dagen stilstand
Business Central online OAuth 2.0 via Microsoft Entra, API.ReadWrite.All access token; webhook-abonnement na 3 dagen
AFAS Profit app connector met token, of OAuth Bearer-token na 3.600 s; klassieke tokens stoppen op 31 augustus 2027
Twinfield OpenID Connect, CompanyCode bij elk verzoek access token na 3.600 s
WooCommerce Consumer Key en Secret niets, tot de WordPress-gebruiker wordt verwijderd
e-Boekhouden.nl API-token, omgezet in een sessietoken sessietoken na expiresIn seconden

Drie van deze sleutels zie je maar één keer: het Consumer Secret van WooCommerce, het token van een AFAS app connector en het API-token van e-Boekhouden. Wie het scherm sluit zonder te kopiëren, maakt een nieuwe aan.

Het token van Exact Online, doorgerekend. Een access token is 10 minuten geldig. Een koppeling die de hele dag draait, ververst het 24 x 60 / 10 = 144 keer per dag. Bij elke verversing komt er een nieuw refresh token en vervalt het oude direct. Verversen twee processen tegelijk, dan bewaart één van de twee een token dat al vervallen is, en geeft elk volgend verzoek een 401. Bij ons ververst één proces het token en lezen de andere het uit dezelfde opslag. Meer over Exact staat op Exact Online koppeling.

Kleine verschillen die veel tijd kosten

Systeem Wat er anders is Wat er misgaat zonder
Moneybird ID's zijn grote gehele getallen; Moneybird raadt aan ze als tekst te lezen een JSON-parser leest het getal verkeerd en het record is onvindbaar
e-Boekhouden.nl filters als ?date[gte]=2026-10-01, limit tot 2.000 standaard 100 resultaten per verzoek
WooCommerce bedragen standaard op 2 decimalen, dp=4 voor meer btw terugrekenen geeft 21,07% in plaats van 21%
Exact Online codes en GUID's: een orderregel vraagt het artikel als GUID een artikelcode uit de webshop wordt geweigerd
Business Central $batch met hooguit 100 bewerkingen een grotere batch moet worden opgesplitst

Het voorbeeld van WooCommerce in getallen: btw over € 4,13 is € 0,8673. Op 2 decimalen wordt dat € 0,87, en 0,87 / 4,13 = 21,07%. Een boekhoudpakket dat het tarief uit de bedragen afleidt, herkent dat niet als het hoge tarief. Met dp=4 is het 0,8673 / 4,13 = 21,00%. Meer voorbeelden staan bij bedragen en btw mappen.

Welke limieten de systemen hebben en wat dat betekent voor de doorvoer, staat in wat is een rate limit. Exact Online staat 60 verzoeken per minuut en 5.000 per dag toe, Business Central online 6.000 per 5 minuten per gebruiker, Moneybird 150 per 5 minuten per IP-adres.

Veiligheid van de verbinding

Een API koppeling is een deur tussen twee systemen. Wat erdoor mag, leg je vast bij de toegang, niet in de koppeling zelf.

  • Alleen de rechten die nodig zijn. In AFAS kan de koppeling alleen de connectoren aanroepen die de beheerder in de app connector heeft gezet. Moneybird werkt met scopes per soort gegevens, bijvoorbeeld sales_invoices. Shopify geeft standaard alleen orders van de laatste 60 dagen; voor oudere orders moet read_all_orders apart worden aangevraagd.
  • Een vast IP-adres. AFAS laat de beheerder per app connector vastleggen vanaf welke adressen aanroepen mogen. Een aanroep van een ander adres krijgt een 403.
  • Berichten controleren voordat ze worden verwerkt. WooCommerce zet een HMAC-SHA256 over het bericht in X-WC-Webhook-Signature, Exact Online in HashCode, Picqer in X-Picqer-Signature. Een bericht met een handtekening die niet klopt, verwerkt de koppeling niet.
  • Alleen over HTTPS. WooCommerce accepteert de sleutels via HTTP alleen met een OAuth-handtekening per verzoek; over HTTPS gaan ze als basic authentication. Wij koppelen alleen over HTTPS.
  • Sleutels apart van de code. Een sleutel die vervangen moet worden, bijvoorbeeld als een medewerker vertrekt, wordt vervangen zonder de koppeling opnieuw te bouwen.

Wat je krijgt

Wij bouwen de koppeling voor een vaste prijs op de API's van jouw systemen. Daarna hosten, draaien en bewaken wij hem voor een vast bedrag per maand. Hoe die twee delen zijn opgebouwd staat op koppeling laten bouwen.

  • Een wachtrij met herhalingen, zodat een 429 of een storing geen gegevens kost, en elke order één keer aankomt.
  • Een controlelijst voor wat de validatie niet haalt, met de oorspronkelijke inhoud en de reden.
  • Een dashboard met eigen login, met per run wat er is verwerkt en wat er is gewijzigd.
  • Dry run en goedkeuring voordat er iets wordt weggeschreven.
  • Aanpassing als een API verandert, zoals een nieuwe versie bij Shopify of de overstap naar OAuth bij AFAS.

Gaat het om één soort systeem, kijk dan bij ERP koppeling met je webshop of webshop koppeling laten maken. Alle stromen staan op koppelingen. Stuur de namen van je twee systemen, dan hoor je wat hun API's toelaten en waar het werk zit.

Veelgestelde vragen

Is een API koppeling veilig?

Zo veilig als de toegang die hij krijgt. De verbinding loopt over HTTPS, de koppeling krijgt alleen de rechten die hij nodig heeft, en berichten die binnenkomen worden op hun handtekening gecontroleerd. Bij AFAS kan de beheerder bovendien vastleggen vanaf welk IP-adres de koppeling mag aanroepen; een ander adres krijgt een 403.

Wat hebben jullie nodig om te beginnen?

De namen van de systemen, met versie of pakket als je die weet, en wie ze beheert. Met de namen zoeken wij uit wat de API's toelaten. De beheerder is nodig voor de toegang: een app connector in AFAS, een app-registratie in Microsoft Entra voor Business Central, een sleutel in WooCommerce. Een testomgeving helpt: AFAS heeft naast productie een test- en een acceptatieomgeving, Moneybird biedt sandbox-administraties.

Kunnen jullie koppelen met software die geen API heeft?

Ja, langs een andere route: een databaseview, een geplande export naar SFTP of een map, of als laatste een gescripte route door de schermen. Vaak bouwt de leverancier van de software een endpoint als een klant er concreet om vraagt. Zie koppelen zonder API.

Hoe lang duurt het om een API koppeling te maken?

Dat hangt van vier dingen af: hoe snel je de toegang krijgt, of er een testomgeving is, of de stroom één of twee kanten op gaat, en hoeveel velden een vertaaltabel nodig hebben. Het aanvragen van toegang bij een softwareleverancier duurt vaak langer dan het bouwen zelf. Met de systeemnamen en je stromen krijg je een planning voor jouw situatie.

Wat gebeurt er als een leverancier zijn API wijzigt?

Dan passen wij de koppeling aan. Leveranciers kondigen zulke wijzigingen aan: Shopify brengt elk kwartaal een API-versie uit die minstens 12 maanden blijft werken, en AFAS stopt op 31 augustus 2027 met klassieke tokens. Wij passen de koppeling vóór zo'n datum aan, zodat hij geen storing wordt.

Wat is het verschil met een maatwerk koppeling?

Geen, als je kijkt naar wat er gebouwd wordt. Een API koppeling is de technische kant: de verbinding met de API's van twee systemen. Maatwerk gaat over de regels van je bedrijf die erin zitten, zoals een order over twee magazijnen verdelen. Die kant staat op maatwerk koppeling laten maken.

Wat als een systeem geen webhooks stuurt?

Dan vraagt de koppeling op vaste momenten wat er sinds de vorige keer is veranderd, met een filter op een wijzigingsdatum of een volgnummer. AFAS Profit werkt zo voor orders en artikelen, en Exact Online biedt sync-endpoints die alleen nieuwe en gewijzigde records teruggeven. Hoe vaak dat kan, hangt af van de limiet van het systeem.

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