CLI
Manage invoices, clients, and payments from an interactive terminal.
Invoicey CLI is an operator cockpit for the same workspace the web app, MCP, and Slack already share. It is not a second Invoicey — looks, members, bank connect, and bulk import stay on the website.
Same validation as every other surface
Drafts still go through InvoiceSchema. The CLI cannot invent an issuer —
create injects the workspace default, the same way MCP does.
Install
The public installer detects the current architecture, downloads the matching standalone binary,
verifies it against the published SHA-256 checksum, and puts it in ~/.invoicey/bin:
curl -fsSL https://invoicey.app/install | bashOpen a new terminal, or add the install directory to the current shell:
export PATH="$HOME/.invoicey/bin:$PATH"
invoicey --version
invoicey loginSet INVOICEY_INSTALL_DIR to choose another destination. Set INVOICEY_VERSION to install a
specific release instead of the latest one.
Login
Create a personal key
Under Settings → API keys, create a key and copy it once. See API keys.
Save it on this machine
invoicey loginPaste the key, keep the default API URL (https://invoicey.app) unless you are hitting a
local bun dev. The key is stored in ~/.invoicey/cli.json (mode 0600). You can also set
INVOICEY_API_KEY and optional INVOICEY_API_URL.
Confirm the workspace
invoicey whoami
invoicey statuslogin calls POST /api/companion with { "op": "me" }. A bad key is 401. If something in front
of the API returns HTML (a redirect to sign-in, a challenge page), the CLI prints the content-type
and a body snippet — it does not swallow that as a generic “unexpected response (200)”.
Daily use
invoicey # interactive home
invoicey status
invoicey invoices --unpaid
invoicey invoices show 20260012
invoicey invoices issue 20260012
invoicey invoices send 20260012
invoicey invoices new --ico 27082440 --desc "October consulting" --qty 32 --price 1800 --vat 21
invoicey clients add 27082440
invoicey payments
invoicey ares NFCtronInvoice refs are an issued number or a UUID. Irreversible actions confirm in a TTY unless you
pass --yes. --json prints the companion payload.
Commands
| Command | What it does |
|---|---|
invoicey | Interactive home when stdin is a TTY |
invoicey login / logout / whoami | Save, drop, or inspect the stored key |
invoicey status | Display-status counts and outstanding totals |
invoicey invoices [ls] | List (--unpaid, --limit, --q) |
invoicey invoices show <ref> | One invoice by number or UUID |
invoicey invoices new | Draft (--ico, --client, line flags) |
invoicey invoices issue <ref> | Issue a draft |
invoicey invoices send <ref> | Email PDF + ISDOC (--to) |
invoicey invoices paid / unpaid / cancel | Payment state and cancel |
invoicey invoices pdf / isdoc | Download artifacts (-o) |
invoicey clients / clients add <ico> | List, or add from ARES |
invoicey issuers | List issuers (default flagged) |
invoicey payments | Pending bank-match proposals |
invoicey payments confirm / reject | Confirm or reject a proposal |
invoicey ares <ico-or-name> | ARES lookup or name search |
Global flags: --api, --token, --json, -y / --yes.
Files on disk
| Path | What |
|---|---|
~/.invoicey/bin/invoicey | Compiled command |
~/.invoicey/cli.json | API URL + PAT (0600) |
Logout removes cli.json. It does not uninstall the binary. Delete ~/.invoicey/bin/invoicey and
the PATH line in your shell rc if you want it gone.