Exact Online API: zo haal je data op, met limieten en voorbeelden
Zo werkt de Exact Online REST API: app registreren, OAuth, divisies, de Sync API en de limieten van 60 calls per minuut en 5.000 per dag per administratie.
Door Auke Westra
Founder of DigiData
Kort antwoord
De Exact Online API is een REST-API met OData-syntax. Je registreert een app in het Exact Online App Center, logt in via OAuth 2.0 en roept endpoints aan per divisie (administratie), zoals /api/v1/{divisie}/financial/GLAccounts. Een access token is 10 minuten geldig. Per administratie mag een app 60 calls per minuut en 5.000 per dag doen; voor grote of incrementele exports gebruik je de Sync API met een Timestamp-filter.
Wat kun je met de Exact Online API?
Met de Exact Online API lees en schrijf je bijna alles wat in Exact Online staat: relaties, artikelen, verkoop- en inkoopfacturen, grootboekrekeningen, boekingsregels, projecten, uren, voorraad en personeelsgegevens. Ontwikkelaars gebruiken hem om een webshop, CRM of planningssysteem te koppelen, of om data naar een datawarehouse te halen voor rapportages.
Dit artikel is geschreven vanuit de praktijk: DigiData synchroniseert met deze API dagelijks de administraties van klanten. De getallen hieronder zijn de limieten waar wij mee werken. Controleer ze voor je bouwt in de actuele documentatie van Exact; ze worden af en toe aangepast.
Stap 1: registreer een app
Elke koppeling heeft een app-registratie nodig in het Exact Online App Center. Je krijgt een client ID en client secret en geeft een redirect-URL op waar Exact na het inloggen naar terugstuurt. Een app voor eigen gebruik is snel geregeld. Wil je de app aan andere bedrijven aanbieden, dan volgt een beoordeling door Exact.
Stap 2: inloggen met OAuth 2.0
Exact Online gebruikt de OAuth 2.0 authorization code flow:
- Stuur de gebruiker naar
https://start.exactonline.nl/api/oauth2/authmet je client ID, redirect-URL enresponse_type=code. - De gebruiker logt in bij Exact Online en geeft toestemming.
- Wissel de code die terugkomt in bij
https://start.exactonline.nl/api/oauth2/tokenvoor een access token en een refresh token.
Het access token is 10 minuten geldig. Daarna haal je met het refresh token een nieuw paar op; het oude refresh token vervalt dan. Twee dingen gaan in de praktijk vaak mis:
- Te vaak verversen. Vernieuw een token pas als het bijna verlopen is, en niet vaker dan ongeveer eens per 9,5 minuut. Draaien er meerdere processen, laat dan één proces het token beheren.
- Een verlopen refresh token. Wordt de koppeling een maand niet gebruikt, dan moet de gebruiker opnieuw inloggen.
Voor andere landen gebruik je het domein van dat land, zoals start.exactonline.be of start.exactonline.de.
Stap 3: kies de divisie
Een divisie is een administratie. Bijna elke URL bevat het divisienummer. Het nummer van de administratie waarin de gebruiker werkt, haal je zo op:
GET https://start.exactonline.nl/api/v1/current/Me?$select=CurrentDivision
Authorization: Bearer {access_token}
Accept: application/json
Alle administraties waar de gebruiker toegang toe heeft, staan in /api/v1/{divisie}/system/Divisions. Een accountant met tweehonderd klanten heeft dus tweehonderd divisies, en voor elke divisie gelden de limieten hieronder apart.
Stap 4: data ophalen
De API gebruikt OData-syntax. Met $select kies je velden, met $filter filter je, en grote resultaten komen in pagina's: volg de link in __next tot die ontbreekt. Een voorbeeld dat alle grootboekrekeningen ophaalt:
GET https://start.exactonline.nl/api/v1/{divisie}/financial/GLAccounts?$select=ID,Code,Description,Type
Vraag altijd alleen de velden op die je nodig hebt. Dat scheelt tijd en voorkomt time-outs bij grote tabellen zoals boekingsregels.
De Sync API voor grote en incrementele exports
Wil je een kopie bijhouden van bijvoorbeeld alle boekingsregels, gebruik dan de endpoints onder /sync/. Elke rij heeft een oplopend Timestamp-veld. Je vraagt eerst alles op vanaf Timestamp gt 1, onthoudt de hoogste waarde en vraagt de volgende keer alleen wat daarna is gewijzigd:
GET https://start.exactonline.nl/api/v1/{divisie}/sync/Financial/TransactionLines?$select=ID,Date,GLAccountCode,AmountDC,Timestamp&$filter=Timestamp gt 123456789L
Verwijderde records zie je in /sync/Deleted. Exact bewaart die ongeveer twee maanden; synchroniseer dus minstens één keer per maand, anders mis je verwijderingen.
Rate limits: 60 per minuut, 5.000 per dag
| Limiet | Waarde | Hoe je het ziet |
|---|---|---|
| Per minuut | 60 calls per app per administratie | Header X-RateLimit-Minutely-Remaining |
| Per dag | 5.000 calls per app per administratie | Headers X-RateLimit-Remaining en X-RateLimit-Reset |
| Fouten | Bij herhaalde fouten (400, 401, 403, 404) op hetzelfde endpoint blokkeert Exact tijdelijk | Gebruik geen retries op deze fouten |
Bij een overschrijding krijg je HTTP 429. Lees de headers bij elke response en wacht tot de reset, in plaats van blind opnieuw te proberen. 5.000 calls per dag klinkt veel, maar een eerste volledige export van een grote administratie met veel boekingsregels kan er een flink deel van gebruiken.
Wanneer je de API niet zelf hoeft te bouwen
Een koppeling met de Exact Online API is goed te bouwen, maar het onderhoud zit in de details: tokens die verlopen, limieten per administratie, gewijzigde velden en verwijderde records. Wil je de data alleen gebruiken voor rapportages, dashboards of AI, dan is een kant-en-klare koppeling meestal goedkoper:
- Power BI of Excel: met de Exact Online connector van DigiData staat je data als OData-feed klaar. Het stappenplan staat in Exact Online aan Power BI koppelen.
- ChatGPT of Claude: zie Exact Online koppelen aan ChatGPT of Claude.
- Dashboards zonder Power BI: het financieel dashboard bouw je op dezelfde gesynchroniseerde data.
DigiData haalt de data via de Sync API op, houdt rekening met de limieten per administratie en zet alles in een database die je kunt bevragen zonder je eigen API-tegoed te gebruiken. Werk je ook met andere pakketten, lees dan hoe de API's van Twinfield, Simplicate en Nmbrs werken.

Over Auke Westra
Founder of DigiData
Auke Westra is founder van DigiData. Hij was verantwoordelijk voor de data en rapportages van klanten en begon in 2025 met zijn team aan een eigen dataplatform. Hij schrijft over AI op bedrijfsdata, datadefinities, Power BI en koppelingen.
Klaar om te starten?
Probeer DigiData 14 dagen gratis. Verbind je software en gebruik je data in dashboards, de AI-agent of Power BI.
Gerelateerde artikelen
Exact Online koppelen aan ChatGPT of Claude: stappenplan
Stel vragen over je Exact Online-administratie in ChatGPT of Claude. In vier stappen alleen-lezen gekoppeld, met vijf startvragen en controletips.
Exact Online Power BI koppelen via OData
Koppel Exact Online aan Power BI met dit OData-stappenplan. Selecteer je data, stel authenticatie in en plan vernieuwing zonder eigen API-scripts.
Twinfield API: inloggen, browse codes en data ophalen
Zo werkt de Twinfield API: inloggen via OAuth 2.0, het cluster-adres, de XML-webservices en browse codes zoals 030_3 voor boekingen, met voorbeelden.
Simplicate API: v2 en v3, authenticatie, filters en limieten
Zo werkt de Simplicate API: een API-sleutel maken, de REST-API v2 en de nieuwere v3, filteren op wijzigingsdatum, pagineren en de rate limits.