Kort antwoord
De Exact Online API is de gratis REST-API op basis van OData waarmee software data in je Exact-administratie leest en boekt, met een oudere XML-API ernaast voor onder meer aflettering. Toegang loopt via OAuth2: je registreert een app, krijgt een client ID en client secret en haalt daarmee tokens op, want een vaste API-key bestaat niet. Vrijwel elke call gaat naar het division-nummer van een administratie, in het patroon /api/v1/{division}/crm/Accounts. Per app per administratie mag je standaard 60 calls per minuut en 5.000 per dag doen; daarboven volgt een HTTP 429.
Van lezen naar doen.
Business Center Altena / HVS Trading (Henk Verhoeven)Multi-tenant Huurdersportaal met IoT-energiemonitoringIoT + AIgeautomatiseerd meterstanden aflezen

De Exact Online API is de officiele interface waarmee software geautomatiseerd data uit je Exact-administratie kan lezen en erin kan schrijven — verkoopfacturen, relaties, grootboekmutaties, voorraad — zonder dat iemand iets overtypt. De API is gratis, goed gedocumenteerd en breed ondersteund, en toch is dat precies waar de verwarring begint.
Want een standaardkoppeling uit een app-store gebruikt diezelfde API, terwijl bedrijven die op "exact online api" zoeken meestal iets willen dat net buiten die standaardkoppelingen valt. Dit artikel legt uit wat de API technisch kan, waar je tegenaan loopt, en hoe je beslist tussen een kant-en-klare connector en maatwerk.
Achtergrond over integraties in het algemeen staat in onze gids over maatwerk software en API-koppelingen; hier zoomen we specifiek in op Exact Online.
Voor een ondernemer of IT-verantwoordelijke is dit de beslisinformatie voordat er een offerte of een developer bij komt. Ben je zelf developer, dan vind je verderop de documentatie, de endpoints en een eerste call.
Wat is de Exact Online API precies?
De Exact Online API is een REST-interface op basis van OData versie 3 waarmee externe software data in je administratie kan opvragen en wegschrijven (Exact, REST API introduction). Elke resource — een verkoopfactuur, een relatie, een grootboekrekening — heeft een eigen endpoint, en je bevraagt die met standaard OData-filters zoals $select, $filter en $top.
Naast de REST-API biedt Exact een oudere XML-API aan, die met topics werkt via XMLDownload.aspx en XMLUpload.aspx (Exact, Code examples). Voor enkele functies is die nog nodig; aflettering is het bekendste voorbeeld.
Belangrijk om te begrijpen: de API is de motor onder vrijwel elke Exact-integratie die je tegenkomt. Een kant-en-klare webshopkoppeling uit een app-store, een BI-dashboard dat je omzet toont, een maatwerkintegratie die CleverTech AI bouwt — ze praten allemaal met dezelfde API.
Het verschil zit niet in de API zelf, maar in wat je ermee doet en hoeveel van de scherpe randen je zelf moet opvangen. De API is gratis te gebruiken; Exact biedt vrije toegang tot de REST- en XML-API's plus webhooks, met documentatie op het developersportaal (Exact developers, 2026).
Wat kun je met de Exact Online API doen?
Vrijwel alles wat je handmatig in Exact Online doet, kun je via de API automatiseren: facturen aanmaken, relaties (debiteuren en crediteuren) beheren, grootboekmutaties boeken, voorraad bijwerken, en financiele data uitlezen voor rapportages. De API dekt honderden resources, verdeeld over verkoop, inkoop, grootboek, projecten, salaris en logistiek.
In de projecten die CleverTech AI bouwt, keren drie toepassingen steeds terug.
Orderverwerking: van webshoporder naar factuur
Webshoporders of gewonnen CRM-deals worden automatisch verkoopfacturen in Exact, met de juiste BTW per regel en de gekoppelde debiteur. Dit is verreweg de meest gevraagde toepassing en de reden dat de meeste mensen op de API uitkomen.
De valkuil zit in het volume: hoeveel calls kost een order? In onze Exact-koppelingen zien we dat een enkele order al snel een handvol calls vraagt — de debiteur opzoeken of aanmaken, de factuur boeken, de regels toevoegen, de betaling registreren.
Bij dat patroon is niet het aantal orders de rem, maar het aantal calls per order (zie de limieten verderop).
Rapportage en dashboards buiten Exact om
Je haalt grootboek-, omzet- en debiteurendata op om realtime cijfers te tonen in een dashboard of BI-tool buiten Exact. Handig wanneer je directie of accountant een actueel beeld wil zonder in Exact zelf te hoeven werken.
Omdat rapportage vooral leest en zelden schrijft, is de belasting op je dagbudget beheersbaar — mits je niet elke paginaweergave live laat ophalen maar periodiek cachet.
Synchronisatie in een keten
Exact is zelden het enige systeem. In een keten is het de financiele eindhalte tussen je kassa, magazijn, CRM en webshop.
Elk van die systemen levert data aan of ontvangt statusupdates terug. Dit is het scenario waarin standaardkoppelingen het snelst tekortschieten, omdat geen enkele kant-en-klare connector jouw specifieke keten kent.
Webhooks: realtime in plaats van pollen
Exact ondersteunt webhooks (Exact developers, 2026). Je abonneert je op gebeurtenissen — een nieuwe factuur, een gewijzigde relatie, een binnengekomen betaling — en Exact duwt een melding naar je systeem zodra dat gebeurt, in plaats van dat jij blijft vragen of er iets veranderd is.
Dat scheelt enorm veel API-calls, en dat is direct relevant voor de limieten verderop. Controleer per resource of er een webhook voor bestaat; waar die ontbreekt, val je terug op periodiek ophalen.
Elke melding draagt een HMAC-SHA256-hash die je met het webhook-secret van je app narekent, en een melding die niet aankomt, probeert Exact tien keer opnieuw, verspreid over 34 uur (Exact, Webhooks).
Hoe werkt de authenticatie: OAuth2 en het division-model
Authenticatie verloopt via OAuth2, en het eerste wat ontwikkelaars verrast is het division-model: elke administratie in Exact heeft een eigen division-nummer, en vrijwel elke API-call moet expliciet naar die division verwijzen. Je kunt dus niet simpelweg inloggen en facturen ophalen — je authenticeert, vraagt via een speciaal endpoint op welke divisions beschikbaar zijn, en kiest er een (Apideck, 2026).
Wie een holding met meerdere werkmaatschappijen bedient, routeert elke boeking naar de juiste division. De gebruiker kiest in het toestemmingsscherm zelf welke administraties je app mag zien; een division daarbuiten geeft een foutmelding (Exact, Implementation overview).
Een koppeling zonder gebruiker, via client credentials, kent Exact niet: alleen de authorization code- en de implicit-flow worden ondersteund (Exact, Using OAuth 2.0). Voor een achtergrondkoppeling doorloop je de flow dus één keer en draai je daarna op het veilig opgeslagen refresh-token.
Daar komt de tokencyclus bovenop, en die is streng. Het access-token is kortlevend en wordt vernieuwd met een refresh-token dat bij élke vernieuwing meeroteert: je krijgt een nieuw refresh-token terug en het oude vervalt (picqer/exact-php-client, 2026).
Gebruik je per ongeluk een al verbruikt token — twee processen die tegelijk vernieuwen is het klassieke geval — dan ligt de koppeling stil tot iemand opnieuw inlogt.
Dezelfde bibliotheek zet daarom een lock rond het vernieuwen. Gaat het toch mis, dan merk je dat pas als de eerste factuur niet doorkomt.
De klok is kort: een access-token is tien minuten geldig, en een nieuw token vraag je pas aan na 9 minuten en 30 seconden, anders volgt een 401 (Exact, Get and use access tokens). Een refresh-token verloopt na 30 dagen, dus een koppeling die een maand stilligt, moet de gebruiker opnieuw autoriseren.
Hoe maak je een Exact Online API-koppeling? Vijf stappen
Tussen "we willen koppelen" en de eerste geboekte factuur zitten vijf stappen. Ze zijn geen van alle ingewikkeld, maar stap twee en vier zijn waar de meeste eerste pogingen stranden.
- Registreer een app op het developersportaal. Registratie en API-toegang zijn gratis (Exact developers, 2026). Je krijgt een client ID en een client secret — een vaste API-key bestaat niet bij Exact.
- Leg de redirect-URL vast. Daar stuurt Exact de gebruiker na toestemming heen, met een authorisatiecode in de URL. Hij moet letterlijk overeenkomen met wat in de app-registratie staat, inclusief protocol en trailing slash.
- Wissel de code om voor tokens. Je krijgt een access-token voor de calls en een refresh-token om te vernieuwen. Sla ze op waar meerdere processen er niet tegelijk aan zitten.
- Haal de division op. Vraag eerst op welke administraties deze gebruiker heeft en kies er een; zonder division-nummer werkt vrijwel geen enkele call.
- Doe je eerste call en plan meteen je throttling. Zestig calls per minuut is bij een import sneller op dan je denkt.
Voor een koppeling binnen je eigen Exact-omgeving ben je hier klaar. Wil je de app aan klanten buiten je eigen omgeving aanbieden, dan komt de App Center-review erbij — daarover verderop meer.
De Exact Online API-documentatie en je eerste call
Exact verdeelt de documentatie over twee plekken. De REST API-referentie geeft per resource de URI, de toegestane methodes, de scope en of er een webhook voor bestaat; uitleg over OAuth, limieten en voorbeeldcode staat in de Knowledge Base voor developers.
Een sandbox is er niet (Exact, Get Client ID and Client Secret). Je test in een demo-administratie van een proefaccount en maakt per omgeving een eigen app-registratie aan, van ontwikkeling tot productie.
Elke REST-call volgt hetzelfde adrespatroon: het landdomein, dan /api/v1/, dan het division-nummer en de resource, zoals https://start.exactonline.nl/api/v1/{division}/crm/Accounts (Exact, Tips and tricks). Voor Nederland is het domein start.exactonline.nl, voor België start.exactonline.be (Exact, Code examples).
Inloggen loopt via twee OAuth2-endpoints op datzelfde domein: /api/oauth2/auth voor de toestemming van de gebruiker en /api/oauth2/token voor de tokens (Exact, Set up authorization requests). De autorisatiecode die je terugkrijgt, is drie minuten geldig en werkt één keer.
Je eerste call na het inloggen is altijd dezelfde: vraag op welke administratie actief is (Exact, REST API reference information). Die call heeft geen division in de URL en telt daarom niet mee voor je daglimiet (Exact, API limits).
# 1. Code omwisselen voor tokens (form-encoded)
POST https://start.exactonline.nl/api/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=<code>&redirect_uri=<redirect-URL>&client_id=<client ID>&client_secret=<client secret>
# 2. Actieve administratie opvragen
GET https://start.exactonline.nl/api/v1/current/Me?$select=CurrentDivision
Authorization: Bearer <access token>
# -> "CurrentDivision": 7095
# 3. Relaties uit die administratie, alleen code en naam
GET https://start.exactonline.nl/api/v1/7095/crm/Accounts?$select=Code,Name
Authorization: Bearer <access token>
Een lijst komt terug in pagina's van meestal 60 records, met een __next-link naar de volgende pagina (Exact, Tips and tricks). Haal die links op tot er geen __next meer in de response staat.
In onze koppelingen keren deze vijf resources steeds terug; ze staan allemaal onder /api/v1/{division}/ (REST API-referentie).
| Resource | Endpoint | Methodes | Waarvoor |
|---|---|---|---|
| Relaties | crm/Accounts |
GET, POST, PUT, DELETE | Debiteur opzoeken of aanmaken |
| Verkoopfacturen | salesinvoice/SalesInvoices |
GET, POST, PUT, DELETE | Een order als factuur boeken |
| Artikelen | logistics/Items |
GET, POST, PUT, DELETE | Artikelkaarten gelijk houden met je webshop |
| Grootboekregels | financialtransaction/TransactionLines |
GET | Alleen lezen, voor rapportage |
| Webhooks | webhooks/WebhookSubscriptions |
GET, POST, PUT, DELETE | Meldingen aanzetten in plaats van pollen |
Welke limieten kent de Exact Online API?
Exact publiceert de limieten zelf: 60 calls per minuut en 5.000 calls per dag, per app per administratie (Exact, API limits). Twee apps op dezelfde administratie hebben dus elk hun eigen budget; één app op drie administraties ook.
Andere boekhoudpakketten tellen anders: waar Exact in calls telt, rekent Twinfield in credits per minuut en publiceert SnelStart geen limietgetal.
Overschrijd je een van beide vensters, dan antwoordt Exact met HTTP 429 tot de teller reset. De limieten gelden voor de REST- en de XML-API allebei.
Over alle apps samen hanteert Exact per Exact Online-contract een fair use van 20.000 calls per dag. Draait de klant op Exact Online Premium, dan is dat 30.000 in totaal, zonder aparte limiet per app.
Dat hangt dus aan het abonnement van de klant. Wie structureel meer dan 5.000 calls per dag per administratie nodig heeft, kan volgens de FAQ op dezelfde pagina ook contact opnemen met Exact.
| Venster | Standaard | Wat er gebeurt bij overschrijding |
|---|---|---|
| Per minuut | 60 calls per app per administratie | HTTP 429 tot de minuut reset |
| Per dag | 5.000 calls per app per administratie | HTTP 429, koppeling ligt plat tot de dagteller reset |
Je hoeft dat plafond niet te gokken: Exact stuurt het mee in de headers van elke call met een division in de URL, als X-RateLimit-Limit, -Remaining en -Reset voor de dag en X-RateLimit-Minutely-Limit en -Remaining voor de minuut (Exact, API limits). Een fatsoenlijke koppeling leest die mee en knijpt zelf af voordat de 429 valt.
Klinkt beheersbaar, en dat is het ook. Tot je een eenmalige import doet.
Duizenden historische facturen inladen tikt het dagbudget van 5.000 calls zo aan, en dan valt de import stil tot de volgende dag. Dit is precies waar de rekensom "hoeveel calls kost mijn scenario" begint te tellen.
Aan de leeskant bestaan zuinigere routes: de bulk- en sync-endpoints leveren 1.000 records per call in plaats van 60, en sync geeft na de eerste ronde alleen nieuwe en gewijzigde records terug (Exact, API types). Voor schrijven helpen ze niet, want bulk en sync kennen alleen GET.
Exact telt ook je fouten: boven 10 per uur per API-key, gebruiker, administratie en endpoint wordt de key een uur geblokkeerd, en bij herhaling langer (Exact, API limits). Responses 400, 401, 403 en 404 tellen als fout, dus een koppeling die blind opnieuw probeert, zet zichzelf stil.
Plan nachtelijke jobs buiten 4:00 tot 4:30 uur lokale tijd, want dan zijn Exact Online en de API's niet bereikbaar (Exact, Webhooks).
Waar lopen ontwikkelaars in de praktijk tegenaan?
Waar de meeste tijd in gaat zitten, zijn drie eigenaardigheden die je niet uit een marketingpagina haalt. Wij benoemen ze eerlijk, want ze bepalen of jouw scenario met een standaardkoppeling kan of niet.
Aflettering heeft geen REST-endpoint
Het programmatisch matchen van betalingen aan facturen — reconciliatie, oftewel afletteren — kan niet via de REST-API. Daarvoor moet je terugvallen op de oudere XML-API (Apideck, 2026).
Wil je dus dagelijkse aflettering automatiseren, dan bouw je feitelijk tegen twee API's tegelijk. Veel kant-en-klare connectors laten aflettering daarom links liggen.
Geen $expand, dus meer calls
De REST-API ondersteunt geen $expand om gerelateerde gegevens in een keer op te halen (Apideck, 2026). Factuurregels vragen een aparte call per factuur.
Bij duizenden facturen betekent dat honderden of duizenden extra calls — en dus druk op datzelfde dagbudget van 5.000.
De informatiewinst zit hier in het verband: de ontbrekende $expand en de rate limit versterken elkaar. Wie dat niet inplant, loopt bij het eerste grotere volume vast.
App Center-review kost tijd
Zolang Exact je app niet intern heeft goedgekeurd, kan die alleen koppelen met gebruikers binnen je eigen Exact-omgeving. Externe klanten aansluiten kan pas na review, en die kan weken duren (Apideck, 2026).
Voor een interne koppeling merk je hier niets van; wil je je integratie aan derden aanbieden, dan is dit een planningsfactor. In onze projecten calculeert CleverTech AI die reviewtijd vooraf in, zodat een go-live-datum niet op een goedkeuringsprocedure sneuvelt.
Waar AI in een Exact-koppeling wél verschil maakt: de aflettering
De twee gaten in de REST-API — geen endpoint voor aflettering, geen $expand — bepalen ook waar AI wel en niet zinvol is. Het boeken zelf is deterministisch: een factuurregel met een bedrag en een BTW-code hoeft geen model te raadplegen.
Het matchen doet dat wél. Een bankafschrift met een halve omschrijving, een afgerond bedrag en drie openstaande facturen van dezelfde debiteur is precies het soort vaagheid waar regels op stuklopen en een taalmodel een bruikbaar voorstel doet.
Wij zetten het daarom als voorstellaag in, niet als boekingslaag: het model rangschikt kandidaat-matches met een zekerheidsscore, de koppeling boekt alleen de zekere gevallen weg en legt de rest voor aan een mens. Dat houdt de audit trail intact en zet de tijdwinst op de stapel die anders handmatig was.
Dezelfde logica helpt bij grootboekcodering van inkoopfacturen.
Wat het niet oplost: je rate-limit-budget. Een model dat per twijfelgeval een extra call naar Exact doet om context op te halen, eet gewoon van diezelfde 5.000 per dag.
Wanneer volstaat een standaardkoppeling en wanneer heb je de API nodig?
Voor de meeste eenvoudige gevallen — standaard BTW, een administratie, geen bijzondere retour- of afletterlogica — volstaat een kant-en-klare koppeling uit de app-store van je webshop of Exact zelf. Die gebruikt de API voor je en is in minuten geactiveerd.
Zoek je op "exact online api" omdat de standaardkoppeling nét niet doet wat je nodig hebt, dan zit je waarschijnlijk in het maatwerkscenario. Om dat onderscheid scherp te krijgen gebruikt CleverTech AI de koppel-beslischeck: zes situaties die bepalen aan welke kant van de streep jouw scenario valt.
| Situatie | Standaardkoppeling | Maatwerk via de API |
|---|---|---|
| Aantal orders per maand | Laag tot gemiddeld | Hoog volume |
| BTW-logica | Standaard, een tarief per order | Gemengd, verlegd, OSS, per regel |
| Aflettering betalingen | Niet nodig of handmatig | Geautomatiseerd vereist |
| Aantal administraties | Een | Meerdere divisions |
| Retouren en creditfacturen | Zelden | Regelmatig, op regelniveau |
| Bronsystemen | Een webshop | Keten: webshop, CRM, kassa, magazijn |
Zie je jezelf overwegend in de rechterkolom staan, dan lopen standaardkoppelingen tegen hun grenzen aan en is een maatwerkintegratie de betrouwbaardere — en op termijn goedkopere — keuze. De uitgebreide afweging tussen zelf bouwen, standaard koppelen en laten bouwen staat in ons artikel API-integratie laten maken, en de basisbegrippen leggen we uit in wat is een API.
Wat kost het om de Exact Online API te gebruiken?
De API zelf is gratis; de kosten zitten in het bouwen en onderhouden van de koppeling die erop draait. Een kant-en-klare connector kost doorgaans een klein maandbedrag.
Een maatwerkkoppeling is een eenmalige bouwinvestering plus optioneel beheer, en de hoogte hangt af van richting, BTW-complexiteit en het aantal bronsystemen. We herhalen de prijstabellen hier niet — de volledige opbouw, van eenrichtingskoppeling tot multi-systeemketen, staat op onze pagina Exact Online koppeling laten maken, inclusief hoe de rate limits, het division-model en de token-refresh daar technisch worden opgevangen.
De kern van de kostenafweging is niet de API maar het volume en de complexiteit van jouw datastroom.
Een handvol orders per maand rechtvaardigt geen maatwerk. Gemengde BTW, dagelijkse aflettering en meerdere administraties wél.
Twijfel je waar je zit, leg je scenario kort aan ons voor — je krijgt eerlijk advies over standaard versus maatwerk, inclusief een kostenindicatie.
Opgesteld met AI-ondersteuning, geredigeerd en inhoudelijk verantwoord door het Redactieteam CleverTech AI.








