Command Reference

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

invoicer generate CLI
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 clients CLI
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 sender CLI
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 timesheet CLI
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 drafts CLI
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 Shortcuts DESKTOP
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 Controls DESKTOP
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.
  • ▶️ Start Begin tracking time for selected client
  • ⏸️ Pause Pause without losing elapsed time
  • ▶️ Resume Continue from paused state
  • ⏹️ Stop & Save Save entry to timesheet.json
  • System Tray Menu DESKTOP
    The app lives in your system tray. Right-click the tray icon to access quick actions even when the window is closed.
    Backend API TAURI 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 Setup GETTING STARTED
    Install & Run
    # 1. Clone and install
    git clone https://github.com/miladezzat/InvoicePilot.git
    cd InvoicePilot/cli && npm install
    
    # 2. Configure your details
    nano config.json
    
    # 3. Set up your sender profile & SMTP
    invoicer sender --edit
    
    # 4. Generate your first invoice
    invoicer generate