Command line
The same drafting as the web app, run from inside a repo. It reads the git history on your machine, so it works with any git host.
Last updated
Install
Sign in
invoice loginThis asks for a name for the device, opens your browser so you can approve it, and gives you a token to paste back. The token is saved in ~/.config/invoice/credentials on your machine; the server keeps only a hash of it. invoice whoami shows the saved setup and invoice logout removes it.
Draft an invoice
From inside the repo you worked in, give the client, hours, rate and dates:
invoice outfitters 12 95 11/01/26-11/08/26The same thing with named flags, in any order:
invoice --client outfitters --hours 12 --rate 95 --range 11/01/26-11/08/26It reads the commits in that range from your local history, drafts the invoice and opens it in your browser to review. Add --send to email it straight away.
From anywhere else, name the repo and it reads the commits from GitHub using the access you set up under GitHub access:
invoice outfitters 12 95 11/01/26-11/08/26 --repo example-outfitters/storefrontRecord a paid invoice
For work that was paid on the spot, skip the draft and record it in one line:
invoice outfitters 1 150 --paid 11/08/26 --note "Phone consultation"Send reminders
invoice remindEmails a payment reminder for every invoice that is due or overdue.
Keep a repo in sync
The Slack bot can only draft from history it can reach. Syncing a repo uploads its commit history so the bot can use it, including for repos that are not on GitHub.
invoice sync # this repo, since the last sync
invoice sync --since 2026-01-01 # go further back
invoice sync --install-hook # sync automatically after every commitFor each commit, sync sends the hash, date, author, message, and the paths of up to 20 files it touched. It never sends file contents.
All flags
| Flag | What it does |
|---|---|
--client NAME | Which client to bill. A partial name is enough if it matches one client. |
--hours N | Total hours to bill. The draft divides these across the work. |
--rate N | Hourly rate. Left out, your default rate from Settings is used. |
--range START-END | The dates to bill, as MM/DD/YY-MM/DD/YY or YYYY-MM-DD-YYYY-MM-DD. |
--repo OWNER/NAME | Read commits from GitHub instead of the folder you are in. |
--style by_date|by_theme | One line per day, or one line per theme of work. |
--send | Email the invoice to the client as soon as it is drafted. |
--draft-only | Save it as a draft and send nothing. |
--note "..." | A note for yourself. With --paid, it becomes the line’s description. |
--paid MM/DD/YY | Record an invoice that is already paid, as one line, with no AI draft. |
--no-open | Don’t open the result in the browser. |