<!-- Exact Online -->
<!-- canonical: https://yres.eu/en/wiki/integraties/bronnen/exact-online -->
# Exact Online

**Category:** Direct connection  ·  🏅 Official partner

Dutch accounting/ERP software. Official partner. Yres retrieves data via the Exact Online REST API using **OAuth2 (authorization-code)**.

## Expected input

You connect Exact Online through your own, pre-registered Exact app. In the form you enter the OAuth credentials and then go through an interactive login during which Yres retrieves the tokens.

| Field | Explanation |
|---|---|
| **Source name** | Unique name, starts with a letter, alphanumeric, 2-45 characters. Becomes the name of the ADF linked service and the basis for the Key Vault secret name `adf-{sourcename}-…`. |
| **Client ID** | OAuth client ID of your Exact app (from the Exact App Center). |
| **Client secret** | OAuth client secret of your Exact app. |
| **Login with ExactOnline** | Interactive OAuth popup that, after login, automatically retrieves an **access token** and **refresh token** and links them to Yres. The access token is short-lived (expires ~10 minutes after retrieval); Yres refreshes it via the refresh token. |
| **Administration (division)** | For the dev environment you select the Exact administration (division) from a dropdown. This determines which administration is read. |

**Authentication:** OAuth2 authorization-code (with refresh token), **separate per environment**.

**Integration runtime:** cloud — **`AutoResolveIntegrationRuntime`**. Exact Online is a publicly reachable SaaS source; a self-hosted integration runtime is not required.

**Credentials per environment:** for Exact Online the credentials are **always different per environment** (Yres forces "credentials identical for all environments" to **No**). You therefore register a **separate Exact app for both dev and prod** and go through the OAuth login separately for each environment.

**Secrets:** the web app stores no secrets in the frontend. The **Client ID and Client secret** go to the customer's **Azure Key Vault** (`adf-{sourcename}-…`); the **access and refresh tokens** are kept in the **`Config.Tokens`** table in the customer's DWH database, where Yres maintains and refreshes them. The tokens are injected into the REST call at runtime — the committed linked services (`ExactOnline.json` / `ExactOnline_HTTP.json`, type `RestService`/`HttpServer`) are themselves set to `Anonymous`.

## Preparation

Before connecting, register your Exact app(s):

1. **Register an app** — log in to the [Exact Online App Center for App Developers](https://apps.exactonline.com) (apps.exactonline.com), open **Manage apps** and register a new app (for your own use). Do this **twice**: one app for your **dev** environment and one app for your **prod** environment.
2. **Client ID + Client secret** — Exact provides a **Client ID** and **Client secret** per app (the OAuth credentials). You enter these in the Yres form.
3. **Redirect URL** — for each Exact app, enter the **redirect URL** exactly as shown in the Yres web app. The redirect must match exactly, otherwise OAuth authorization will fail.

:::tip Copy the redirect URL from the web app
The redirect URL is generated by the web app (a `…/exactonline/callback` address) and shown in the connection form. Copy the value as it appears in the web app — do not enter a fixed URL from this documentation.
:::

## Retrieving data

After entering the Client ID and Client secret, you start the OAuth login in the form (**"Login with ExactOnline"**). You log in to Exact, grant consent, and the popup returns with the tokens. For dev you then select the administration (division). From that point on, Yres retrieves the data via the Exact Online REST API and automatically refreshes the access token with the refresh token.

Official documentation: [Exact Online — App for Developers / OAuth](https://support.exactonline.com/community/s/knowledge-base#All-All-DNO-Content-oauth-eol-oauth-devstep1).

---

**See also:** [Integration catalog](https://yres.eu/en/wiki/integraties/catalogus) · [All data source requirements](https://yres.eu/en/wiki/referentie/databron-vereisten) · [Integrations — overview](https://yres.eu/en/wiki/integraties/overzicht)
