Authentication
Not authenticated. Run 'neetoinvoice login' to authenticate.
Not authenticated. Run 'neetoinvoice login' to authenticate.
Multiple subdomains authenticated (acme, beta); specify --subdomain.
Multiple subdomains authenticated (acme, beta); specify --subdomain.
--subdomain on the command, or sign out of the ones you do not need.Not authenticated for "foo". Authenticated subdomains: acme, beta.
Not authenticated for "foo". Authenticated subdomains: acme, beta.
--subdomain names a workspace you are not signed in to.Fix: run neetoinvoice whoami to see the signed-in accounts, then use one of those
names or sign in to the new one.Subdomain not found. Please check that you entered the correct subdomain.
Subdomain not found. Please check that you entered the correct subdomain.
login could not reach a NeetoInvoice workspace at that subdomain.Fix: pass only the part before .neetoinvoice.com. For acme.neetoinvoice.com the
subdomain is acme. See workspace subdomain.NeetoInvoice CLI authentication timed out after 2 minutes. Please try again.
NeetoInvoice CLI authentication timed out after 2 minutes. Please try again.
Authentication session expired. Please try again. means the server closed the
sign-in session first.Fix: run neetoinvoice login again. If no browser opens, visit the URL the command
prints.Commands and flags
required flag(s) "..." not set
required flag(s) "..." not set
neetoinvoice commands.Nothing to update. Pass at least one of --email, --first-name, --last-name, --time-zone or --role.
Nothing to update. Pass at least one of --email, --first-name, --last-name, --time-zone or --role.
team-members update was run with no change flags.Fix: pass at least one of the listed flags.API error (422): Unprocessable Entity
API error (422): Unprocessable Entity
Suggestion: Check required fields with 'neetoinvoice <command> --help'.Fix: correct the value and retry.A command or flag is missing from the CLI
A command or flag is missing from the CLI
Completion does not suggest a newly added command
Completion does not suggest a newly added command
Claude Code not found (~/.claude/ does not exist).
Claude Code not found (~/.claude/ does not exist).
setup claude runs only on a machine where Claude Code has been started at
least once.Fix: install and open Claude Code, then re-run neetoinvoice setup claude. See
AI assistants.Permissions
The CLI acts as the signed-in user, not as the workspace, so commands are limited by what your role allows. A request that a workspace API key would satisfy can still be refused for your account.API error (403): Forbidden
API error (403): Forbidden
Suggestion: You do not have permission to perform this action.Fix: ask a workspace admin to adjust your role, or run the equivalent
REST API call with a workspace API key.API error (404): Not Found
API error (404): Not Found
Suggestion: Resource not found. Check the ID and try again.Fix: look the record up again with the matching list or show command. Clients and
projects take their identifier; recipients, project users, team members, tasks, and time
entries take their record id.Editing a time entry fails because it is already billed
Editing a time entry fails because it is already billed
Connectivity
Could not connect to NeetoInvoice. Check your internet connection
Could not connect to NeetoInvoice. Check your internet connection
NEETOINVOICE_BASE_URL points somewhere unreachable.Fix: confirm the workspace subdomain, and
unset NEETOINVOICE_BASE_URL if you had pointed the CLI at a local or staging server.API connection: could not reach https://acme.neetoinvoice.com
API connection: could not reach https://acme.neetoinvoice.com
doctor could not open a connection to the workspace, for the same reasons as
above.Fix: run neetoinvoice doctor --subdomain <name> with the subdomain you expect, and
check the Error: line it prints beneath the check.API error (429): Too Many Requests
API error (429): Too Many Requests
Suggestion: Rate limited. Wait and try again.Fix: pause, then retry. Slow down loops that page through large result sets.Reading errors
Every command exits non-zero on failure and writes the error to standard error, so a pipeline reading--json or --quiet output sees an empty payload and the exit code. Errors raised by
the API take this shape: