Documentation

Command Reference

Every CLI command, desktop shortcut, and tray action in one place.

invoicer generateCLI
invoicer generate
Generate a professional PDF invoice from manual entry or timesheet data. This is the default command — running invoicer alone executes generate.
OptionDescriptionDefault
--from-timesheetAuto-populate line items from tracked time entriesfalse
--client <name>Select client by name (auto-selected if only one configured)prompt
--month <YYYY-MM>Invoice month for billing periodcurrent
--hours <number>Hours for first line itemlast used
--rate <number>Hourly rate for first line itemclient rate
--desc <text>Description for first line item"Services"
--invoice <number>Custom invoice number (overrides auto-generated)auto
Examples
# Generate with default prompts
invoicer generate

# Quick invoice with all options
invoicer generate --month=2026-02 --hours=168 --rate=40 --desc="Development"

# From tracked timesheet entries
invoicer generate --from-timesheet --client="Acme Corp"

# Custom invoice number
invoicer generate --invoice=INV-202602-007
invoicer clientsCLI
invoicer clients
Manage client configurations in config.json. Add, edit, list, or remove clients without manually editing JSON.
OptionDescriptionDefault
--listList all configured clients with rate, currency, and contact info
--addAdd a new client interactively (name, email, rate, currency, terms)
--edit <name>Edit an existing client by name
--delete <name>Delete a client by name (with confirmation)
Examples
# List all clients
invoicer clients --list

# Add a new client (interactive)
invoicer clients --add

# Edit existing client
invoicer clients --edit "Acme Corp"

# Delete a client
invoicer clients --delete "Old Client"
invoicer senderCLI
invoicer sender
Manage your freelancer/sender profile and SMTP settings. Configure your name, email, address, and email sending credentials — all stored in config.json (no separate .env file needed).
OptionDescriptionDefault
--listShow current sender profile and SMTP configuration (passwords masked)
--editEdit sender profile interactively: name, email, address, SMTP host/port/user/pass
--resetReset sender profile to empty (clears all data including SMTP settings)
Examples
# View current sender profile
invoicer sender --list

# Configure sender details + SMTP (interactive)
invoicer sender --edit
# Prompts for: name, email, address, SMTP settings
# SMTP defaults to Gmail (smtp.gmail.com:587)

# Clear all sender data
invoicer sender --reset
invoicer timesheetCLI
invoicer timesheet
View and export timesheet data. Filter by client and month, export to CSV or JSON formats. Also view archived (billed) entries.
OptionDescriptionDefault
--export <format>Export format: csv or jsonjson
--client <name>Filter entries by client nameall
--month <YYYY-MM>Filter entries by monthall
--archiveShow archived (already billed) entries instead of active onesfalse
Examples
# View all active timesheet entries
invoicer timesheet

# Export current month's entries as CSV
invoicer timesheet --export csv --month=2026-02

# View billed entries for a specific client
invoicer timesheet --archive --client="Acme Corp"

# Export archived entries as JSON
invoicer timesheet --archive --export json
invoicer draftsCLI
invoicer drafts
Manage invoice drafts, automated billing cycles, and scheduled sending.
OptionDescriptionDefault
--listList all drafts with status (draft/scheduled/paid)
--generateCheck client billing cycles and auto-generate drafts for ended periods
--review <id>Review line items and totals for a specific draft
--schedule <id>Schedule a draft to be sent automatically on a specific date (YYYY-MM-DD)
--send <id>Immediately finalize and send a draft via email
--process-dueCheck for and send any scheduled drafts that are due
Examples
# List all current drafts
invoicer drafts --list

# Generate new drafts from billing cycles
invoicer drafts --generate

# Schedule a draft for next Monday
invoicer drafts --schedule 5a4b7c --date="2026-03-01"
Keyboard ShortcutsDESKTOP
Start / Pause / Resume timer
When no input is focused
Space
Stop & save timer
When no input is focused + timer active
Enter
Log manual entry
Any context, timer must be idle
⌘ Enter
Timer ControlsDESKTOP
The desktop app provides a live time tracker with automatic crash recovery. Timer state persists to data/active-timer.json on every state change and restores on launch.
System Tray MenuDESKTOP
The app lives in your system tray. Right-click the tray icon to access quick actions even when the window is closed.
Backend APITAURI IPC
Internal Rust commands exposed via Tauri IPC. These are called by the frontend JavaScript — not directly by the user.
CommandDescriptionReturns
load_clientsRead all clients from config.jsonClientConfig[]
load_entriesFilter timesheet by client + monthTimeEntry[]
save_entryAppend entry to timesheet.jsonTimeEntry
delete_entryRemove entry by IDvoid
save_timer_stateWrite/clear active-timer.json for crash recoveryvoid
load_timer_stateRead crash recovery state on launchActiveTimer?
get_project_pathResolve project root directory pathstring
Quick SetupGETTING STARTED
Install & Run
# 1. Install from npm
npm install -g @invoicer/cli

# 2. Set up your sender profile & SMTP
invoicer sender --edit

# 3. Add a client
invoicer clients --add

# 4. Generate your first invoice
invoicer generate