Boekhouding

AFAS heeft de echte gegevens. Je website draait op een kopie die niemand bijwerkt

Iemand wijzigt een adres in AFAS. Drie weken later gaat de factuur nog naar het oude, omdat het klantportaal op de website het nooit heeft gehoord. Er komt een nieuwe collega, en die staat op de teampagina op de dag dat iemand eraan denkt hem er handmatig bij te zetten. Een vacature wordt ingevuld, en staat nog twee maanden op de vacaturepagina.

Daar kan AFAS niets aan doen. AFAS heeft het goed. Alles eromheen draait op een kopie die verouderd raakt zodra niemand oplet.

  • GetConnectors, App Connector of de REST API
  • Eenrichting of tweerichting, per veld
  • Vanaf € 1.700 plus servicekosten
De tool

Wat AFAS is, en welk deel we meestal koppelen

AFAS is Nederlandse alles-in-één bedrijfssoftware. AFAS Profit is de kern: financiële administratie, HR, salarisadministratie, projecten, CRM en orderverwerking in één database, op één set stamgegevens. InSite is het interne portaal waar je eigen mensen op inloggen, OutSite het externe, en AFAS Connect is de eigen marktplaats van kant-en-klare koppelingen van de leverancier.

Het wordt vooral gebruikt door organisaties vanaf ruwweg vijftig medewerkers — installateurs, groothandels, bouwbedrijven, zorgorganisaties, accountantskantoren, uitzenders — waar de aantrekkingskracht juist is dat HR en financiën op dezelfde gegevens zitten. Omdat alles op één plek staat, wordt AFAS meestal het bronsysteem van het hele bedrijf, en precies daarom is de website ernaast zo vaak het enige dat op verouderde gegevens draait.

In de praktijk wordt ons om een van vier dingen gevraagd: medewerkers- en vacaturegegevens uit AFAS naar een website, orders en klanten uit een webshop naar Profit, project- of urengegevens naar een klantportaal, of CRM-gegevens die gelijk blijven met een marketingtool. Zelden alle vier tegelijk, en nooit "alles, beide kanten op" — dat is een project dat vijf keer zoveel kost en een vraag beantwoordt die niemand heeft gesteld.

Wat er misgaat

Drie dingen die misgaan bij sites naast een AFAS-omgeving

Geen bedachte gevallen. Dit zijn de drie die we het vaakst tegenkomen als ons gevraagd wordt naar een bestaande site met AFAS erachter.

De vacaturepagina is een museum

Vacatures staan in AFAS zodra een manager er een openzet, en op de website zodra iemand van marketing tijd heeft. Dus toont de site functies die in juli zijn ingevuld, mist hij de vacature van vanmorgen, en krijgt een kandidaat die op een gesloten vacature solliciteert een ongemakkelijke mail. Erger nog: de recruiter kan niet zien of een stille week betekent dat er geen belangstelling is of dat een vacature er nooit op is gezet.

Wat je in plaats daarvan ziet

Een vacature die in AFAS wordt geopend staat binnen minuten op de vacaturepagina, met de juiste locatie en uren, en verdwijnt er weer af zodra hij is ingevuld. Sollicitaties landen terug in AFAS Recruitment als kandidaat, met cv eraan.

Orders worden opnieuw in Profit getypt, en de totalen lopen uit elkaar

Er komt een webshoporder binnen, en iemand op de backoffice opent Profit en bouwt hem opnieuw op: klant, artikelcodes, aantallen, btw-code, korting. Dertig orders per dag is een halve ochtend, en de fouten zijn niet willekeurig — ze zitten op de lastige stukken. Een korting op de verkeerde regel, een btw-code die op de standaard blijft staan, een artikelcode met twee cijfers omgedraaid. Die fouten belanden op de factuur, en de klant vindt ze eerder dan jij.

Wat je in plaats daarvan ziet

De order is de laatste keer dat iemand hem intypt. Hij wordt een verkooporder of factuur in Profit met de klant gematcht op debiteurennummer, de artikelcodes zoals ze in AFAS staan, en de btw-code die AFAS zelf bepaalt — niet die iemand om half vijf uit een keuzelijst pakte.

Iedereen bouwt zijn eigen kopie van de waarheid

Omdat een getal uit AFAS halen een verzoek aan die ene persoon vraagt die Profit kent, bouwt iedereen een omweg: een gedeelde sheet met klantcontacten, een Word-bestand met prijsafspraken, een WhatsAppgroep voor voorraadvragen. Elk daarvan is een kleine, verstandige daad, en samen zijn het vier versies van dezelfde gegevens, waarvan geen enkele AFAS is en die iemand allemaal vertrouwt.

Wat je in plaats daarvan ziet

Een portaal of intern hulpmiddel dat AFAS live uitleest, met de velden die mensen echt nodig hebben en niets meer. Niemand hoeft Profit te leren om een prijsafspraak op te zoeken, en niemand heeft nog een reden om er een eigen kopie van bij te houden.

De rekening van het handwerk

Wat de handmatige route tussen AFAS en je website je kost

Het eerlijke antwoord is dat het meeste ervan nergens als kostenpost opduikt, en precies daarom houdt het jaren aan. Niemand factureert voor overtypen. Het komt naar buiten als een backoffice die altijd net achterloopt, een marketingteam dat de site niet kan vertrouwen, en een financiële afdeling die de laatste drie dagen van de maand bezig is met het rechttrekken van dingen die nooit uit elkaar hadden mogen lopen.

Als we het samen met een klant wél meten, komt er meestal iets tussen vier en twaalf uur per week uit, verdeeld over twee of drie mensen — niet één persoon voltijd, want dat was opgevallen en opgelost, maar een stukje van de week van meerdere mensen dat niemand bezit. Bij een interne kostprijs van zelfs € 40 per uur is dat € 800 tot € 2.400 per maand, aan het verplaatsen van gegevens die beide systemen al hebben.

  • De factuur met het oude adres, gevonden door de klant, gecrediteerd en opnieuw verstuurd: ongeveer 40 minuten per keer, plus het telefoontje.
  • De kandidaat die solliciteerde op een vacature die in juli is gesloten, en het antwoord dat iemand moet schrijven.
  • De maandafsluiting waarin webshopomzet en Profit-omzet tegen elkaar worden gelegd, omdat een handvol orders dubbel of niet zijn ingevoerd.
  • Het voorraadaantal op de site dat vanmorgen nog klopte, en het klantenservicegesprek dat volgt als dat niet zo was.
Wat we bouwen

Wij bouwen ook het ding aan de andere kant

Bij AFAS geldt dit sterker dan gemiddeld: de koppeling is zelden het eindproduct. Wat een klant echt wil is een vacaturepagina, een klantportaal of een webshop die zich gedraagt alsof AFAS erachter zit — en dat is een websiteproject met een koppeling erin, niet omgekeerd.

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 AFAS en je site gekoppeld kan worden, veld voor veld

AFAS is hier opvallend netjes in: GetConnectors en UpdateConnectors worden binnen Profit ingericht, dus wat een koppeling mag lezen en schrijven is een beslissing die je eigen AFAS-beheerder neemt en kan zien. De pijl zegt welke kant de gegevens op gaan.

  • Medewerkers: naam, functie, startdatum, locatie, foto (uit het gereedschap)

    Naar een teampagina of interne smoelenboek. HR werkt AFAS één keer bij en de site volgt. Vertrokken medewerkers vallen er automatisch af, en dat is de helft waar mensen niet om denken te vragen.

  • Vacatures eruit, sollicitaties er weer in (beide kanten)

    Vacatures uit AFAS Recruitment naar de vacaturepagina met titel, uren, locatie, salarisindicatie en de volledige tekst; sollicitaties uit het formulier terug in AFAS als kandidaat met het cv als bijlage. Levert ook de structured data voor Google for Jobs, zodat de vacature in de jobs-carrousel kan komen zonder tweede CMS.

  • Webshoporders als verkooporder of verkoopfactuur (in de tool)

    Klant gematcht op debiteurennummer waar die bestaat en aangemaakt waar niet, artikelcodes zoals AFAS ze kent, aantallen, kortingsregels, btw-code en betaalkenmerk. Via een UpdateConnector, zodat AFAS de order valideert in plaats van aan te nemen wat wij versturen.

  • Artikelen, prijzen en prijsafspraken per klant (uit het gereedschap)

    Naar een webshop of B2B-portaal, inclusief klantspecifieke prijzen — en dat is de reden waarom de meeste AFAS-gebruikers geen standaardwebshop kunnen gebruiken: de prijs hangt af van wie er is ingelogd, en dat staat in Profit.

  • Voorraad en beschikbaarheid per artikel (uit het gereedschap)

    Vrije voorraad, of vrije voorraad min een buffer, op een frequentie die je zelf bepaalt. Meestal niet live per paginaweergave: een verversing per kwartier is eerlijk genoeg voor een website en zet de uptime van je webshop niet vast aan die van je ERP.

  • Projecten, uren en openstaande posten naar een klantportaal (uit het gereedschap)

    Wat een klant van zijn eigen dossier mag zien: projectstatus, geboekte uren, verstuurde en nog openstaande facturen. Hier is AFAS OutSite vaak het verkeerde antwoord en een portaal dat wij bouwen het juiste — niet omdat OutSite slecht is, maar omdat het eruitziet als AFAS en niet als jouw merk.

  • CRM-gegevens en marketingcontacten (beide kanten)

    Organisaties en contactpersonen die gelijk blijven tussen AFAS CRM en een marketingtool als HubSpot of Mailchimp, met per veld een regel over welk systeem wint. Toestemming blijft staan waar hij is gegeven, en dat is meer dan netheid.

Welke hiervan je nodig hebt is het eerste gesprek, niet het laatste: de meeste AFAS-projecten die we afronden gebruiken twee of drie van deze regels, en de projecten die alle zeven probeerden deden er twee keer zo lang over zonder extra opbrengst.

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 AFAS: de technische route doet minder dan wie jouw Profit-omgeving beheert. Zet je AFAS-partner de GetConnectors en het App Connector-token voor je klaar, dan is een eerste koppeling meestal een project van twee tot drie weken. Moet die toegang eerst geregeld worden, dan is het wachten de planning en niet het bouwen.

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 AFAS koppelen

Wat betrouwbaarder is voor jouw situatie, en we zeggen wat en waarom voordat je iets ondertekent. Staat er in AFAS Connect al een onderhouden connector die precies doet wat je nodig hebt, dan is dat het goedkopere en veiligere antwoord en zeggen we dat ook — dan heb je een koppeling met leveranciersondersteuning in plaats van een die wij in de lucht moeten houden.

Voor alles met een eigen vorm — klantspecifieke prijzen in een webshop, een portaal, een vacaturefeed met eigen velden — bouwen we op de App Connector, met GetConnectors om te lezen en UpdateConnectors om te schrijven. Dat is de eigen ondersteunde route van AFAS, ingericht binnen Profit, zodat jouw beheerder precies kan zien en intrekken wat wij mogen aanraken.

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.