>exactcli
Open-source CLI for Exact Online

Your Exact Online books, from the terminal.

Read every resource of the API, book entries and invoices with typed commands, and keep production safe: writes stay off until you ask, and a profile can lock to one test division.

npm install -g @wavyx/exactcli

The whole API, tested against the real one.

Every write below was run on a real Exact Online administration before it shipped.

Catalogue
436API resources known to the CLI, every one reachable
Commands
250from the trial balance to direct debit mandates
Verified live
280write calls tested on a real Exact Online administration
Test coverage
100%1700+ tests run before every release

Built for the people who keep the books.

Accountants, finance teams and the developers who script for them, in a terminal, a CI job or an AI agent.

Safe writes

Nothing is written without --allow-writes, a delete also needs --yes, and --dry-run shows the validated request first. A profile can be read-only, or allowed to write to one division only.

Typed, by code

Name customers, ledger accounts and journals by their codes. Entries, invoices, orders, quotations and their lines, master data and receivables all have their own commands.

Ready for agents

An MCP server exposes the reads as tools, read-only by default. JSON when piped, a jq filter on every command, and exit codes a script can trust.

Your data, kept

backup copies a division to JSON files, one per sync feed, then reads only the changes and the deletions. Sync and bulk feeds page by 1000.

Key features

Each task of the month, in one line

The work you do in the web screens, as commands you can repeat, script and review.

zsh: exactcli
$ exactcli invoice create --customer 1001 --journal 700 --line WIDGET:2:100 --allow-writes
InvoiceID 3f2a9c1e-...
OrderedBy Acme NV
AmountFC 242,00 EUR
Status 20 Open
Validated against the API catalogue before it is sent
Getting started

From install to your first report in three steps

Exact Online signs you in with OAuth. exactcli runs the callback for you and keeps the tokens in your system keychain, never in a file.

  1. Install

    With npm on Node 22 or later, or with Homebrew on macOS and Linux.

    $ npm install -g @wavyx/exactcli $ brew install wavyx/tap/exactcli
  2. Register an app and sign in

    auth login prints the redirect URI. Register an app with it in Exact Online (Import/Export, App registrations), paste its Client ID and secret, and sign in in the browser.

    $ exactcli auth login Redirect URI: https://acme.ngrok-free.app/callback
  3. Pick an administration and go

    Choose the division to work in, then read. Writes stay off until you add --allow-writes.

    $ exactcli division use 123456 $ exactcli receivable list --status 20
Working on a live administration? Lock its profile first, so no command can write to it.$ exactcli config set read_only true --profile prod

How a write reaches Exact

Four checks run before one request leaves your machine. A refused write costs no API call at all.

  1. 1
    Validate against the catalogue

    Method allowed, mandatory fields present, no unknown or read-only field. Exit 64 otherwise.

  2. 2
    Open the write gate

    --allow-writes, and --yes for a delete. A read-only profile refuses whatever the flags say.

  3. 3
    Check the division

    write_divisions keeps writes on the administrations you allow, also for raw api calls and MCP tools.

  4. 4
    Send it once

    A POST is never sent twice. Without an answer, exactcli says the write may have landed, so nothing is booked double.