Kennisbank
Exact Online koppelen met ChatGPT: wat kan er met MCP?
Exact Online koppelen met ChatGPT gaat via een eigen app in developer mode: ChatGPT roept een MCP-server aan, en die server roept de REST API van Exact Online aan. Exact levert zo'n server zelf niet (stand 3 oktober 2026), dus hij wordt gebouwd op twee OAuth-verbindingen en de endpoints die bij je vragen horen.
Bijgewerkt op
Hoe koppel je Exact Online aan ChatGPT?
Met een eigen app in developer mode. Volgens OpenAI geeft developer mode volledige ondersteuning voor MCP, het Model Context Protocol, inclusief tools die schrijven. Je zet het aan onder Settings, Security and login, en maakt daarna op de pagina Plugins een app aan met het adres van je MCP-server. ChatGPT ondersteunt daarbij streaming HTTP en SSE.
| Plan | Wie de app aanmaakt | Wie hem gebruikt |
|---|---|---|
| Plus, Pro | De gebruiker zelf | Alleen die gebruiker |
| Business | Alleen admins en owners | De werkruimte, na publicatie door een admin |
| Enterprise, Edu | Admins, owners en leden met rechten via RBAC | Groepen die de admin kiest |
Drie details uit de documentatie van OpenAI bepalen de inrichting:
- Apps uit developer mode werken alleen op ChatGPT in de browser, niet in de mobiele app.
- Bij Business kan een gepubliceerde app niet worden bijgewerkt. Een nieuwe tool betekent de app opnieuw aanmaken en publiceren.
- Bij Enterprise en Edu haalt de admin wijzigingen op met Refresh. Nieuwe tools staan dan standaard uit en gewijzigde tools verschijnen als diff.
Exact levert geen MCP-server. Een zoekopdracht op "MCP" en "ChatGPT" in de kennisbank van Exact Online gaf op 3 oktober 2026 nul resultaten. De server wordt dus gebouwd op de REST API van Exact, met een eigen app-registratie.
Waarom zijn er twee OAuth-verbindingen?
Omdat geen van beide kanten een verbinding zonder gebruiker toestaat. ChatGPT ondersteunt geen client credentials, service accounts of eigen API-sleutels richting een MCP-server. Exact ondersteunt alleen authorization code en implicit, ook geen client credentials. Er zijn dus twee verbindingen, allebei op naam van een gebruiker.
| Verbinding | Token | Geldigheid |
|---|---|---|
| ChatGPT naar MCP-server | Uitgegeven door de MCP-server | Bepaalt de server; zonder refresh token moet de gebruiker opnieuw inloggen |
| MCP-server naar Exact | Access token van Exact | 10 minuten, een nieuw pas na 570 seconden |
| MCP-server naar Exact | Refresh token van Exact | 30 dagen; elke vernieuwing geeft een nieuw refresh token |
Bij de eerste login kiest de gebruiker in het toestemmingsscherm van Exact welke administraties de app mag zien. Een aanroep op een andere administratie geeft "User division is not within division scope". Het refresh token staat volgens Exact voor de rechten van die gebruiker. Het hoort versleuteld bij de MCP-server te staan; ChatGPT ziet het nooit.
OpenAI wijst op één valkuil aan de eerste kant. Geeft de MCP-server geen refresh tokens uit, of staat offline_access niet in zijn metadata, dan verliest ChatGPT de toegang zodra de eerste autorisatie verloopt. De gebruiker logt dan steeds opnieuw in, ook als het token van Exact nog geldig is.
Wat kan ChatGPT lezen uit Exact Online?
Alles waarvoor de REST API een endpoint heeft, binnen de scopes van de app en de rechten van de gebruiker. Een set tools voor debiteurenbeheer:
| Tool | Endpoint in Exact | Velden |
|---|---|---|
openstaande_posten |
read/financial/ReceivablesList |
InvoiceNumber, Amount, DueDate, YourRef |
ouderdom_debiteuren |
read/financial/AgingReceivablesList |
AgeGroup1Amount tot AgeGroup4Amount, TotalAmount |
kredietlimiet |
crm/Accounts |
CreditLineSales, PaymentConditionSales, Blocked |
betaaltermijn |
cashflow/PaymentConditions |
PaymentDays, PaymentMethod |
Een tool krijgt een naam, een beschrijving en een invoerschema. Een tool die alleen leest, krijgt readOnlyHint; zonder die annotatie behandelt ChatGPT hem als schrijvende tool en vraagt het bij elke aanroep om bevestiging.
{
"name": "ouderdom_debiteuren",
"description": "Gebruik dit voor vragen over achterstallige debiteuren. Geeft per klant het openstaande bedrag per ouderdomsgroep.",
"inputSchema": {
"type": "object",
"properties": { "minimaal_bedrag": { "type": "number" } }
},
"annotations": { "readOnlyHint": true }
}
Daarnaast kent MCP een veld instructions voor de hele server. OpenAI adviseert de eerste 512 tekens zelfstandig leesbaar te houden. Daar staat bijvoorbeeld dat alle tools één budget van 60 calls per minuut delen en dat een overzicht van alle klanten via ouderdom_debiteuren gaat en niet klant voor klant.
Kan ChatGPT ook schrijven in Exact Online?
Ja, met bevestiging. SalesInvoices neemt een POST aan met de verplichte velden Journal en OrderedBy. Wie geen factuur naar de klant wil sturen, gebruikt volgens Exact SalesEntries, met de verplichte velden Customer, Journal en SalesEntryLines. SalesOrders vraagt OrderedBy en minstens één orderregel.
In ChatGPT gelden voor een eigen app deze regels, volgens de documentatie van OpenAI:
- Een schrijvende tool vraagt standaard om bevestiging. De gebruiker ziet de volledige JSON van de invoer voordat hij goedkeurt.
- Een gebruiker kan een goedkeuring onthouden voor de rest van het gesprek. In een nieuw gesprek vraagt ChatGPT opnieuw.
- Een tool die ten onrechte
readOnlyHintdraagt, kan toch schrijven. OpenAI noemt dat zelf als risico. - Prompt injection via een andere bron, zoals een e-mail, kan ChatGPT tot een schrijfactie verleiden die de gebruiker niet bedoelde.
De harde grens ligt daarom buiten ChatGPT. Een app met alleen leesscopes in Exact krijgt geen schrijvende tools in de MCP-server. Een app die mag schrijven, krijgt precies de tools die nodig zijn, en de MCP-server logt elke aanroep met gebruiker, invoer en het antwoord van Exact.
Hoeveel calls kost een vraag?
Exact telt 60 calls per minuut en 5.000 per dag, per app en per administratie. Elk antwoord bevat X-RateLimit-Minutely-Remaining, zodat de MCP-server ziet hoeveel ruimte er nog is. Boven de grens geeft Exact HTTP 429. Meer over die limieten staat in Exact Online API limieten.
Een rekenvoorbeeld met de vraag "welke klanten zitten boven hun kredietlimiet?" bij 450 debiteuren:
- Klant voor klant: per debiteur één call naar
crm/Accountsen één naarReceivablesListis 450 × 2 = 900 calls. Bij 60 per minuut duurt dat 15 minuten, en het kost 18 procent van het dagbudget voor één vraag. - In bulk:
AgingReceivablesListmet 450 regels bij 60 per pagina is 8 calls (7,5 naar boven afgerond).crm/Accountsmet$selectopID,NameenCreditLineSalesis nog eens 8 calls. - Samen 16 calls. Dat past in één minuut, en de MCP-server vergelijkt saldo en limiet zelf voordat ChatGPT het antwoord krijgt.
De beschrijving van de tool en het veld instructions sturen ChatGPT naar de tweede route. Krijgt de MCP-server toch een 429, dan geeft hij ChatGPT een melding met de wachttijd in plaats van de aanroep eindeloos te herhalen. Exact blokkeert een sleutel een uur na 10 fouten per uur op hetzelfde endpoint, en 400, 401, 403 en 404 tellen daarbij mee. Hoe zo'n budget per vraag wordt uitgerekend, staat in doorvoer berekenen.
Wat betekent dit voor je koppeling?
Een koppeling tussen Exact Online en ChatGPT draait op dezelfde REST API, dezelfde OAuth-tokens en dezelfde limieten als de koppeling tussen Exact en je webshop. Wij bouwen de MCP-server met de tools die bij jouw vragen horen, met de bulkroutes en rekensommen in code, en hosten en bewaken hem daarna. Verandert Exact een endpoint of OpenAI de eisen aan apps, dan passen wij de server aan.
In het dashboard staat per aanroep welke gebruiker welke tool gebruikte en wat Exact teruggaf. Wat we verder met Exact koppelen staat op Exact Online koppelen aan je webshop, het overzicht van alle stromen op koppelingen. Vertel welke vragen je in ChatGPT aan Exact wilt stellen, dan hoor je welke endpoints en scopes daarvoor nodig zijn.
Veelgestelde vragen
Levert Exact zelf een koppeling met ChatGPT?
Nee. In de kennisbank van Exact Online staat op 3 oktober 2026 geen artikel over MCP of ChatGPT. Een koppeling wordt gebouwd als eigen app in developer mode, op een MCP-server die de REST API van Exact aanroept.
Welk ChatGPT-abonnement heb ik nodig?
Developer mode staat volgens OpenAI open voor Plus, Pro, Business, Enterprise en Edu, op ChatGPT in de browser. Bij Business en Enterprise zet een admin of owner de app klaar en publiceert hij hem voor de werkruimte. In de mobiele app werken deze apps niet.
Kan ChatGPT facturen aanmaken in Exact Online?
Technisch wel. SalesInvoices neemt een POST aan met de verplichte velden Journal en OrderedBy. ChatGPT vraagt standaard om bevestiging voor elke tool zonder readOnlyHint. Of de app mag schrijven, leg je daarnaast vast in de scopes van de app in Exact.
Gebruikt een ChatGPT-koppeling het API-budget van mijn webshopkoppeling?
Nee, zolang de MCP-server een eigen app-registratie bij Exact heeft. Exact telt 60 calls per minuut en 5.000 per dag per app en per administratie. Alle ChatGPT-gebruikers van dezelfde administratie delen wel het budget van die ene app.
Waarom moet ik af en toe opnieuw inloggen?
Er zijn twee tokens die kunnen verlopen. Het refresh token van Exact vervalt als de app 30 dagen niet is gebruikt. En geeft de MCP-server zelf geen refresh tokens uit, dan verliest ChatGPT volgens OpenAI de toegang zodra de eerste autorisatie verloopt. Een goed ingerichte server geeft refresh tokens uit en meldt offline_access in zijn metadata.
Wat is het verschil met de AI-agents van Exact zelf?
De agents van Exact werken binnen het pakket, op een vaste set gegevens: de Financial Agent op winst en verlies, de Excel Agent op klanten, offertes en verkoopkansen. Een MCP-server bepaal je zelf en kan Exact combineren met andere systemen. Een overzicht van de agents staat in Exact Online koppelen met Claude.
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