Skip to main content
neetoinvoice is the official command line interface for NeetoInvoice. It wraps the same public REST API documented in the API reference, so anything you can do over HTTP you can do from a shell, a script, or a CI job.

No API key to manage

Sign in once from the browser with neetoinvoice login. Credentials are stored on your machine and reused by every command.

Built for scripting

Every command speaks JSON on request, and --quiet reduces a response to the single identifier a shell pipeline needs.

Built for AI assistants

neetoinvoice setup claude teaches your coding assistant the command surface, and --toon cuts token use when feeding output back to a model.

Multiple workspaces

Sign in to as many subdomains as you need and pick one per command with --subdomain.

CLI vs MCP: which should I use?

NeetoInvoice’s MCP server reaches the same resources the CLI does - clients, recipients, projects, project users, team members, time entries, invoices, PTO, and the three reports. The two are level in reach, so choose on how the work reaches NeetoInvoice.

Reach for the CLI when

  • No AI assistant should be in the loop. A cron entry or a CI step runs neetoinvoice reports payroll-summary --month 8 --year 2026 with nothing but the binary and the workspace you already signed in to - no assistant open, no model account, no tokens spent per run. Over MCP, something with model access has to be running before any call happens at all.
  • The output feeds another program. --quiet prints the bare id for the next command, as in CLIENT_ID=$(neetoinvoice clients create --name "Acme Corp" --quiet), and --json hands a timesheet summary straight to jq, a spreadsheet, or the payroll script that consumes it. What comes back over MCP is a chat reply you would have to copy out by hand.
  • You are working through a year of time entries. neetoinvoice time-entries list with --page-size 100 --json returns total_pages and current_page_number in a pagination object, so a loop knows how many pages are left and walks all of them unattended. Each page lands in a file or goes straight into jq, so nothing has to be held in memory and the size of the project’s history stops mattering. Over MCP every page is a separate tool call, and entries in that volume crowd out the assistant’s context.
  • The run has to be repeatable and reviewable. Month-end close is the same commands in the same order every month: the timesheet summary, then the payroll summary, then the invoices. The command is the artifact - put it in a runbook or a pull request and it makes the identical call next time. Ask twice over MCP and the assistant may take a different route.

Reach for MCP instead when

  • The details live in your chat, not in your head. A client writes “we approved 6 hours of design on the 14th” and the assistant turns that message into the time entry. The same entry from the shell needs the client, project, and task ids, the date, and the hours all typed out, and the CLI cannot see the message at all.
  • You have not decided the steps yet. “Acme’s July hours look wrong - have a look” means reading what is there and choosing what to do about it. A command can only carry out a decision you have already made.
  • One request should cover several steps. “Bill Acme for July” finds the client, pulls its unbilled entries for the month, bills them, and emails the invoice to the recipients, with the ids carried from one call to the next. The same invoice from the shell needs a --json-file file listing every entry with its ids, hours, and rate, plus a total you worked out yourself.
  • The person doing it does not use a terminal. The office manager chasing this week’s missing timesheets installs nothing: NeetoInvoice hosts the server, and their assistant is already open.
You can have both. Run neetoinvoice setup claude and your AI assistant drives the CLI itself, so a plain-language request still ends in an exact command you can read, repeat, and paste into a script.

Prerequisites

  • A NeetoInvoice workspace and its subdomain.
  • An account in that workspace. The CLI acts as you, so it can only reach what your role permits.

Next steps

Installation

Install the CLI on macOS, Linux, or Windows.

Authentication

Sign in, check who you are, and work across several workspaces.

Commands overview

Every command grouped by resource.

Output formats

Pretty tables, JSON envelopes, quiet mode, and TOON.