Skip to content

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

    • a41f9c2fix: cart total wrong w/ coupon + free shipping
    Fixed cart totals when a coupon and free shipping are combined$237.50
    • 7be03d1wip checkout
    • c9d2e7fcheckout: move to payment element, drop legacy form
    Rebuilt checkout on the new payment form and retired the old one$475.00
    • 18aa6b0add address autocomplete (places api)
    Added address autocomplete at checkout$190.00
    • e03b5aaperf: lazy-load product gallery, cut LCP
    Sped up product pages by loading the image gallery on demand$190.00
    • 5f7c1d9chore: bump deps, fix lint
    Dependency updates and code maintenance$47.50

You enter

12 h × $95.00$1,140.00

Fig. 01 · A sample week: six commits in, five invoice lines outChange the hours or the rate

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.

Fig. 02 · The sample week on the app’s 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
Fig. 03 · What leaves your repository, and what doesn't

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"
Fig. 04 · The command to paste from, for a repo that isn't on GitHub

Questions developers ask

More on the home page and in the docs.

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

Start free

Free plan: 3 drafted invoices a month. No card.

Just need one invoice? Use the free generator