Connecting to Exact Online
Exact Online has an extensive API, with a few rules that shape the design of your integration.
Getting access
An Exact Online integration starts with an app. You register it in the App Center, under Manage and Apps, choosing whether it is public or only for yourself. Exact gives you a client ID and a client secret, and you set the address Exact returns the user to after signing in.
Sign-in then runs on OAuth 2.0. Your software sends the user to Exact, the user signs in there and grants permission, and your software receives a key that has to be refreshed periodically. Your software never sees the user's password.
Until Exact has reviewed your app, it only works with users from the Exact environment in which it was created. For an integration with your own administration, you therefore create the app in your own Exact environment. If the integration also has to work for other companies, you have Exact review the app first.
Exact uses a separate address for each country. A Dutch administration is reached on the Dutch address, which is not the Belgian or the German one. If you have administrations in several countries, the design has to take that into account.
The limits that shape the design
Exact Online allows 60 calls per minute and 5,000 per day, per app and per administration. All apps together may make 20,000 calls per day per Exact Online contract; with a Premium licence the daily limit per app no longer applies and the total is 30,000. The daily counter resets at the start of the following day. Once the limit is reached, Exact refuses further requests with status code 429.
An integration that asks every fifteen minutes whether anything changed spends 96 calls a day on that question alone; if it then fetches the customer and the lines for each invoice it found, every invoice costs several calls.
So have Exact report changes through webhooks instead of repeatedly asking, and fetch what you need in as few requests as possible.
How many calls a product configurator uses per order is worked out in the article on product configurators and Exact Online.
What to plan for from the start
Four properties of the Exact API belong in the plan from the start.
- Every call belongs to a division, the administration number inside Exact. If you have several administrations, your software has to know which one applies and the user has to be able to pick
- Fetching the customer for an invoice takes a separate call, and that call counts towards the daily ceiling
- Each request returns a limited number of records, after which you ask for the next page. Large extracts are therefore always a series of requests
- Matching payments against invoices has no endpoint of its own in the REST API. To automate it, that logic has to be built into the integration itself from the underlying data
Sources
Frequently asked questions
Does every Exact Online subscription include API access?
Registering your own app and connecting it to your Exact Online environment is free of charge under Exact's terms. What the integration can read and write is determined by your package and by the rights of the user who grants it access, because not every part of the API is available in every package. So check this with your Exact administrator or your accountant before anything gets built.
Who should create the app, you or us?
Either works. If you create it, the key stays yours and you can revoke access at any moment. That is our preference, and we walk you through the steps.
How long does Exact's review take?
Exact sets that timeline. So put the review on the schedule as soon as it is clear the integration has to work for more than one customer.
What happens if we reach the daily limit?
Exact refuses further requests until midnight. An integration designed for that puts the work in a queue and carries on the next day without losing any data.
Does this work with Exact Globe or Exact Compact?
Those are different products, running on your own server rather than in the cloud. Connecting is possible, but along a different route than the one described here. If you mention it in the intro call, we will look into what it requires.