PHPackages                             justbetter/laravel-exact-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. [HTTP &amp; Networking](/categories/http)
4. /
5. justbetter/laravel-exact-client

ActivePackage[HTTP &amp; Networking](/categories/http)

justbetter/laravel-exact-client
===============================

A client to interact with Exact

1.1.0(3mo ago)42.0k↓46.7%1MITPHPPHP ^8.3CI passing

Since May 6Pushed 2mo ago5 watchersCompare

[ Source](https://github.com/justbetter/laravel-exact-client)[ Packagist](https://packagist.org/packages/justbetter/laravel-exact-client)[ RSS](/packages/justbetter-laravel-exact-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (9)Versions (6)Used By (0)

[ ![Banner](./art/banner.svg)](https://github.com/justbetter/laravel-exact-client "Exact Client")Laravel Exact Client
====================

[](#laravel-exact-client)

 [![Tests](https://camo.githubusercontent.com/5f93635d0ccba796e09e3ee7cec105713022347cd15082295e7acec7fc68de71/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6a7573746265747465722f6c61726176656c2d65786163742d636c69656e742f74657374732e796d6c3f6c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/justbetter/laravel-exact-client) [![Coverage](https://camo.githubusercontent.com/eddd140a3d1c95dd185f3f933cfdba0a0fe853365b34954201242fc367e0a355/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6a7573746265747465722f6c61726176656c2d65786163742d636c69656e742f636f7665726167652e796d6c3f6c6162656c3d636f766572616765267374796c653d666c61742d737175617265)](https://github.com/justbetter/laravel-exact-client) [![Analysis](https://camo.githubusercontent.com/29301229bc67f60ddded06ebe3a9df43b72fa4c558ecfb7df72148e27fb1b50f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6a7573746265747465722f6c61726176656c2d65786163742d636c69656e742f616e616c7973652e796d6c3f6c6162656c3d616e616c79736973267374796c653d666c61742d737175617265)](https://github.com/justbetter/laravel-exact-client) [![Total downloads](https://camo.githubusercontent.com/6039c3ab01fb182e0cbecf81eee48ca98466a7e7ede0ec743a823daabcbc3ef6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a7573746265747465722f6c61726176656c2d65786163742d636c69656e743f636f6c6f723d626c7565267374796c653d666c61742d737175617265)](https://github.com/justbetter/laravel-exact-client)

A client to communicate with Exact from your Laravel application.

Installation
------------

[](#installation)

Install the composer package.

```
composer require justbetter/laravel-exact-client
```

Setup
-----

[](#setup)

Publish the configuration of the package.

```
php artisan vendor:publish --provider="JustBetter\ExactClient\ServiceProvider" --tag=config
```

Run the migrations.

```
php artisan migrate
```

Add the following keys to your `.env` file:

```
EXACT_CLIENT_ID=
EXACT_CLIENT_SECRET=
EXACT_DIVISION=
```

Out of the box, the connection is called `default`.

### Middleware

[](#middleware)

By default, no middleware has been added to authorize with Exact. Update the `middleware` in your configuration to add proper authentication and authorization.

Exact Apps
----------

[](#exact-apps)

You have to create a new app in Exact Online. Make sure your account has the necessary permissions, otherwise you will be redirected back to the login page.

1. Open the [login](https://www.exact.com/login) page.
2. Click on the login button in the section "Exact Online App Store"
3. Register a new [app](https://apps.exactonline.com).

Make sure the redirect URL is the callback URL of the application. This must be an HTTPS address.

```
https://localhost/exact/callback/default

```

Divisions in the configuration file must be unique across all connections.

Initiate Authentication
-----------------------

[](#initiate-authentication)

In order to initiate the authentication process with Exact, open the following link.

```
https://localhost/exact/authorize/default

```

After finishing the process, you can check your connection by requesting all available divisions.

```
php artisan exact:list-divisions default
```

Tokens are stored in the database.

Retaining Access
----------------

[](#retaining-access)

Making calls to Exact will make sure the tokens remain valid. The package automatically refreshes the tokens when required. If you are not regularly making calls to Exact, you should add the command below to your scheduler. Otherwise, the refresh token may expire and you'll have to authenticate with Exact again. A refresh token is valid for [30 days](https://support.exactonline.com/community/s/knowledge-base#All-All-DNO-Content-oauth-eol-oauth-devstep3).

```
$schedule->command(\JustBetter\ExactClient\Commands\RefreshTokenCommand::class, [
    'default',
])->weekly();
```

Rate Limits
-----------

[](#rate-limits)

Exact is known for their strict rate limiting. It's generally recommended to distribute a load over a longer period of time. To prevent unnessecary failures further, this package includes a `RateLimitMiddleware` which is a [job middleware](https://laravel.com/docs/12.x/queues#job-middleware) to automatically release jobs back on the queue if a rate limit has been exceeded.

```
use JustBetter\ExactClient\Jobs\Middleware\RateLimitMiddleware;

public function middleware(): array
{
    return [
        RateLimitMiddleware::division('default'),
    ];
}
```

Rate limits are stored in the database.

Quality
-------

[](#quality)

To ensure the quality of this package, run the following command:

```
composer quality
```

This will execute three tasks:

1. Makes sure all tests are passed
2. Checks for any issues using static code analysis
3. Checks if the code is correctly formatted

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Vincent Boon](https://github.com/VincentBean)
- [Ramon Rietdijk](https://github.com/ramonrietdijk)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

[ ![JustBetter logo](./art/footer.svg)](https://justbetter.nl "JustBetter")

###  Health Score

47

—

FairBetter than 94% of packages

Maintenance84

Actively maintained with recent releases

Popularity26

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 60% 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 ~139 days

Total

3

Last Release

99d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2d00b3f55cd4ae8b8cfb001a644ed6c7a1127a956c24375bcfe16ce12bd89bed?d=identicon)[justbetter](/maintainers/justbetter)

---

Top Contributors

[![ramonrietdijk](https://avatars.githubusercontent.com/u/85165272?v=4)](https://github.com/ramonrietdijk "ramonrietdijk (9 commits)")[![VincentBean](https://avatars.githubusercontent.com/u/3906942?v=4)](https://github.com/VincentBean "VincentBean (6 commits)")

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/justbetter-laravel-exact-client/health.svg)

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

###  Alternatives

[namu/wirechat

A Laravel Livewire messaging app for teams with private chats and group conversations.

54324.5k](/packages/namu-wirechat)[georgeboot/laravel-echo-api-gateway

Use Laravel Echo with API Gateway Websockets

10435.5k](/packages/georgeboot-laravel-echo-api-gateway)[api-platform/laravel

API Platform support for Laravel

59126.4k6](/packages/api-platform-laravel)[behamin/service-proxy

for proxy or sending requests to other services with useful utilities

102.2k](/packages/behamin-service-proxy)

PHPackages © 2026

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