---
title: "Hoe werkt een AFAS API koppeling?"
description: "Een AFAS API koppeling loopt via een AppConnector: GetConnectoren lezen, UpdateConnectoren schrijven terug. Classic tokens verlopen op 15 februari 2027."
url: "https://www.flinkerontwikkeling.nl/kennisbank/afas-api-koppeling"
---

# Hoe werkt een AFAS API koppeling?

Een AFAS API koppeling praat met Profit via de REST API. Een AppConnector bepaalt wat de koppeling mag: GetConnectoren lezen gegevens uit Profit, UpdateConnectoren schrijven terug.

## Samenvatting

- Elke koppeling krijgt een eigen AppConnector. Wat daar niet in aanstaat, kan hij niet aanroepen.
- Zonder skip en take geeft een GetConnector maar 100 regels terug.
- Bestaande Classic tokens verlopen op 15 februari 2027. Vanaf 31 augustus 2027 werken koppelingen met Classic tokens niet meer.
- Beheren wij jullie koppelingen? Dan zetten wij ze om naar OAuth. Jullie hoeven nu niets te doen.

## Wat een AppConnector bepaalt in een AFAS API koppeling

Wij geven elke koppeling een eigen AppConnector in Profit. Daarin staat welke GetConnectoren en UpdateConnectoren de koppeling mag aanroepen. Wat er niet in aanstaat, kan de koppeling niet aanroepen.

Schema: AFAS Profit levert via een GetConnector gegevens aan de koppeling en krijgt via een UpdateConnector gegevens terug. De koppeling wisselt gegevens uit met het andere systeem.

De AppConnector hangt aan een vaste gebruiker in Profit, en de koppeling werkt met de rechten van die gebruiker. AFAS raadt na het inrichten twee instellingen aan:

- **een IP-restrictie** op de AppConnector;
- **filterautorisatie** voor de gebruikersgroep: een GetConnector haalt dan alleen de records op waarvoor de groep rechten heeft.

## Lezen en terugschrijven: GetConnector en UpdateConnector

Beide wisselen JSON uit met Profit, maar ze werken verschillend:

| | GetConnector | UpdateConnector |
|---|---|---|
| Doel | Leest gegevens uit Profit | Schrijft gegevens naar Profit |
| Inhoud | Samengesteld in Profit: welke records, welke velden, eventueel een vast filter | Ligt vast: een eigen endpoint met velden die AFAS bepaalt |
| Aanroep | Filters op velden, met skip en take in delen | POST voegt toe, PUT wijzigt, DELETE verwijdert; welke kan, verschilt per connector |
| Voorbeeld | Nieuwe medewerkers voor Entra ID | Tags op een contact, via KnContact |

De [AFAS Microsoft Entra ID koppeling](https://www.flinkerontwikkeling.nl/oplossingen/koppeling-microsoft-entraid) haalt elke nacht via een GetConnector de medewerkers op die binnen twee weken in dienst komen en nog geen account hebben. Voor hen maakt de koppeling een account aan in Entra ID.

Heen en terug in één koppeling kan ook. De [AFAS ActiveCampaign koppeling](https://www.flinkerontwikkeling.nl/oplossingen/koppeling-active-campaign) haalt contacten uit Profit met een GetConnector en zet ze klaar in ActiveCampaign. De tags uit ActiveCampaign schrijft de koppeling via de KnContact UpdateConnector terug op het contact in Profit.

### Een GetConnector in de praktijk: filters, limieten en bestanden

| | Hoe het werkt |
|---|---|
| Filteren | In de aanroep op velden, met operators als 'is gelijk aan' of 'bevat', gecombineerd met EN en OF |
| 100 regels | Zonder skip en take komen alleen de eerste 100 regels terug |
| Skip en take | Grotere sets in delen ophalen, altijd gesorteerd: anders kan de volgorde tussen twee aanroepen verschuiven |
| 150.000 cellen | Het advies van AFAS per aanroep: kolommen maal regels |
| Fair use | Haalt een koppeling elke minuut dezelfde dataset van 15 MB op, dan kan AFAS contact opnemen. Dat voorbeeld geeft AFAS zelf |
| Alleen wat veranderd is | Bijna elke GetConnector kan 'aangemaakt op' en 'gewijzigd op' meenemen. Filtert de koppeling daarop, dan haalt hij alleen op wat sinds de vorige aanroep veranderd is |
| Bestanden | Aparte connectoren: de SubjectConnector voor bijlagen bij dossieritems, de FileConnector voor bestanden |

## Inloggen via OAuth: Classic tokens stoppen in 2027

Veel koppelingen loggen nu in met een Classic token: een vaste sleutel die vaak jaren geldig blijft. AFAS zegt zelf waarom het daarvan afstapt: "Lekt de sleutel uit, dan heeft een kwaadwillende dus lang toegang tot je omgeving."

De opvolger is OAuth. Voor een koppeling tussen twee systemen is dat de client credentials flow. De AppConnector krijgt een client id en een client secret, en daarmee vraagt de koppeling zelf een toegangstoken aan. Dat token is een uur geldig. Daarna vraagt de koppeling met de client id en het client secret een nieuw token aan.

**De tijdlijn van AFAS**

- **15 februari 2027** Bestaande Classic tokens verlopen. AFAS: "Vanaf dat moment werkt de koppeling niet meer."
- **Daarna, tijdelijk** Een nieuw Classic token is nog mogelijk, maximaal een halfjaar geldig.
- **31 augustus 2027** Koppelingen met een Classic token werken niet meer.

**Beheren wij jullie koppelingen? Dan zetten wij ze om naar OAuth.** Met Profit 9 wordt dat volgens AFAS een stuk eenvoudiger, omdat het authenticatietype van een bestaande AppConnector dan kan worden aangepast. Daarom zetten we de koppelingen gefaseerd om zodra jullie omgeving op Profit 9 draait. Ons doel is dat alle koppelingen die wij beheren vóór 15 februari 2027 op OAuth staan.

Jullie hoeven daar nu niets voor te doen: na de omzetting krijgen jullie een bevestiging, en hebben we extra toegang tot jullie AFAS-omgeving nodig, dan nemen we vooraf contact op.

### Zo zie je welke AppConnectoren naar OAuth moeten

1. Ga in Profit naar **Algemeen / Beheer** en open de AppConnectoren.
2. Bekijk per AppConnector het type en het authenticatietype.
3. Type 'Onderhoud door klant', met 'Classic token' of 'Hybride'? Dan moet die AppConnector naar OAuth.

De AppConnectoren die AFAS standaard uitlevert, zoals die van AFAS Payment Service, zet AFAS zelf om.

## Wat jullie bepalen en wat wij bouwen

Jullie weten welke processen van een koppeling afhangen, en bepalen welke gegevens erin mogen. Wij bouwen de rest: de AppConnector met de GetConnectoren en UpdateConnectoren die de koppeling nodig heeft, en de koppeling zelf in Node-RED of Node.js. Hoe we dat aanpakken, lees je bij [AFAS koppeling laten maken](https://www.flinkerontwikkeling.nl/oplossingen/koppelingen).

## Veelgestelde vragen

### Welke OAuth-flow gebruikt een AFAS API koppeling?

De client credentials flow. AFAS gebruikt die voor automatische koppelingen tussen twee systemen, waarbij geen gebruiker inlogt. De authorization code flow is voor toepassingen waarin een gebruiker zelf inlogt en toestemming geeft.

### Wat is het verschil tussen een AppConnector en een token?

De AppConnector bepaalt wat een koppeling mag, met de rechten van een vaste gebruiker in Profit. Het token is waarmee de koppeling inlogt. Bij OAuth vraagt de koppeling dat token zelf aan, met de client id en het client secret van de AppConnector.

### Waar vind je de client id en het client secret?

Profit toont ze bij het aanmaken van een AppConnector met OAuth. Het client secret zie je maar één keer. De client id blijft zichtbaar, maar is niet te wijzigen.

## Bronnen

- [AFAS Help Center: de Profit REST API](https://help.afas.nl/help/NL/SE/App_Cnr_Rest_Api.htm)
- [AFAS Help Center: GetConnectoren](https://help.afas.nl/help/nl/se/App_Cnr_Rest_GET.htm)
- [AFAS Help Center: UpdateConnectoren](https://help.afas.nl/help/NL/SE/App_Cnr_Rest_Update.htm)
- [AFAS Help Center: een AppConnector met OAuth](https://help.afas.nl/help/NL/SE/120718.htm)
- [AFAS: themapagina OAuth](https://klant.afas.nl/thema/oauth)

## Zo doen wij dit

- [AFAS Microsoft Entra ID koppeling](https://www.flinkerontwikkeling.nl/oplossingen/koppeling-microsoft-entraid.md): Medewerkerdata uit AFAS automatisch gesynchroniseerd naar Microsoft Entra ID.
- [AFAS ActiveCampaign koppeling](https://www.flinkerontwikkeling.nl/oplossingen/koppeling-active-campaign.md): Stuur de juiste boodschap, aangestuurd door actuele AFAS-data.

---

Liever dat wij het voor je maken? Plan een gesprek via https://www.flinkerontwikkeling.nl/contact.
