Kort antwoord
De SnelStart B2B-API werkt niet met één API-key maar met drie sleutels: een subscription key uit het B2B-developerportaal (van jou als bouwer), een koppelingssleutel die je klant zelf aanmaakt in SnelStart Web, en een access token dat je daarmee ophaalt. Die koppelingssleutel is de lastige: de maatwerktegel waarmee de klant hem maakt, werkt alleen bij de pakketten inZicht en inControle, dus dat check je vóór de offerte. SnelStart publiceert geen rate-limitgetal — je merkt de grens aan een HTTP 429 — en webhooks horen alleen bij de zwaardere productieroute met OAuth, minimaal vijf klanten en certificering, waarvoor eenmalig €250 exclusief btw per permanente sleutel wordt gerekend. Een standaard boekhoudkoppeling kost bij ons €2.000 tot €5.000 eenmalig plus €150 tot €350 per maand beheer.
Van lezen naar doen.
Business Center Altena / HVS Trading (Henk Verhoeven)Multi-tenant Huurdersportaal met IoT-energiemonitoring
IoT + AIgeautomatiseerd meterstanden aflezen

De SnelStart B2B-API draait op https://b2bapi.snelstart.nl/v2/ en heeft geen API-key in de gebruikelijke zin. Je hebt er drie sleutels voor nodig, en precies één daarvan is niet van jou: die maakt je klant zelf aan in zijn eigen administratie.
Dat is het verschil dat de meeste offertes voor een SnelStart-koppeling te laag maakt. Bij Exact Online regel je toegang met OAuth2 en een division-nummer en ben je klaar; bij SnelStart hangt het koppelproces aan een handeling van de klant, aan zijn abonnement en aan een certificering achteraf.
De bredere afweging tussen pakket en maatwerk staat in onze gids over maatwerk software. Hier gaat het puur om wat een developer tegenkomt.
De drie sleutels, en wie welke bezit
Een call naar de SnelStart-API bevat twee sleutels in de headers en is voorafgegaan door een derde in de token-aanvraag. Ze komen uit drie verschillende handen.
| Sleutel | Van wie | Waar hij vandaan komt |
|---|---|---|
| Subscription key (primary en secondary) | Van jou als bouwer | Je profiel in het B2B-developerportaal |
| Koppelingssleutel (clientkey) | Van de klant | De klant maakt hem zelf aan in SnelStart Web |
| Access token | Afgeleid | Ruil je bij elke sessie in voor de koppelingssleutel |
De koppelingssleutel is de lastige. De klant haalt hem op onder de koppelingen in SnelStart Web, via de maatwerktegel, en die tegel werkt alleen bij de pakketten inZicht en inControle (SnelStart kennisplein, 2026).
Zit je klant op een lichter pakket of nog in de proefperiode, dan is er geen sleutel en dus geen koppeling. Dat check je vóór de offerte, niet tijdens de bouw.
Het token halen: één POST, form-encoded
De token-aanvraag gaat naar een andere host dan de API zelf en is bewust simpel: geen redirect, geen client secret, alleen de koppelingssleutel van de klant.
curl -X POST https://auth.snelstart.nl/b2b/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=clientkey&clientkey=<koppelingssleutel van de klant>"
Let op het formaat.
De veelgeciteerde integratiegids van Apideck toont de body als een JSON-object met een veld clientKey, terwijl de PHP-client van IntoWebDevelopment hem al jaren form-encoded verstuurt als grant_type=clientkey&clientkey=… (iwd-nl/snelstart-php, 2026). Wij bouwen op de tweede variant, omdat dat werkende productiecode is en geen samenvatting ervan.
De respons bevat expires_in. Apideck noemt een uur; die PHP-client beschouwt een token met minder dan twintig seconden resttijd alvast als verlopen, zodat een call niet halverwege omvalt.
Daarna gaat elke call naar de API met beide headers tegelijk:
GET /v2/relaties?$filter=Naam eq 'Jansen'&$top=25 HTTP/1.1
Host: b2bapi.snelstart.nl
Ocp-Apim-Subscription-Key: <jouw subscription key>
Authorization: Bearer <access token>
Welke endpoints er zijn
De API is een REST-laag op Azure API Management (Apideck, 2026) met OData-filters. De resources volgen de Nederlandse boekhoudtermen, niet de Engelse.
relaties— debiteuren en crediteuren, inclusiefrelaties/{id}/doorlopendeincassomachtigingenverkoopboekingeneninkoopboekingen— de boekingen zelf, met regelsverkoopfactureneninkoopfacturen— lezen, plusverkoopfacturen/{id}/ublvoor de UBL-versieverkooporders— aanmaken en verwijderengrootboeken,btwtarieven,kostenplaatsen,artikelen,landen— de stamgegevensdocumenten— bijlagen bij een boeking of relatie
Filteren gaat met $filter, pagineren met $top en $skip. Er is geen $expand, dus gerelateerde gegevens haal je met een extra call op — net als bij Exact Online.
Dat tikt aan.
Een factuur wegschrijven raakt in de praktijk de relatie, het btwtarief, het grootboek en pas daarna de boeking zelf (Apideck, 2026). Reken bij je ontwerp met calls per order, niet met orders per dag.
Wat er níet in de documentatie staat
Drie dingen die elke SnelStart-koppeling raken zijn nergens hard gepubliceerd. Dat is geen slordigheid van SnelStart maar een ontwerpkeuze, en je moet er alsnog omheen bouwen.
Geen gepubliceerd rate-limitgetal. Waar Exact Online limieten per administratie publiceert, geeft SnelStart ze niet vrij; de ontwikkelsleutel is negentig dagen geldig en staat een niet-gespecificeerd aantal calls toe (Maesn, 2026). Je krijgt gewoon een HTTP 429 zodra je eroverheen gaat.
Daar zit precies de reden voor die tweede subscription key.
De PHP-client wisselt bij een 429 van de primary naar de secondary sleutel en geeft het pas op als ook die 429 teruggeeft, met maximaal drie pogingen (iwd-nl/snelstart-php, 2026). Wie alleen de primary sleutel configureert, gooit die marge weg.
Webhooks: het hangt af van je route. De publieke B2B-API documenteert geen webhooks, dus voor een maatwerkkoppeling is periodiek pollen het eerlijke antwoord. Vraag je een productiekoppeling aan voor meerdere eindgebruikers, dan vraagt SnelStart in het aanmeldformulier juist wél om een webhook-URL, en is OAuth daar verplicht (SnelStart, 2026).
Bouw je dus voor één klant, ontwerp dan op polling. Bouw je een product voor de markt, reken dan op de zwaardere route: OAuth, minimaal vijf klanten bij aanmelding en een certificeringsperiode van circa twaalf dagen.
Certificering kost geld. Na goedkeuring rekent SnelStart eenmalig €250 exclusief btw per afgegeven permanente sleutel (SnelStart kennisplein, 2026). Klein bedrag, maar het staat zelden in een offerte en het moment waarop het valt, ligt ná de bouw.
De fouten die pas in productie opduiken
In koppeltrajecten op boekhoudpakketten ziet CleverTech AI steeds dezelfde drie statuscodes terugkomen, en geen ervan betekent wat de code suggereert.
| Code | Wat je denkt | Wat het meestal is |
|---|---|---|
| 401 | Verkeerde subscription key | Het access token is verlopen, of de klant zette een backup terug |
| 400 | Foute JSON | Btw op boekingsniveau klopt niet met de btw op regelniveau |
| 429 | Te veel verkeer | Eén import die het ongepubliceerde plafond raakt |
Die 401 na een backup verdient toelichting.
Zet een klant een herstelpunt terug, dan krijgt de administratie een nieuwe koppelingssleutel en moet de koppeling opnieuw geactiveerd worden (SnelStart kennisplein, 2026). Je koppeling staat stil tot iemand dat doorheeft.
Bouw daarom een expliciete melding op een mislukte token-aanvraag, gericht aan de klant en niet aan je eigen logfile. Dezelfde eigenaardigheid speelt bij Yuki, waar de accountant de administratie beheert en dus ook de koppeling in handen heeft.
De 400 is de stillere.
SnelStart valideert btw op twee niveaus tegelijk en weigert de boeking zodra ze niet overeenkomen (Apideck, 2026). Bij standaardtarieven merk je daar niets van; bij verlegde btw, marge-artikelen of een deelretour valt de hele boeking om.
Waar de AI zit: vóór de call, niet erin
De API accepteert alleen een complete, gevalideerde boeking. Dat maakt de interessante AI-vraag niet "wat kan AI in SnelStart doen", maar: wie vult de velden die de API eist?
Bij een inkoopfactuur zijn dat er drie die niemand leuk vindt: welk grootboek, welk btwtarief, welke kostenplaats. Precies die drie staan als eigen endpoints in de API (grootboeken, btwtarieven, kostenplaatsen), dus een model kan de geldige waarden ophalen en daaruit kiezen in plaats van iets te verzinnen.
Het patroon dat daaruit volgt, is een pijplijn in drie stappen:
- Extractie — een PDF of scan omzetten naar bedragen, regels en btw-percentages
- Classificatie — die regels koppelen aan een grootboekrekening uit de lijst die de API teruggeeft
- Boeking — het resultaat als
inkoopboekingwegschrijven, met de bijlage viadocumenten
De koppeling blijft in dat model saai en deterministisch, en dat is de bedoeling: het onzekere deel zit ervóór, met een mens die de voorstellen afkeurt of accepteert. Hoe wij zo'n laag bouwen en wat hij kost, staat op software met AI.
Eén grens hoort erbij.
Een classifier die op honderd facturen goed scoort, kan op een nieuwe leverancier structureel de verkeerde kostenplaats kiezen — zonder foutmelding, want de API accepteert elke geldige waarde. Laat het voorstel dus voorstel blijven tot je een paar maanden meetgegevens hebt.
Wanneer je dit helemaal niet moet laten bouwen
De meeste SnelStart-gebruikers hebben geen maatwerkkoppeling nodig. Voor een webshop met een gangbare btw-stroom bestaat er een plugin, en die gebruikt dezelfde API.
Onze eigen grens: onder de tien orders per dag op SnelStart verdient een koppeling van €2.000 zich pas na zes tot twaalf maanden terug, en adviseren we een standaard plugin. Die grens en de prijsopbouw staan voluit op boekhoudkoppeling en ERP-integratie: €2.000 tot €5.000 eenmalig voor een standaardstroom, €150 tot €350 per maand voor monitoring en onderhoud.
Maatwerk wordt de betere keuze zodra minstens twee van deze vier gelden:
- Btw die per regel verschilt: verlegd, marge, OSS of een mix
- Een bronsysteem zonder plugin, zoals eigen software of een planningspakket
- Meer dan twee systemen in de keten, waardoor je een doorgeefluik nodig hebt
- Documenten die als bijlage mee moeten, niet alleen bedragen
Zit je daar, dan ligt een SnelStart-koppeling in dezelfde bandbreedte als onze andere API-koppelingen op maat: vanaf €5.000 in één richting, €7.500 tot €15.000 bidirectioneel met datatransformatie.
Twijfel je aan welke kant je zit, dan is de snelste check niet je ordervolume maar je btw. Stuur ons je btw-situatie en je bronsysteem — daarmee is in één gesprek duidelijk of een plugin het redt.
Opgesteld met AI-ondersteuning, geredigeerd en inhoudelijk verantwoord door Bram Dokman.









