PHPackages                             timothydc/exact-online-base-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. timothydc/exact-online-base-client

ActiveLibrary[API Development](/categories/api)

timothydc/exact-online-base-client
==================================

Exact Online base client

v4.0.0(6mo ago)01.4k↑764.3%1MITPHPPHP ^8.0

Since May 25Pushed 6mo ago1 watchersCompare

[ Source](https://github.com/timothydc/exact-online-base-client)[ Packagist](https://packagist.org/packages/timothydc/exact-online-base-client)[ RSS](/packages/timothydc-exact-online-base-client/feed)WikiDiscussions main Synced yesterday

READMEChangelog (4)Dependencies (5)Versions (38)Used By (1)

Exact Online Base Client
========================

[](#exact-online-base-client)

This package provides a wrapper for the Exact Online API.

Usage
-----

[](#usage)

The basic configuration looks like this:

```
use TimothyDC\ExactOnline\BaseClient\ExactOnlineClient;
use TimothyDC\ExactOnline\BaseClient\ClientConfiguration;
use TimothyDC\ExactOnline\BaseClient\Authentication\TokenVault;
use Psr\Log\LogLevel;

$clientConfiguration = new ClientConfiguration(
    'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // client ID
    'yyyy', // client secret
    'zzzz',  // webhook secret
    'your-public-callback-url', // redirect URL - should be _exactly_ the same as the URL defined in the EOL app center
    'https://start.exactonline.be' // API base URL. Note the ".be" for Belgium
 );

$tokenVault = new TokenVault();
$tokenVault->setStoragePath('path/to/tokens.json');

$client = new ExactOnlineClient($clientConfiguration, $tokenVault);
$client->setLogger($this->logger); // optional logging
$client->setDefaultLogLevel(LogLevel::ERROR); // optional log level
```

### Authorization

[](#authorization)

If you want to start a new authentication process, then call:

```
$client->startAuthorization();
```

During the authentication process, EOL will redirect you to your callback URL. There you will need to do:

```
$client->completeAuthorization('code-from-query-parameters');
```

Now your `$eolClient`-object is ready to make API requests:

```
use Picqer\Financials\Exact\Item;

$items = (new Item($client->getConnection()))->get();
```

### Disconnect

[](#disconnect)

If you want to disconnect and delete the access tokens, call the disconnection function on your client.

```
$client->disconnect();
```

### Internationalisation

[](#internationalisation)

If you want to retrieve the language dependent fields in a different language (e.g. Item description and Item long description), call the connection with a language parameter.

```
use Picqer\Financials\Exact\Item;

$items = (new Item($client->getConnection('FR-BE')))->get();
```

See also the `Support\ExactLocale.php` file. For more information, see

Customization
-------------

[](#customization)

### Storage driver

[](#storage-driver)

Tokens will be saved, by default, in a json file on the local disk.

To make a custom driver, create a custom Vault class which extends the `TokenVaultInterface`-interface.

```
use TimothyDC\ExactOnline\BaseClient\Interfaces\AccessTokenInterface;
use TimothyDC\ExactOnline\BaseClient\Interfaces\TokenVaultInterface;

class TokenVault implements TokenVaultInterface
{
    public function makeToken(?string $accesToken, ?string $refreshToken, int $expiresAt): AccessTokenInterface
    {
    }

    public function store(AccessTokenInterface $accessToken): void
    {
    }

    public function retrieve(): AccessTokenInterface
    {
    }

    public function clear(): void
    {
    }
}
```

And also a custom Token class which extends the `AccessTokenInterface`-interface.

```
use TimothyDC\ExactOnline\BaseClient\Interfaces\AccessTokenInterface;

class Token implements AccessTokenInterface
{
    public function getAccessToken(): ?string
    {
    }

    public function getRefreshToken(): ?string
    {
    }

    public function getExpiresAt(): int
    {
    }
}
```

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance66

Regular maintenance activity

Popularity18

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~46 days

Recently: every ~282 days

Total

37

Last Release

201d ago

Major Versions

v1.8.1 → v2.0.02021-12-23

v2.6.0 → v3.0.02024-06-02

v3.2.0 → v4.0.02025-12-14

PHP version history (3 changes)v1.0.0PHP ^7.4|^8.0

v2.0.0PHP ^8.0|^8.1

v2.5.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/b19824d74959d87bb9c166a27875496cc58e9cc49e10fb551dea3d65f2bf30ad?d=identicon)[timothydc](/maintainers/timothydc)

---

Top Contributors

[![timothydc](https://avatars.githubusercontent.com/u/13786303?v=4)](https://github.com/timothydc "timothydc (3 commits)")

---

Tags

Exact Online

###  Code Quality

Code StyleECS

### Embed Badge

![Health badge](/badges/timothydc-exact-online-base-client/health.svg)

```
[![Health](https://phpackages.com/badges/timothydc-exact-online-base-client/health.svg)](https://phpackages.com/packages/timothydc-exact-online-base-client)
```

###  Alternatives

[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M508](/packages/pimcore-pimcore)[craftcms/cms

Craft CMS

3.6k3.6M3.1k](/packages/craftcms-cms)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M574](/packages/shopware-core)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.1k17.8k](/packages/prestashop-prestashop)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
