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.| Option | Description | Default |
|---|---|---|
| --from-timesheet | Auto-populate line items from tracked time entries | false |
| --client <name> | Select client by name (auto-selected if only one configured) | prompt |
| --month <YYYY-MM> | Invoice month for billing period | current |
| --hours <number> | Hours for first line item | last used |
| --rate <number> | Hourly rate for first line item | client 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.
| Option | Description | Default |
|---|---|---|
| --list | List all configured clients with rate, currency, and contact info | — |
| --add | Add 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).
| Option | Description | Default |
|---|---|---|
| --list | Show current sender profile and SMTP configuration (passwords masked) | — |
| --edit | Edit sender profile interactively: name, email, address, SMTP host/port/user/pass | — |
| --reset | Reset 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.
| Option | Description | Default |
|---|---|---|
| --export <format> | Export format: csv or json | json |
| --client <name> | Filter entries by client name | all |
| --month <YYYY-MM> | Filter entries by month | all |
| --archive | Show archived (already billed) entries instead of active ones | false |
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.
| Option | Description | Default |
|---|---|---|
| --list | List all drafts with status (draft/scheduled/paid) | — |
| --generate | Check 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-due | Check 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
Stop & save timer
When no input is focused + timer active
Log manual entry
Any context, timer must be idle
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.- StartBegin tracking time for selected client
- PausePause without losing elapsed time
- ResumeContinue from paused state
- Stop & SaveSave entry to timesheet.json
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.
- ShowOpen / focus the main window
- PausePause the active timer
- Stop & SaveStop timer and save entry
- QuitExit the application
Backend APITAURI IPC
Internal Rust commands exposed via Tauri IPC. These are called by the frontend JavaScript — not directly by the user.
| Command | Description | Returns |
|---|---|---|
| load_clients | Read all clients from config.json | ClientConfig[] |
| load_entries | Filter timesheet by client + month | TimeEntry[] |
| save_entry | Append entry to timesheet.json | TimeEntry |
| delete_entry | Remove entry by ID | void |
| save_timer_state | Write/clear active-timer.json for crash recovery | void |
| load_timer_state | Read crash recovery state on launch | ActiveTimer? |
| get_project_path | Resolve project root directory path | string |
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