Werkritme
NLEN
Integrations · AFAS

A custom AFAS integration, exceptions included

AFAS Profit stays where it is and stays the administration. We build what goes wrong around it: data currently typed into it by hand, and data currently pulled out of it by hand.

What an AFAS integration actually does

For companies that use it, AFAS Profit is the system of record: the relations, orders, projects, hours and financials live there. That does not change. An integration only changes who puts the data in.

There are two directions. Data coming from outside — an order in a mailbox, a work order from an app, an invoice as a PDF — has to get into Profit, in the right fields and against the right relation. And data sitting in Profit has to come out, because another system needs it.

The work is not in the connection but in what happens in between: looking up, translating, checking, and deciding what happens when it does not add up.

AFAS is a Benelux package. If you are reading this from elsewhere, the equivalent questions apply to Sage, DATEV or SAP Business One — and the answers below are the ones we would ask about those too.

Technology

How the AFAS interface works

AFAS documents this publicly. Below is what matters for your decision, and nothing you cannot look up yourself.

  1. 1
    GetConnector and UpdateConnector

    A GetConnector delivers data out of Profit to an external application. An UpdateConnector adds, changes or deletes data. Those are the two directions, and everything we build runs through one of them.

  2. 2
    The app connector as a keyring

    Access runs through an app connector with a token. An external application can only use the connectors linked to it: your administrator decides what we may read and write, and can revoke it. An app connector can also carry an IP restriction, so it only works from one fixed server.

  3. 3
    REST or SOAP

    The Profit REST service is called over https at an address of the form {environment}.rest.afas.online/ProfitRestServices/connectors/…, with an Authorization header starting with AfasToken followed by the token as a base64 string. There is also a SOAP variant with XML. Which of the two we use depends on the connector and on what sits at the other end.

  4. 4
    Fetching in blocks

    Large volumes are fetched with skip and take. AFAS advises always sorting, and gives as a guideline that the number of columns times the number of rows per call stays under 150,000. A wide GetConnector therefore fetches smaller blocks than a narrow one.

  5. 5
    Fixed business objects

    UpdateConnectors cannot be freely shaped. AFAS decides which exist and which fields they hold — FbSales for sales orders, KnSalesRelationOrg and KnSalesRelationPer for sales relations, FbItemCodeCustomer for a customer's item code. If no UpdateConnector exists for what you want, it cannot be done, and we say so.

  6. 6
    From classic token to OAuth

    AFAS is phasing out classic tokens. According to their documentation, existing classic tokens get an end date of 15 February 2027 during September 2026, and app connectors using the Classic token authentication type stop working after 31 August 2027. Every integration running on one has to be converted before that date.

The hard cases

Where an AFAS integration comes apart in practice

These are the questions we ask in the Automation Check. If a supplier does not ask them, they surface later anyway — usually once there is already an invoice.

  • A customer orders on their own item code and it is not in the translation yet. Present it or create it, and who decides?
  • The relation does not exist in Profit yet. Create it automatically, or hold the order?
  • A price that departs from the price list because of an annual agreement recorded outside the system.
  • An UpdateConnector that does not hold the field your process needs.
  • Several environments or administrations, where the same customer has different numbers.
  • An app connector whose rights get narrowed during a Profit upgrade, silently.
Frequently asked

The questions we hear most

Honest answers, including the ones that argue against hiring us.

Are you an AFAS partner or certified?

No, and we say so up front. We build integrations against the publicly documented interface, the same one every partner uses. What we do not do is resell licences or configure Profit itself — for that you want your AFAS consultant.

In practice that works well together: they own the administration, we own what happens around it.

Who creates the GetConnector we need?

Your AFAS administrator or consultant, because it lives inside your own environment and we should not have rights there. We specify exactly which fields we need and why; they create it and link it to the app connector.

That is deliberate. It means you can see and revoke what we are allowed to read, and it means nobody has to hand us broad access to get one integration working.

Can you write data into AFAS as well?

Yes, through UpdateConnectors. But those are not freely shaped: AFAS decides which ones exist and which fields they contain — FbSales for sales orders, KnSalesRelationOrg and KnSalesRelationPer for sales relations, FbItemCodeCustomer for a customer's item code.

If no UpdateConnector exists for what you want, it cannot be done, and we will tell you that rather than build a workaround around the administration.

Our app connector uses a classic token. Do we need to do something about that?

Yes, and there is a deadline. AFAS is phasing classic tokens out: according to their own documentation, existing classic tokens get an end date of 15 February 2027 during September 2026, and app connectors using the Classic token authentication type stop working after 31 August 2027.

Every integration running on one has to be converted before then. If you already have integrations in production, that is worth putting on the calendar now rather than in 2027.

What does an AFAS integration cost and how long does it take?

A single integration without unusual rules usually falls in the standard band: from €1,750, two to four weeks. With translation tables, several processes or real exception handling it moves up a band.

The lead time is more often decided by how quickly the connectors get created on your side than by the building.

Start with one process

Tell us which work gets retyped most often at your company. If automating it turns out to be a bad idea, you will hear that in the first conversation — before there is an invoice.

Have your process assessed

The first conversation is free and without obligation. Want it substantiated? The Automation Check is €295 — deducted if you have us build within 30 days.