For developers
Turn your commits into an invoice your client can read.
Pick the client’s repo and the dates, then enter your hours and your rate. It reads the commit history, writes up each piece of work in plain language, and emails your client a PDF with your payment links on it.
Free plan: 3 drafted invoices a month. No card.
$git logexample-outfitters/storefront
- a41f9c2Nov 02fix: cart total wrong w/ coupon + free shipping
Nov 2Fixed cart totals when a coupon and free shipping are combined2.5 h$237.50- 7be03d1Nov 02wip checkout
- c9d2e7fNov 04checkout: move to payment element, drop legacy form
Nov 2–4Rebuilt checkout on the new payment form and retired the old one5 h$475.00- 18aa6b0Nov 05add address autocomplete (places api)
Nov 5Added address autocomplete at checkout2 h$190.00- e03b5aaNov 07perf: lazy-load product gallery, cut LCP
Nov 7Sped up product pages by loading the image gallery on demand2 h$190.00- 5f7c1d9Nov 08chore: bump deps, fix lint
Nov 8Dependency updates and code maintenance0.5 h$47.50
You enter
12 h × $95.00$1,140.00
What you give it
Commit history, by whichever route suits the client’s repo. It only sees the dates you’re billing.
Then you enter the client, the dates, your total hours and your rate. The hours are yours to decide. Nothing is sent until you’ve read the draft.
How a draft is made- GitHub
- Connect with one click, or with a read-only token limited to the repos you choose.
- A pasted git log
- Run one command in the repo and paste what it prints. Works with GitLab, Bitbucket or a repo that exists only on your laptop.
- The command line
- Draft and send from inside the repo with one command. It is in private testing and not yet published.
- Notes or a time export
- For the work that never reached git: calls, reviews, planning. Paste notes or upload your time tracker’s CSV export.
What your client receives
Hours, fixed fees and costs on one invoice
- Hours. Each piece of work on a dated line at your rate, written the way you’d explain it to the client, not the way you wrote the commit.
- Flat fee. A fixed-price audit or a monthly maintenance fee. You add these by hand; the draft writes the hours.
- Expense. A domain renewal, a plugin license or a month of hosting, on its own line at the amount you enter.
It arrives as a PDF attached to an email in your business’s name. Your client pays you directly, by PayPal, Venmo, Zelle, Apple Pay or your own Stripe link, and never needs an account.
To try the layout without an account, open the web development invoice template.
Security
It reads your commit history. It never reads your code.
Client code is usually under an NDA, so this is the part to be exact about. Drafting needs to know what you worked on and when. It does not need the work itself.
One caveat: GitHub's one-click connection grants broader access than this uses. A read-only token limited to the repos you bill from works just as well, and so does pasting a log.
Read the full security page- Read
- Commit hash, date and author
- Commit message
- Names of the files a commit touched
- Never read
- File contents
- Diffs
- Sent to the AI model
- The commit details above
- The repo name and the dates
- Your hours and your rate
From any git host, or from the terminal
If the repo isn't on GitHub, the app prints a command for your dates. Run it in the repo and paste what comes out.
TerminalThere is a command-line tool that drafts and sends from inside a repo: invoice outfitters 12 95 11/02/26-11/08/26. It is in private testing and not yet published. Command-line docs
SlackOn Pro, a Slack bot takes the same request as a message: “Invoice Example Outfitters for 12 hours, Nov 2 to 8”. Pro is not on sale yet. Slack bot docs
GitHubThree ways to connect, what each can see, and how to revoke it. GitHub access docs
$ git log --since="2026-11-02 00:00" \
--until="2026-11-08 23:59" --no-merges \
--pretty=format:"%H%x09%cI%x09%an%x09%s"Does it read my source code?
No. It reads commit history: each commit’s hash, date, author and message, and at most the names of the files it touched. File contents and diffs are not read, stored or sent to the AI model.
Do I need GitHub?
No. You can paste the output of git log into the app, which works with GitLab, Bitbucket or a repository that exists only on your laptop. Connecting GitHub only saves the pasting.
Does it work out my hours from commit timestamps?
No. You enter the total hours and your rate. The draft divides your total across the work it finds in the date range, and you can change the hours on any line before you send.
What about work that isn’t in a commit?
Add it. Paste notes for the calls, reviews and planning, or add lines by hand: more hours, a flat fee, or an expense passed on at cost.
Which AI model writes the draft?
Anthropic’s Claude, through Anthropic’s API. A draft request sends the commit details, the repository name, the date range, and your hours and rate. Sandglass does not use your data to train a model.
It’s the wrong tool if
- You need sales tax or VAT on the invoice, or a currency other than US dollars. Neither is supported yet.
- You need measured time. It never tracks time; you tell it the hours.
Write this week’s invoice from this week’s work.
The Free plan covers 3 drafted invoices a month, which is one client billed every two weeks.
Also forDesignersWritersConsultants
Free plan: 3 drafted invoices a month. No card.
Just need one invoice? Use the free generator