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
Stop & save timer
When no input is focused + timer active
Log manual entry
Any context, timer must be idle
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.
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.
- Show Open / focus the main window
- Pause Pause the active timer
- Stop & Save Stop timer and save entry
- Quit Exit the application
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