NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2041 most downloaded on Packagist
A PHP Client for the Exact API
Last release 14 days ago
23 Sep 2026
Release timing varies
gaps range from 8 days to 9 months
Some releases are documented
notes for 15 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
113 releases · first in 2014
InvoiceSalesOrderResult::findByProcessId() fetches the result of an async InvoiceSalesOrders process. The library now takes care of the ProcessID para
InvoiceSalesOrderResult::findByProcessId() fetches the result of an async InvoiceSalesOrders process. The library now takes care of the ProcessID parameter format. #701$result = (new \Picqer\Financials\Exact\InvoiceSalesOrderResult($connection))->findByProcessId($processId);setTokenUpdateCallback(), because refresh tokens rotate. Set the lock callbacks before the first refresh.One column per quarter.
Async mode for InvoiceSalesOrders. As of October 2026 Exact only supports the async mode of this endpoint. InvoiceSalesOrder now has Mode and ProcessI
InvoiceSalesOrder now has Mode and ProcessID. Before, Mode was silently dropped from the request. The new InvoiceSalesOrderResult entity fetches the result of the background process. See the README for an example. #700$invoiceSalesOrder->Mode = 1; // Async
$invoiceSalesOrder->save();
$results = (new \Picqer\Financials\Exact\InvoiceSalesOrderResult($connection))
->get(['ProcessID' => "guid'{$invoiceSalesOrder->ProcessID}'"]);Requires Guzzle 7.15.2 or higher. Guzzle 6 and Guzzle 7 versions below 7.15.2 have known security vulnerabilities, and Composer already blocks install…
Please check these when upgrading:
Please check these when upgrading:
$invoice->SalesInvoiceLines fails (e.g. 429 or 401), an ApiException is now thrown. Before, the raw ['__deferred' => …] array was returned without any error. isset() on a deferred property triggers the load too, so it can also throw now. #697download() throws ApiException. Item::download() and DocumentAttachment::download() now go through the new Connection::downloadFile(). They use your configured client and middleware, refresh expired tokens and track rate limits. Errors are thrown as ApiException instead of Guzzle exceptions. #697Expenses::$ExpenseLines) are returned as is, instead of causing a fatal Class not found error. #697filter('Division eq …') restores the original division when the request fails. #697Connection::downloadFile(string $url): StreamInterface downloads files from absolute Exact Online urls. #697Generator pagination no longer stops early. getAsGenerator() and filterAsGenerator() stopped after the current page, without any error, when another r
getAsGenerator() and filterAsGenerator() stopped after the current page, without any error, when another request was made on the same connection while iterating (for example a find() or lazy loading). #695setTokenExpires() accepts numeric strings again. Passing a value read from a database, as the README shows, threw a TypeError. getTokenExpires() now returns 0 instead of throwing when no value is set. #695ApiException code is now the status code (e.g. 400 for invalid_grant) instead of 0. #695{division} placeholder in beta endpoint urls is now filled in. #695hash_equals). #695chore: update models from documentation 2025-12-10 by @DannyvdSluijs in #688
Full Changelog: v4.5.5...v4.6.0
Provide proper return types to Findable by @curry684 in #684
Full Changelog: v4.5.4...v4.5.5
feat: update to latest details from documentation; Resolve type issues from phpstan baseline by @DannyvdSluijs in #680
Full Changelog: v4.5.3...v4.5.4
Add deprecations on incorrect class names by @DannyvdSluijs in #678
Full Changelog: v4.5.2...v4.5.3
Added getPurchaseOrderLines() function for PurchaseOrders, just like … by @Jessedev1 in #677
Full Changelog: v4.5.1...v4.5.2
Deprecate duplicate units class by @DannyvdSluijs in #675
Full Changelog: v4.5.0...v4.5.1
⚠️ SyncScheduleEntry has a breaking change ScheduleActivityType has been replaced with ScheduleType
SyncScheduleEntry has a breaking change ScheduleActivityType has been replaced with ScheduleTypeFull Changelog: v4.4.3...v4.5.0
feat: Update based on documentation d.d. 2024-12-31 by @DannyvdSluijs in #663
Full Changelog: v4.4.2...v4.4.3
feat: Update based on documentation d.d. 2024-10-28 by @DannyvdSluijs in #661
Full Changelog: v4.4.1...v4.4.2
added getState function to be able to use it in the callbackfunctions #649 by @weha in #651
Full Changelog: v4.4.0...v4.4.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →