Claude koppelen aan Exact Online: eerst alleen lezen, en waar je dat vastlegt

Ik las de code van een kant-en-klare koppeling tussen Exact Online en Claude. Hij komt van CData, een bekende leverancier van datakoppelingen. Op de verpakking staat "read-only".

In de code staan alleen twee korte beschrijvingen die het model vertellen dat het om SELECT-query's gaat.

Dat is een verzoek aan de AI en geen slot. Verderop in dezelfde handleiding staat dat je de gegevens kunt "read, write, update, and delete".

Wie Exact Online aan Claude koppelt, geeft een taalmodel toegang tot de boekhouding. De vraag is dan niet of het kan. De vraag is waar je vastlegt dat het alleen mag lezen.

Wat een koppeling tussen Exact Online en Claude doet

Claude praat met Exact via een MCP-server. Dat is een klein programma dat de vragen van Claude vertaalt naar aanroepen op de Exact Online API.

Je stelt dan gewone vragen. Welke facturen staan langer dan 60 dagen open? Wat was de omzet per klant in het derde kwartaal? Claude haalt de gegevens op en vat ze samen.

Een eigen MCP-server van Exact heb ik niet gevonden. Je kiest dus uit drie routes:

  • CData, uit de Verenigde Staten. De server is gratis en open source. Hij draait op hun driver. Een ontwikkelaarslicentie kost na de proefperiode 999 dollar per jaar.
  • Community-servers op GitHub. Ik vond er zes met werkende code. Vier hebben geen licentie en ze hangen allemaal aan één ontwikkelaar.
  • Gehoste diensten, zoals Zapier. Dan kijkt er naast Anthropic nog een partij mee in je administratie.

Exact bouwt daarnaast eigen AI-agents in het pakket, zoals een Purchase Agent die boekingen voorstelt. Je gegevens gaan dan niet naar een extra partij die je zelf moet contracteren.

Claude koppelen loont vooral als je vragen wilt stellen over meerdere systemen tegelijk.

Lees ook: MCP-servers die je beter niet installeert: waarom een repo van één persoon een risico is

Alleen lezen staat in de beschrijving, niet in de code

De server van CData geeft Claude drie gereedschappen: tabellen opvragen, kolommen opvragen en een query uitvoeren. Bij dat laatste staat de beschrijving "Execute a SQL SELECT statement".

Die beschrijvingen zijn wat het model leest. In de servercode zit geen controle die een andere opdracht tegenhoudt. De verbinding met Exact wordt ook niet op alleen-lezen gezet.

De driver eronder kan wel schrijven. Hij heeft zelfs een eigen schakelaar ReadOnly, die standaard uit staat. Het voorbeeld in de handleiding zet hem niet aan.

Nog een detail. Volgens de handleiding bepaal je met de instelling Tables welke tabellen open staan.

In de code bepaalt die instelling alleen voor welke tabellen de server een kolomoverzicht klaarzet. De lijst met tabellen toont ze allemaal. Een query kan elke tabel lezen, ook die met salarissen.

Ik heb de server niet gedraaid, alleen de code gelezen. Of een schrijfopdracht via deze weg echt doorkomt, weet ik dus niet.

Wel weet ik dat de servercode zelf niets controleert. Of de driver een schrijfopdracht via deze leesaanroep weigert, staat nergens beschreven.

Drie plekken om alleen-lezen vast te leggen bij Exact Online, van sterk naar zwak: een Exact-gebruiker zonder schrijfrechten, de app-rechten in het App Center en de schakelaar in de koppeling. De beschrijving van het gereedschap is geen slot
Hoe verder van het model, hoe sterker het slot.

Waar je de grens wel vastlegt

Mijn regel: leg een grens zo ver mogelijk van het model vast. Een model kan een instructie verkeerd lezen. Een gebruiker zonder schrijfrechten kan niet schrijven, wat het model ook vraagt.

Bij Exact Online zijn er drie plekken, van sterk naar zwak.

1. Een aparte Exact-gebruiker voor de koppeling. Een koppeling werkt met de rechten van de gebruiker die inlogt.

Maak daarom een eigen gebruiker aan met alleen leesrechten en alleen de administraties die nodig zijn.

Dat geeft je meteen een controle. Veel records in Exact krijgen een veld "aangemaakt door". Duikt die koppelgebruiker daar ooit op? Dan is er toch geschreven.

2. De rechten van de app in het App Center. Wie de API gebruikt, registreert een app bij Exact. Per onderdeel kies je daar geen toegang, lezen of beheren.

Zet salarissen en medewerkers op geen toegang.

Eén voorbehoud. Ik kon niet sluitend vaststellen of die instellingen ook gelden voor een app die je alleen voor je eigen administratie registreert. Test het dus: laat de koppeling iets proberen te schrijven en kijk of Exact het weigert.

3. De koppeling zelf. Gebruik je CData, zet dan ReadOnly=True in de verbinding.

Bij community-servers verschilt het per server. Ik zag drie namen: ALLOW_WRITE, ENABLE_WRITE_TOOLS en EXACT_READ_ONLY. Twee servers kunnen altijd schrijven. Kijk dus in de code of er een schakelaar is en hoe hij staat.

De beschrijving van een gereedschap telt niet als vierde slot. Het model kan hem negeren.

Wat Claude te zien krijgt

Alleen lezen voorkomt een foute boeking. Het voorkomt geen datalek. Alles wat de koppeling ophaalt, gaat als deel van je vraag naar Anthropic, de maker van Claude.

Dan telt welk abonnement je hebt.

Bij Free, Pro en Max kies je sinds 28 augustus 2025 zelf of je gesprekken voor training mogen worden gebruikt.

Met training aan mag Anthropic ze tot vijf jaar bewaren. Met training uit is een gesprek dat je verwijdert binnen 30 dagen weg.

Bij Team, Enterprise en de API traint Anthropic niet op je gegevens en hoort er een verwerkersovereenkomst bij.

Bij Anthropic zelf staat de opslag in de Verenigde Staten. Een Europese opslaglocatie kan alleen via Amazon Bedrock of Google Cloud.

Ook je laptop bewaart een kopie als je met Claude Code werkt. Sessies staan standaard 30 dagen in platte tekst op schijf, met de uitkomsten van je Exact-vragen erin.

Voor de AVG maakt het uit wat er in je administratie staat. Klanten met een eenmanszaak zijn natuurlijke personen. Salarisgegevens zitten in dezelfde omgeving.

Leg dus in je AI-beleid vast welke gegevens de koppeling mogen passeren.

Waar leesvragen misgaan

Ook lezen gaat soms fout. Meestal werkt de vraag in Exact anders dan je denkt.

  • Open of verwerkt. Het saldo per grootboekrekening telt standaard open en verwerkte boekingen bij elkaar. Voor de definitieve stand moet de vraag dat expliciet zeggen.
  • Creditnota's. Omzet per klant klopt alleen als verkoopfacturen en creditnota's samen meetellen.
  • De verkeerde bv. Een deel van de koppelingen valt terug op de huidige administratie van de ingelogde gebruiker. Met meerdere bv's vraag je zo naar de verkeerde.
  • De limieten. De Exact Online API staat 60 aanroepen per minuut en 5.000 per dag toe, per app per administratie. De meeste onderdelen geven 60 regels per keer.

Dat laatste klinkt ruim. Twaalfduizend transactieregels ophalen via een gewoon onderdeel kost 200 aanroepen. Dat is 4 procent van je dagbudget en ruim drie minuten wachten. Via het bulkonderdeel zijn het er 12. Niet elke koppeling gebruikt dat.

Een model dat zelf gaat zoeken en een paar keer een verkeerde query probeert, zit daar snel boven. Kies daarom onderdelen die Exact zelf al optelt, zoals het saldo per grootboekrekening. Laat Claude daarna uitleggen wat het getal betekent.

Van lezen naar boeken, in drie stappen

In april schreef ik over AI in je administratie. Daar noemde ik een grens van 500 euro waaronder facturen automatisch geboekt mogen worden. Die grens blijft staan, als derde stap.

  1. Lezen. Claude beantwoordt vragen. Er verandert niets in de boekhouding.
  2. Voorstellen. De koppeling zet boekingen klaar als concept. Een memoriaalboeking via de API kan op de status open blijven staan tot een mens hem verwerkt. Dat hangt af van de instellingen van het dagboek. Test het eerst.
  3. Automatisch onder een drempel. Pas als stap 2 een tijd zonder fouten loopt.

De beroepsgroep beschrijft stap 2 en 3 in dezelfde volgorde. De AI-leidraad van NBA en NOREA van juni 2026 noemt voorstellen die de gebruiker autoriseert.

Pas "nadat er voldoende vertrouwen in de verwerking is" kun je delen volledig automatisch laten verwerken.

Er is ook een praktische reden om met lezen te beginnen. Zapier waarschuwt bij zijn eigen Exact-koppeling dat een herhaalde poging om een verkoopfactuur te maken een tweede factuur oplevert. Bij lezen kan dat niet.

Als ik morgen zou beginnen

  1. Maak een Exact-gebruiker voor de koppeling. Alleen lezen, alleen de administraties die nodig zijn.
  2. Registreer de app met lezen per onderdeel. Zet salarissen en medewerkers op geen toegang. Test of een schrijfpoging wordt geweigerd.
  3. Kies een zakelijk abonnement of de API. Dan traint Anthropic niet op je gegevens en heb je een verwerkersovereenkomst.
  4. Begin met drie vaste vragen. Kies vragen die je nu met de hand uitzoekt. Leg de uitkomst een maand lang naast wat je zelf vindt.

Veelgestelde vragen

Waar je begint

Welke gegevens bij jou zo'n koppeling mogen passeren, hangt af van wat er in je administratie staat. Dat zoek ik met je uit in de AI Kansen Scan.

Hoe ik AI-systemen controleerbaar houd, lees je op mijn pagina over AI-governance.

Vincent van Deth

AI Strategy & Architecture

Vincent van Deth bouwt productiesystemen met AI voor het MKB. Hij is de maker van VNX, een multi-agent LLM orchestrator, en helpt teams betrouwbare AI-automatisering te shippen — zonder bullshit.

Reacties

Je e-mailadres wordt niet gepubliceerd. Reacties worden beoordeeld voor plaatsing.

Reacties laden...