Koppelingen 7 min leestijd

AFAS-koppeling laten maken.

Software koppelen aan AFAS Profit: medewerkers, financiële mutaties, facturen en projecten automatiseren via GetConnectors en UpdateConnectors, met token-authenticatie en doorkoppeling naar je eigen systemen.

Jasper Koers ·

In het kort

  • AFAS Profit ontsluit financiën, HRM, payroll, CRM en projecten via GetConnectors en UpdateConnectors
  • Authenticatie gaat met een token (AfasToken in de header), niet met OAuth2
  • Een AppConnector bepaalt precies welke connectors een token mag gebruiken — bouw least privilege in
  • AFAS kent geen klassieke webhooks; je synchroniseert gepland en pagineert met skip/take
  • UpdateConnectors verwerk je idempotent om dubbele boekingen of mutaties te voorkomen

Waarom koppelen aan AFAS?

Kort antwoord

AFAS Profit is een Nederlands ERP-pakket dat financiën, HRM, payroll, CRM en projecten in één systeem bundelt. Een koppeling met AFAS automatiseert de uitwisseling met je eigen software: je haalt medewerkers, facturen of projecten op via GetConnectors en schrijft mutaties terug via UpdateConnectors — zonder handmatig overtypen, met minder fouten en altijd actuele gegevens.

AFAS Profit is een van de bekendste bedrijfssoftwarepakketten van Nederlandse bodem. Veel MKB-bedrijven en grotere organisaties draaien er hun complete administratie op: boekhouding, salarisverwerking, personeelsdossiers, CRM en projectadministratie. Het is vaak het systeem waar de "waarheid" over je bedrijf in staat.

Zodra je daarnaast eigen software draait — een klantportaal, een planningstool, een webshop of een maatwerkapplicatie — wil je die werelden niet handmatig synchroon houden. Een nieuwe medewerker hoort automatisch in je app te verschijnen. Een factuur uit je eigen ordersysteem hoort als boeking in AFAS te belanden. Een koppeling met AFAS maakt precies dat mogelijk.

Wat kun je koppelen met de AFAS Profit API?

AFAS ontsluit data via twee soorten endpoints: GetConnectors om gegevens op te halen en UpdateConnectors om gegevens weg te schrijven. Welke onderdelen je koppelt, hangt af van je situatie. De meest voorkomende:

  • Medewerkers & HRM — Personeelsgegevens, dienstverbanden, verlof en declaraties synchroniseren met je eigen planning-, urenregistratie- of onboarding-software.
  • Financiële mutaties — Boekingen, facturen en betalingen wegschrijven naar de financiële administratie, zodat je niets dubbel invoert.
  • Debiteuren & crediteuren — Relaties en openstaande posten ophalen om bijvoorbeeld een eigen klantportaal of een incassoproces te voeden.
  • Projecten & uren — Projecten, taken en geboekte uren koppelen voor een sluitende project- en factuuradministratie.
  • Artikelen & orders — Artikelgegevens en verkooporders uitwisselen tussen je webshop of ordersysteem en Profit.

Een GetConnector is in feite een vooraf gedefinieerde dataset: de AFAS-beheerder of -consultant bepaalt in Profit welke velden en filters erin zitten. Je koppeling kan daarom precies lezen wat in die GetConnector is opgenomen — niet meer en niet minder. Goede afstemming vooraf over welke velden je nodig hebt, voorkomt later veel correctiewerk.

Authenticatie: een token in plaats van OAuth2

Veel koppelingen met een CRM of boekhoudpakket werken met OAuth2. AFAS doet dat anders. De Profit REST API gebruikt token-authenticatie: je maakt in Profit een AppConnector aan, genereert daarbij een token, en stuurt dat token mee in de Authorization-header van elke aanvraag — als base64-waarde, voorafgegaan door AfasToken (AFAS Help Center — REST API voor ontwikkelaars).

Het belangrijke detail zit in de AppConnector zelf: daar leg je vast welke GetConnectors en UpdateConnectors een token mag gebruiken. Daarmee kun je het principe van least privilege netjes toepassen — een koppeling die alleen medewerkers hoeft te lezen, krijgt geen toegang tot financiële mutaties. Het token hoort veilig in een environment-variabele of secrets manager te staan, nooit in je broncode.

Een token dat alles mag, is een risico dat je vanaf dag één kunt vermijden. Geef een koppeling precies de connectors die ze nodig heeft, en niets meer.

Geen webhooks: synchroniseren met GetConnectors

Een belangrijk verschil met veel andere koppelingen: AFAS biedt geen klassieke uitgaande webhooks. Waar een CRM als Exact Online of een betaalprovider je actief een seintje stuurt zodra er iets verandert, haal je bij AFAS gegevens op door de GetConnector te bevragen.

Dat betekent dat een AFAS-koppeling doorgaans werkt met geplande synchronisaties: met een vast interval (bijvoorbeeld elk kwartier of elke nacht) haal je de relevante datasets op. Twee dingen zijn daarbij essentieel:

  • Pagineren met skip/take — Grote datasets haal je niet in één keer op. De API werkt met skip en take om in blokken door de data te lopen, zodat je geen records mist en de boel niet vastloopt op limieten.
  • Alleen wijzigingen ophalen — In plaats van elke keer alles op te halen, filter je waar mogelijk op een wijzigingsdatum. Dat scheelt belasting en houdt de synchronisatie snel, ook als de dataset groeit.

Terugschrijven met UpdateConnectors

Gegevens wegschrijven naar AFAS gaat via UpdateConnectors. Je stuurt een bericht met de gegevens en de actie — toevoegen, wijzigen of verwijderen — en AFAS verwerkt dat in de administratie. Denk aan een factuur die in je eigen ordersysteem ontstaat en als boeking in Profit moet belanden.

Net als bij elke schrijfende koppeling is idempotentie hier cruciaal. Als een aanvraag mislukt of een time-out geeft, wil je hem opnieuw kunnen sturen zonder dat dezelfde factuur twee keer wordt geboekt. Dat los je op door per bericht een unieke sleutel bij te houden en te controleren of een mutatie al verwerkt is. Hoe je dat netjes opzet, lees je in ons artikel over idempotentie.

Veelgemaakte fouten bij AFAS-koppelingen

Op basis van de ERP- en administratiekoppelingen die we bouwen, zijn dit de valkuilen die we het vaakst tegenkomen:

  • GetConnectors die niet kloppen — De koppeling kan alleen lezen wat in de GetConnector is gedefinieerd. Ontbreekt een veld of filter, dan loopt je integratie vast op data die er simpelweg niet is. Stem dit vooraf af met de AFAS-beheerder.
  • Een token met te veel rechten — Geef een AppConnector niet standaard toegang tot alles. Beperk de connectors tot wat de koppeling echt nodig heeft.
  • Te vaak of te zwaar pollen — Zonder skip/take en zonder filter op wijzigingen haal je telkens onnodig veel data op. Dat is traag en belast je AFAS-omgeving.
  • Niet idempotent terugschrijven — Een opnieuw verstuurde UpdateConnector-aanvraag leidt dan tot dubbele boekingen of mutaties.
  • Test- en productieomgeving door elkaar — Werk met een aparte testomgeving en eigen tokens, zodat je nooit per ongeluk in de echte administratie schrijft tijdens het ontwikkelen.

Mijn kijk op AFAS in maatwerk

AFAS is een krachtig, breed pakket — en juist die breedte maakt een koppeling interessant én gevoelig. Omdat zoveel verschillende processen in één systeem samenkomen, heeft een fout in de koppeling al snel impact op meerdere afdelingen tegelijk. Een verkeerd geboekte factuur of een dubbel aangemaakte medewerker is geen klein detail.

Wat ik bedrijven meegeef: behandel de GetConnectors als een gezamenlijk ontwerp tussen jouw kant en de AFAS-beheerder. De koppeling is technisch zelden het ingewikkeldste; het afstemmen van welke data je precies uitwisselt, in welke richting en wie leidend is, dáár zit het echte werk. Een halve dag samen aan tafel bespaart later weken aan correcties.

En omdat AFAS geen webhooks heeft, vraagt het wat extra denkwerk om de synchronisatie soepel en actueel te houden. Maar mits doordacht opgezet — met nette paginering, slimme filters en idempotent terugschrijven — draait een AFAS-koppeling jarenlang stabiel op de achtergrond.

— Jasper

Zo helpt Coding Agency hierbij

Wij bouwen koppelingen met AFAS Profit die meer doen dan data heen en weer schuiven: met veilige token-authenticatie volgens least privilege, nette paginering, slimme synchronisatie en idempotent terugschrijven. We denken mee over welke GetConnectors je nodig hebt en hoe je AFAS verbindt met je eigen software, zodat je administratie en je processen één geheel worden. Waarom dat verbinden zo veel oplevert, lees je in ons artikel over waarom systemen koppelen.

Benieuwd hoe een AFAS-koppeling er voor jouw situatie uitziet? Neem contact op voor een vrijblijvend gesprek.

Bron: AFAS Help Center — REST API voor ontwikkelaars (help.afas.nl).

Veelgestelde vragen

Nee. De AFAS Profit REST API gebruikt token-authenticatie. Je maakt in Profit een AppConnector aan, genereert daar een token bij en stuurt dat als AfasToken mee in de header van elke aanvraag. Het token bepaalt precies welke GetConnectors en UpdateConnectors de koppeling mag gebruiken.
Een GetConnector haalt gegevens op uit AFAS, bijvoorbeeld een lijst medewerkers of facturen. Een UpdateConnector schrijft gegevens weg: toevoegen, wijzigen of verwijderen. Een koppeling combineert vaak beide: ophalen wat je nodig hebt en terugschrijven wat in je eigen systeem ontstaat.
AFAS biedt geen klassieke uitgaande webhooks zoals veel SaaS-platforms. Gegevens haal je op door GetConnectors te bevragen. Een koppeling werkt daarom doorgaans met geplande synchronisaties, waarbij je met skip/take door grote datasets pagineert en alleen wijzigingen ophaalt.
Dat doet de AFAS-beheerder of -consultant in Profit. Een GetConnector is in feite een vooraf gedefinieerde dataset met de juiste velden en filters. De koppeling kan alleen lezen wat in die GetConnector is gedefinieerd, dus goede afstemming vooraf bespaart later veel correctiewerk.
Gerelateerde expertise — API & Koppelingen

API-koppeling laten maken? Wij bouwen betrouwbare integraties met monitoring, retry-logica en vaste prijs per koppeling. Vanaf € 1.000.

Hulp nodig?

Vragen over dit onderwerp? Laten we het erover hebben.

Neem contact op