Boekhouding

e-Boekhouden.nl heeft een API. Ouder dan de meeste, en hij werkt nog prima

e-Boekhouden.nl is een van de oudste online boekhoudpakketten van Nederland en heeft een enorme installed base van kleine bedrijven en verenigingen. Er is ook een API — het meest gezochte eraan, wat je vertelt wie er zoekt.

Het is een interface uit het SOAP-tijdperk met sessietokens in plaats van een moderne REST API, en dat is geen reden om hem te vermijden. Het is een reden om er zorgvuldig op te bouwen, want de faalgevallen zijn minder vergevingsgezind.

  • SOAP-interface met sessiebeheer
  • Facturen, relaties, mutaties
  • Vanaf € 1.700 plus servicekosten
De tool

Wat e-Boekhouden.nl is, en wat de API wel en niet doet

e-Boekhouden.nl is een Nederlands online boekhoudpakket voor kleine bedrijven, zzp'ers en verenigingen: facturatie, bankimport, btw-aangiftes, grootboek, en een grote bibliotheek importsjablonen. Het is laag geprijsd en zeer breed gebruikt, vooral door boekhouders die er jaren geleden op gestandaardiseerd zijn.

De API is een SOAP-webservice. Je opent een sessie, krijgt een sessie-ID, en gebruikt dat een beperkte tijd voordat het verloopt; er is een gedocumenteerde set aanroepen voor het toevoegen van facturen, het toevoegen en lezen van relaties, en het lezen van mutaties. Volledig werkbaar, maar stateful op een manier die moderne API's niet zijn, en een koppeling die de sessielevensduur negeert faalt met tussenpozen op manieren die willekeurig lijken.

Wat er misgaat

Drie dingen die misgaan met een e-Boekhouden.nl-koppeling

Twee van deze drie zijn specifiek voor hoe deze API werkt, en precies daarom is een koppeling gebouwd door iemand die hem niet eerder is tegengekomen de eerste zes maanden vaak wankel.

De sessie verloopt halverwege een batch

Een naïeve koppeling opent een sessie, begint veertig facturen te versturen, en de sessie verloopt bij nummer achtentwintig. Twaalf facturen verdwijnen, er komt bij niemand een foutmelding aan, en het verschil wordt aan het einde van het kwartaal gevonden.

Wat je in plaats daarvan ziet

Sessies worden vernieuwd voordat ze verlopen en elke factuur wordt afzonderlijk bevestigd voordat hij als klaar wordt gemarkeerd. Een sessie die halverwege sterft betekent dat de rest in de wachtrij wacht, niet dat hij verdwijnt.

Dubbele facturen door retries

Een aanroep loopt in een timeout maar is op de server wél gelukt. De koppeling probeert het opnieuw, en nu zijn er twee facturen voor één order. Omdat de nummering doorlopend is, betekent die dubbele later vinden dat je ze moet doorlezen.

Wat je in plaats daarvan ziet

Elke order neemt zijn eigen kenmerk mee de factuur in, en de koppeling controleert daarop voordat hij iets aanmaakt. Een retry vindt de bestaande factuur en gaat verder.

Het importsjabloon van de boekhouder en jouw koppeling zijn het oneens

Veel e-Boekhouden-gebruikers hebben al een boekhouder die maandelijks iets uit een CSV importeert. Zet je daarnaast een live koppeling zonder het te melden, dan wordt dezelfde omzet twee keer geboekt, op verschillende grootboekrekeningen.

Wat je in plaats daarvan ziet

De grootboekmapping wordt afgestemd met wie je boekhouding doet vóór de eerste factuur wordt verstuurd, en de oude import wordt in dezelfde week uitgezet. Tien minuten afstemmen, en een maand verwarring voorkomen.

De rekening van het handwerk

Wat het handwerk rond e-Boekhouden.nl kost

De typische e-Boekhouden-gebruiker is per definitie prijsbewust — dat is een deel van waarom hij het koos — dus de eerlijke lijn hier is niet "je verspilt duizenden euro's", maar "dit is het volume waarbij dit ophoudt verstandig te zijn".

Onder ruwweg vijftig facturen per maand is ze intypen echt prima en is een koppeling luxe. Tussen vijftig en tweehonderd wordt het een echte kostenpost, vooral door de fouten en niet door de minuten: een factuur op de verkeerde grootboekrekening wordt door je boekhouder gecorrigeerd, tegen zijn tarief. Boven tweehonderd is het handwerk met ruime marge de duurdere optie.

Wat we bouwen

Wij bouwen ook het ding aan de andere kant

Bij e-Boekhouden-gebruikers is de site of shop meestal het nieuwste in het bedrijf en de boekhouding het oudste, wat het punt over de twee kanten ongewoon letterlijk maakt: de koppeling is alleen het bouwen waard als de voorkant het koppelen waard is.

Een koppeling heeft twee kanten. Er zijn genoeg bureaus die de API-call voor je bouwen en je een JSON-payload overhandigen; dat is de makkelijke helft. De moeilijke helft is waar die data in landt — een website, een webshop, een portaal waar je klanten op inloggen, een intern hulpmiddel dat een spreadsheet vervangt. JKC bouwt beide kanten, en daarom blijven de koppelingen die wij bouwen meestal werken: aan de ontvangende kant is voor ons niets een zwarte doos.

API-koppelingen

De koppeling zelf: authenticatie, veldmapping, rate limits, retries en een wachtrij die overleeft dat het andere systeem een uur uit de lucht is. Gebouwd op de gedocumenteerde API als die er is, en op wat de leverancier werkelijk aanbiedt als die er niet is.

Websites

WordPress-sites die uit je systemen lezen in plaats van ze met de hand na te typen: een vacaturepagina die uit je HR-systeem komt, een teampagina die je salarisadministratie volgt, prijzen en beschikbaarheid die de echte zijn.

Webshops

WooCommerce-shops waarin de order de laatste keer is dat iemand hem intypt: hij wordt een factuur in je boekhoudpakket, een label bij je vervoerder, een voorraadmutatie in je warehouse en een regel in je CRM, uit zichzelf.

Webapplicaties

Als het proces in geen enkel standaardproduct past: een klantportaal, een offertetool, een planbord, een dashboard dat drie systemen tegelijk uitleest. Gebouwd op jouw data, met jouw systemen als bron in plaats van een kopie ervan.

Wat er gekoppeld kan worden

Wat er tussen e-Boekhouden.nl en je site gekoppeld kan worden

Het vocabulaire van de API is facturen, relaties en mutaties, dus dat zijn de stromen. Geen voorraad, geen orders.

  • Orders als verkoopfactuur, op afgesproken grootboekrekeningen (in de tool)

    Regels, aantallen, btw-codes en de grootboekrekening per productgroep, met het orderkenmerk erdoorheen zodat dubbele facturen onmogelijk zijn.

  • Relaties: klanten en leveranciers (beide kanten)

    Aangemaakt en bijgewerkt vanuit het systeem dat je als eigenaar aanwijst, gematcht op relatiecode of e-mailadres.

  • Mutaties en openstaande posten (uit het gereedschap)

    Teruggelezen naar een dashboard of klantportaal, zodat openstaande saldi getoond kunnen worden zonder dat iemand in het boekhoudpakket hoeft in te loggen.

  • Betaalstatus per factuur (in de tool)

    Uit Mollie of een andere provider, zodat een online betaalde factuur geen herinnering krijgt.

Hoe het werkt

Hoe een koppeling bij JKC gebouwd wordt

Elke keer dezelfde vier stappen, om welke tool het ook gaat. Niets hiervan is een workshop waar je voor betaalt: stap één bestaat omdat een koppeling verkeerd afbakenen het duurste is wat er met zo'n koppeling kan gebeuren.

  1. 1. We kijken wat er nu écht wordt overgetypt

    Niet "welke velden bestaan er" maar "welke velden verplaatst iemand nu met de hand, hoe vaak, en wat gaat er stuk als het misgaat". De meeste projecten blijken twee of drie stromen nodig te hebben, geen volledige tweerichtingssync van alles. Dat gesprek is wat de offerte laag houdt.

  2. 2. We kiezen de route, en zeggen waarom

    Een onderhouden connector van de leverancier, een platform als Make of Zapier, of een maatwerkkoppeling op de API. Goedkoopste eerst, niet maatwerk eerst: als een ondersteunde plugin precies doet wat je nodig hebt, dan is dat het antwoord en zeggen we dat ook. Maatwerk is voor de gevallen waarin de kant-en-klare optie zoveel configuratie vraagt dat hij juist het fragiele onderdeel wordt.

  3. 3. We bouwen hem zo dat hij het andere systeem overleeft

    Elke koppeling krijgt retries, een wachtrij en een idempotency-sleutel mee, zodat een order die binnenkomt terwijl de andere kant eruit ligt later wordt afgeleverd in plaats van verdwijnt, en een retry geen tweede factuur aanmaakt. Eerst op een testomgeving waar de leverancier die aanbiedt, zodat het eerste wat je echte administratie ziet een werkende koppeling is.

  4. 4. We dragen hem over met de faalgevallen opgeschreven

    Welke meldingen je krijgt, wat elke melding betekent, wat je eraan doet en wie je belt. Plus de inloggegevens op jouw naam, in jouw eigen kluis — niet in de onze. Een koppeling die niemand behalve wij kan onderhouden is een koppeling die niet van jou is.

Nadat hij live is

Een koppeling die stil faalt is erger dan geen koppeling

Dit is het deel dat in de meeste offertes ontbreekt. Een koppeling die stopt met werken zonder dat iemand het merkt is erger dan handwerk, want bij handwerk merkt iemand het tenminste als het niet gedaan is. Elke koppeling die JKC bouwt wordt gemonitord, en die monitoring is geen bijverkoop — die zit in de servicekosten.

Een melding per mislukt bericht, geen maandrapport

Een bericht dat niet doorkomt geeft binnen het uur een melding, met de regel waar het over ging. Geen dashboard dat je moet onthouden om te bekijken.

Opnieuw versturen, niet opnieuw invoeren

Wat mislukt is blijft in een wachtrij staan en kan opnieuw verstuurd worden zodra de oorzaak weg is, in de juiste volgorde. Niemand hoeft gisteren door te spitten op zoek naar de vier orders die niet zijn aangekomen.

Wij volgen de wijzigingen van de leverancier, zodat jij dat niet hoeft

API's krijgen nieuwe versies, worden uitgefaseerd en gaan op rate limits. Kondigt een leverancier een wijziging aan die jouw koppeling raakt, dan is meebewegen onderdeel van de servicekosten en geen nieuw project.

Wat het kost

Vanaf € 1.700, en de grootste variabele is wie de andere kant heeft gebouwd

Specifiek voor e-Boekhouden.nl: reken op iets meer dan voor een moderne REST API van dezelfde omvang. Het sessie- en dubbelbeheer is echt werk, en dat overslaan is precies wat deze koppelingen wankel maakt. Het is ook werk dat je maar één keer doet.

Een koppeling begint vanaf € 1.700 plus maandelijkse servicekosten, waar de monitoring, de wachtrij en het bijhouden van API-wijzigingen van de leverancier in zitten. Werk buiten een vaste scope is € 95 per uur.

Wat het bedrag beweegt is niet de tool — het is hoe goed het systeem aan de andere kant bekend is. Heeft JKC je website, je webshop of je webapplicatie gebouwd, dan kennen we het datamodel, de uitzonderingen en waar de voorraadaantallen echt vandaan komen, en is een koppeling erin vooral configureren en testen. Is het een systeem dat we nooit hebben opengeslagen, dan beginnen we met een korte technische check aan beide kanten en offreren we daarna, zodat je niet op uurbasis betaalt voor ons uitzoekwerk.

Twee dingen die het bedrag verder bewegen, in onze ervaring meer dan al het andere: of de tool een echte API heeft of alleen een CSV-export, en of de sync twee kanten op moet. Eenrichting is ruwweg de helft van het werk van tweerichting, want tweerichting betekent per veld beslissen welk systeem wint als ze het oneens zijn — en die beslissing is het dure deel, niet de code.

Vragen

Veelgestelde vragen over e-Boekhouden.nl koppelen

Ja, met de aantekening dat hij meer van de koppeling vraagt dan een moderne. Sessies, doorlopende factuurnummering en geen eigen idempotency-sleutel betekenen dat de betrouwbaarheid aan onze kant gebouwd moet worden en niet aan die van hen mag worden aangenomen.

Is dat gedaan, dan is hij stabiel. De koppelingen die wij erop draaien geven niet meer last dan de REST-koppelingen; het verschil zit volledig in de eerste bouw, niet in de jaren erna.

Gratis, 10 minuten

Geen idee waar de handmatige uren echt naartoe gaan?

Daar is de Groeicheck voor. Tien minuten, zonder verkoopgesprek eraan vast: je krijgt terug waar het dubbele werk zit, welke koppeling zich als eerste terugverdient, en welke eerlijk gezegd niet.