Boekhouding

Tien orders per dag is tien facturen die iemand overbouwt uit gegevens die al bestonden

Er komt een order binnen. Iemand opent Exact Online, maakt een verkoopfactuur, kopieert de klant, kopieert de regels, checkt de btw-code, slaat op. En dan de volgende.

Elk stukje informatie op die factuur bestond al op de seconde dat de klant klikte. Er wordt in die vier minuten niets nieuws gemaakt — het wordt opnieuw ingevoerd, door een mens, met de foutkans van een mens die om vier uur 's middags iets repetitiefs doet.

  • REST API of een onderhouden connector
  • Orders, voorraad, klanten, betaalstatus
  • Vanaf € 1.700 plus servicekosten
De tool

Wat Exact Online is, en welke delen ervan een webshop raakt

Exact Online is een cloudboekhoud- en ERP-pakket, en marktleider voor mkb-boekhouding in Nederland. Het komt in varianten: Boekhouden voor alleen de boeken, Handel als je ook voorraad- en orderbeheer wilt, Productie voor fabricage, plus losse modules voor projecten en uren. Welke variant je hebt bepaalt meer dan wat ook wat een koppeling kan doen, want voorraad en verkooporders bestaan simpelweg niet in de boekhoudvariant.

De API is een gedocumenteerde REST API met OAuth 2.0, ruim naar de maatstaven van Nederlandse boekhoudsoftware, met rate limits per administratie en een tokenflow die verlengd moet worden. Dat laatste detail is waarom Exact-koppelingen vaker stuklopen dan zou moeten: een refresh token dat verloopt terwijl niemand kijkt legt de koppeling stil, geruisloos, en het eerste teken is meestal een maand ontbrekende facturen.

Bijna iedereen voor wie we bouwen gebruikt het als eindpunt en niet als vertrekpunt — de webshop, de website of de buitendienstapp is waar het werk gebeurt, en Exact is waar het moet landen zodat de accountant en de btw-aangifte kloppen.

Wat er misgaat

Drie dingen die misgaan tussen een webshop en Exact Online

Deze drie komen zo consequent langs dat we er nu in het eerste uur van elk Exact-project op checken, voordat iemand een schema heeft getekend.

De twee omzetcijfers kloppen niet met elkaar, en niemand weet welke goed is

Je webshop zegt € 48.200 vorige maand. Exact zegt € 47.615. Het verschil is vier orders die dubbel zijn ingevoerd, één met een omgedraaid cijfer, en twee retouren die in de shop zijn verwerkt en nooit in Exact. Uitzoeken welke het is kost een dag, en volgende maand kost het weer een dag.

Wat je in plaats daarvan ziet

Elke order neemt zijn shopordernummer mee naar Exact als kenmerk, en een idempotency-sleutel zorgt dat een retry nooit een tweede factuur kan maken. De twee getallen zijn hetzelfde getal, en als ze dat niet zijn, vertelt de wachtrij welke order ontbreekt en waarom.

Je verkoopt te veel, omdat de voorraad op de site die van gisteren is

Exact weet dat een artikel drie orders geleden de deur uit is. De webshop toont hem als beschikbaar, want iemand werkt dat getal wekelijks bij, of als hij eraan denkt. Dus wordt hij verkocht, krijgt de klant een mail over vertraging, en gaat de review over die mail.

Wat je in plaats daarvan ziet

Vrije voorraad uit Exact naar de shop op een vast ritme — meestal elk kwartier, met een buffer op snellopers. Bewust niet live per paginaweergave, zodat een langzame Exact niet een langzame webshop wordt.

De koppeling stopte in maart en je merkte het in mei

Dit is de specifiek Exact-e. Een OAuth refresh token verloopt, of een wachtwoordwijziging maakt hem ongeldig, en de koppeling stopt zonder een foutmelding die iemand ziet. Orders blijven binnenkomen in de shop en stoppen met binnenkomen in Exact. Omdat er niets stuk lijkt, is de ontdekking meestal de accountant die vraagt waarom de omzet is gehalveerd.

Wat je in plaats daarvan ziet

Een hartslag: de koppeling moet periodiek bewijzen dat hij leeft, en stilte is zelf een melding. Mislukte orders wachten in een wachtrij in plaats van te verdampen, dus zodra het token is vernieuwd loopt de achterstand in de juiste volgorde door, zonder dat iemand iets overtypt.

De rekening van het handwerk

Wat het opnieuw invoeren van orders in Exact Online echt kost

Neem het rekenwerk even serieus. Een webshoporder overbouwen als verkoopfactuur in Exact kost tussen twee en vijf minuten, afhankelijk van het aantal regels en of de klant al bestaat. Bij twintig orders per dag en drie minuten per stuk is dat een uur per dag. Twintig uur per maand. Tweeënhalve werkdag, elke maand, waarin iemand dingen typt die een computer al weet.

De foutkosten komen daarbovenop en zijn moeilijker te zien. In de reeksen die we voor klanten hebben nagelopen zit handmatige orderinvoer op ruwweg één fout per veertig tot zestig orders — een verkeerde btw-code, een korting op de verkeerde regel, een aantal dat er één naast zit. De meeste worden gevangen. Die niet worden gevangen bereiken de klant als een factuur die niet klopt, en een verkeerde factuur kost een creditnota, een nieuwe factuur, een telefoontje en wat goodwill.

En dan is er nog het ding dat nooit wordt geteld: facturen die te laat de deur uitgaan. Is factureren een taak op een lijstje in plaats van een automatisch gevolg van een order, dan schuift het een dag of twee. Klanten betalen op hun eigen termijn vanaf de factuurdatum, dus elke dag verschuiving is een dag dat jouw geld op iemand anders zijn rekening staat.

  • Twintig orders per dag, drie minuten per stuk: 20 uur per maand overtypen.
  • Ruwweg één invoerfout per vijftig orders, waarvan de dure de factuur bereiken.
  • Een dag per maand shopomzet tegen Exact-omzet leggen.
  • Eén tot twee dagen factuurvertraging, op elke factuur, die doorwerkt in je kaspositie.
Wat we bouwen

Wij bouwen ook het ding aan de andere kant

Bij Exact Online is de nuttige vraag meestal niet "kan het gekoppeld worden" — dat kan — maar "hoe moet de shop eruitzien nu het kan". Een shop die geen handmatige facturatie meer nodig heeft, kan ook stoppen met klanten om een inkoopordernummer in een vrij tekstveld te vragen, en hun echte openstaande saldo gaan tonen.

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 Exact Online en je shop gekoppeld kan worden

Alles hieronder gaat uit van de Exact-variant die de functie werkelijk heeft — verkooporders en voorraad vragen Handel of hoger, niet Boekhouden. Welke licentie je hebt checken we in het eerste gesprek, want de helft van de teleurstellende Exact-projecten waarover we horen was afgebakend op een variant die de klant niet had.

  • Orders als verkoopfactuur of verkooporder (in de tool)

    Klant, artikelregels, aantallen, stukprijzen, kortingen, btw-code per regel, afleveradres en factuuradres, en het shopordernummer als kenmerk zodat de twee systemen altijd tegen elkaar te leggen zijn. Factuur of order, afhankelijk van of je verstuurt vóór je factureert.

  • Klanten en contactpersonen (beide kanten)

    Gematcht op btw-nummer of e-mailadres, aangemaakt in Exact als ze nieuw zijn, bijgewerkt aan de kant die je aanwijst als eigenaar van het adres. Niet standaard beide: twee systemen die allebei denken dat ze het adres bezitten blijven elkaar eeuwig overschrijven.

  • Artikelen, prijzen en prijslijsten (uit het gereedschap)

    Artikelcode, omschrijving, eenheid, verkoopprijs en eventuele klantspecifieke prijslijst, naar de shop. Welke kant de producttekst bezit is een beslissing die je expliciet wil nemen: de omschrijvingen in Exact zijn meestal geschreven voor een warehouse, niet voor een koper.

  • Vrije voorraad per artikel en per warehouse (uit het gereedschap)

    Op een schema, met een optionele buffer zodat een snelloper nooit het laatste stuk als beschikbaar toont. Meerdere warehouses kunnen worden opgeteld of apart getoond, en dat is relevant als je click-and-collect verkoopt.

  • Betaalstatus, terugbetalingen en creditnota's (beide kanten)

    Een betaling via Mollie of Stripe die in Exact als ontvangen op de juiste factuur staat; een terugbetaling in de shop die een creditnota wordt in plaats van een raadselachtig verschil. Dit is de stroom die je ouderdomsanalyse eerlijk houdt.

  • Openstaande posten naar een klantportaal (uit het gereedschap)

    Wat een ingelogde B2B-klant van zijn eigen rekening ziet: facturen, wat nog openstaat, wat te laat is, en een kopie van de pdf. Brengt het mailverkeer van "kun je die factuur nog eens sturen" terug tot bijna niets.

Een eerste Exact-project is meestal regel één, twee en vier: orders erin, klanten gematcht, voorraad terug. De betaal- en portaalregels zijn de tweede fase, zodra de eerste een maand rustig heeft gelopen.

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 Exact Online: draai je op WooCommerce en zijn je wensen gewoon, dan is een onderhouden connector uit het app-centrum van Exact zelf mogelijk goedkoper dan wat wij kunnen bouwen, en dan zeggen we dat. Maatwerk wordt het juiste antwoord bij klantspecifieke prijzen, meerdere warehouses, of een shop die wij hebben gebouwd waar de mapping al bekend is.

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 Exact Online koppelen

Ja — Exact Online en WooCommerce is de combinatie die we het meest bouwen, omdat een groot deel van de shops waar we aan werken al op WooCommerce draait.

Het is ook de combinatie met de meeste kant-en-klare opties, dus dit is een van de gevallen waarin we je echt van maatwerk afpraten als een ondersteunde plugin het werk doet. Waar maatwerk zich terugverdient is bij klantspecifieke prijzen, voorraad over meerdere warehouses, productdata die aan de shopkant verrijkt moet worden, of een bestaande shop met vijftien plugins waar een generieke connector met drie ervan zou vechten.

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.