Connect AFAS to your other systems
AFAS Profit, the Dutch ERP and HR suite, holds your employees, customers, orders and bookings. Connect it to the rest and a new colleague has their accounts on day one, a won deal becomes a customer account without retyping, and the service desk knows straight away who has left.
- Employees and employment contracts goes back and forth with Your other systems
- Organisational structure goes back and forth with Your other systems
- Organisations, people and sales relations goes back and forth with Your other systems
- Quotes and orders goes back and forth with Your other systems
Built for clients including Tata Steel, M&G Investments, Digistore24, Toppers in Concert, Bar-le-Duc and Loogman
This is the data organisations most often let flow between systems. Which of it matters to you depends on where work is getting stuck today.
Employees and employment contracts
Name, employee number, job title, department, manager, start and end date. If HR works in AFAS, AFAS is the natural source: accounts, service desk and planning follow what HR records.
Organisational structure
Departments, locations, job titles and cost centres. Other systems need these to put people in the right place, such as a service desk that routes tickets by location.
Organisations, people and sales relations
A customer from your CRM becomes an organisation in AFAS with a sales relation: the debtor, or customer account. AFAS has separate UpdateConnectors for this: KnOrganisation for the organisation and its contacts, KnSalesRelationOrg for the customer account itself.
Quotes and orders
Sales quotes and orders come in through the UpdateConnectors FbSalesQuotation and FbSales. An order from an online store or CRM then doesn't need to be entered again, as long as the items exist in AFAS.
Invoices and outstanding items
Which invoices are open, what is overdue and what has been paid. Sales and account managers want to see this in their own system, without access to the full financial administration.
For each combination: which data moves back and forth, what the standard integration does and what to watch out for.
- Connect AFAS to HubSpotConnect AFAS to HubSpot: a won deal becomes a customer account and order in AFAS, and sales sees in HubSpot which invoices are still outstanding.
- Connect AFAS to SalesforceConnect AFAS to Salesforce: accounts, opportunities and invoices flow both ways, within the API limits and with AFAS as the financial source of truth.
- Connect AFAS to TOPdeskConnect AFAS to TOPdesk: employees, departments and branches flow from AFAS into the service desk, and a new starter or leaver triggers a request.
- Connect AFAS to Microsoft 365Connect AFAS to Microsoft 365: a new employee in AFAS gets an account and groups in Entra ID, and the account is blocked when they leave the organisation.
- Connect AFAS to ChatGPTConnect AFAS to ChatGPT: give an AI assistant safe access to AFAS through an MCP server with limited permissions, and keep salary and BSN data out of it.
Not always. If an existing integration for AFAS Profit does exactly what you need, we'll tell you.
Many software vendors have built their own integration with AFAS. The AFAS Partnerportal lists integrations that AFAS has certified: tested for functionality and security, and maintained. AFAS looks at things like efficient use of the API, secure communication, securely stored customer data and a clear set-up guide.
Profit also has built-in integrations. Since Profit 8, an Entra ID integration synchronises user groups and their members to Microsoft Entra ID and blocks users when their employment ends. Single sign-on works through OpenID Connect with Microsoft Entra ID, Okta and others.
A standard integration is enough if your process resembles the one it was built for: the same fields, one administration, one direction. If your process differs, ask beforehand what the integration does with it.
- There is no certified integration for your other system, or it only covers part of the data.
- You use custom (free) fields, or several employers and administrations in one environment, and every change has to land in the right one.
- A change to an employee or customer needs to show up elsewhere quickly, while AFAS sends no webhook for it.
- An AI assistant needs to answer questions from AFAS, using only the fields it needs.
Connectors instead of fixed endpoints
AFAS Profit has a REST API with JSON and a SOAP API with XML, with the same capabilities. You read data with GetConnectors. You build these yourself on a data collection, with the fields you choose and a fixed filter. You write with UpdateConnectors, which are fixed per object, such as KnEmployee for employees. POST adds, PUT updates and DELETE removes.
Access through an app connector and token
An app connector defines which Get and UpdateConnectors an integration may use. A token applies to the combination of environment, app connector and user, and is sent base64-encoded in the AfasToken header with every call. An administrator creates the token, or the user retrieves it with a one-time code. Delete the token and the integration stops.
Webhooks only for dossier items and workflows
Since Profit 8, AFAS sends webhooks when a dossier item is added, changed or deleted, when someone responds to one, and for workflow tasks and workflow actions. The notification says that something changed, not what; you then fetch the details with a GetConnector. Your endpoint must respond within two seconds. For employees and customers, you poll periodically for what has changed.
Test and acceptance environments
Besides production, there are test and acceptance environments, recognisable by the letter T or A in the environment name. They have their own address: resttest.afas.online or restaccept.afas.online instead of rest.afas.online. This lets you test an integration without writing to your live administration.
Limits on what you fetch
A call can be at most 75 MB, a filter in the URL at most 2,048 characters, and a timeout follows after about fifteen minutes. By default you get 100 rows back; use skip and take to page through the rest. AFAS Online has a fair-use policy: if you fetch the same 15 MB every minute, for example, AFAS will contact you.
An integration moves data. In between, AI can read, sort and prepare a suggestion. Where it matters, a person decides.
Checking changes before they go into AFAS
An AI step can check a new customer or order from another system for a missing Chamber of Commerce (KvK) number, an inconsistent address or an organisation that seems to exist already. Doubtful cases go on a list and someone in the finance team decides.
Answering questions from HR data
Who manages this team? How many people start next month? An assistant can look this up through a GetConnector with only name, job title, department and start date. Leave salary, BSN (the Dutch citizen service number) and sickness absence out of that connector, and the assistant can't reach them either.
Where a person decides
AI doesn't process contract changes, payroll changes or departures itself. It can prepare them as a dossier item or workflow task, and HR approves. AFAS records which user changed a record, so with a dedicated user for the integration you can trace what happened through the API.
Someone edits the GetConnector
Because you set up GetConnectors yourself, an application manager can remove a field or change a filter. The integration then suddenly misses data, without an error. Give integration connectors a recognisable name and agree that nobody changes them without checking first.
Missing changes and deletions
If you fetch changes using the created and modified fields, you only see the latest change. Deleted records don't come back by themselves, and after a project is renumbered its bookings go missing. So compare the full set periodically.
A colleague's token
A token belongs to a user. If the integration runs on an employee's account, its permissions and logging are tied to that person. Create a separate user for each integration, with only the connectors it needs.
Fetching everything at once
A GetConnector without a filter on a large administration runs into the 75 MB limit, the timeout or the fair-use policy. Filter on changed records and page with skip and take.
What goes where
Which data moves, in which direction, and which system wins when two values differ. That is written down before anything gets built. For this integration, that means: Employees and employment contracts, Organisational structure, Organisations, people and sales relations, Quotes and orders, Invoices and outstanding items.
Fields and rules
For every field, how it translates between the systems: statuses, VAT codes, general ledger accounts, item numbers. And what happens with a duplicate or a missing value. For this integration, that means: Connectors instead of fixed endpoints, Access through an app connector and token, Webhooks only for dossier items and workflows, Test and acceptance environments, Limits on what you fetch.
Testing with real cases
In a sandbox or test administration, with the exceptions you actually run into: credit notes, partial deliveries, changed customer details.
Live, with logging and monitoring
Every sync is logged, and when something fails, someone gets an alert. If a vendor changes its API, we update the integration.

No account manager. You talk to someone who builds integrations themselves, and who will tell you when a standard integration is enough.
- Office on the Duivendrechtsekade in Amsterdam
- ISO 9001 and ISO 27001, certified by Kiwa
- 500 projects delivered
- 4.8 from 127 reviews
Does AFAS Profit have an API?
Yes. AFAS Profit has a REST API with JSON and a SOAP API with XML, with the same functionality. You work with connectors: GetConnectors to fetch data and UpdateConnectors to add, change or delete data. You set which connectors an integration may use in an app connector.
Does AFAS support webhooks?
Since Profit 8 it does, but only for dossier items, responses to dossier items and workflows. The notification says that something changed, not what, so you then fetch the details with a GetConnector. For changes to employees, customers or bookings, you poll periodically for changed records.
Can I test an AFAS integration without production data?
Yes, if you have a test or acceptance environment. You recognise them by the T or A in the environment name, and they have their own REST address. A separate demo environment for developers requires an AFAS licence, through a customer or through the AFAS partner programme.
Is a certified integration from the Partnerportal always enough?
Not always. A certified integration has been tested for functionality and security, but it follows the process the vendor had in mind. If you use custom fields, several employers or your own rules on which system leads, you'll need additional custom work. We can connect any system to AFAS, even when there is no standard integration.
Can an AI assistant access data in AFAS?
It can, if you decide what it sees. Create a separate app connector with GetConnectors that contain only the fields needed, and don't give the assistant any UpdateConnectors. Leave out salary, BSN and sickness absence, and for HR data you need an assessment under the GDPR.
Sources
The technical facts on this page come from the vendors' official documentation, checked on 19 September 2026. Vendors change their APIs and limits; when we build an integration, we always check the current state.
- AFAS Help Center: REST API for developers (in Dutch)
- AFAS Help Center: Connectors, linking external software to Profit (in Dutch)
- AFAS Help Center: Generating a token (in Dutch)
- AFAS Help Center: Adding a GetConnector (in Dutch)
- AFAS Help Center: UpdateConnector descriptions (in Dutch)
- AFAS Help Center: Webhooks on dossier items and workflows (in Dutch)
- AFAS Help Center: REST service URLs (in Dutch)
- AFAS Help Center: Fetching changed data with a GetConnector (in Dutch)
- AFAS Help Center: Synchronising user groups with Entra ID (in Dutch)
- AFAS Help Center: Setting up single sign-on (in Dutch)
- AFAS Partnerportal: Integrations (in Dutch)
- AFAS Partnerportal: Certification FAQ (in Dutch)
- AFAS: Business software (in Dutch)



