An invoice manager using sqlite
change module path to sr.ht
e2f03403 — Karl Schultheisz 3 years ago
spunkier error messages
5fac32c4 — Karl Schultheisz 4 years ago
template.html: change terms


browse  log 



You can also use your local clone with git send-email.


Invoicer manages and generates invoices.

I intend it only for my own use, but if you share my preference for command-line tools, you might find it useful too.

I wrote invoicer to help me run my consulting business.


Invoicer keeps everything—including sellers, customers, and invoices—in a SQLite database. This eases filing taxes and planning for the future. It's a serious upgrade over a folder full of PDFs or spreadsheets.

Invoicer handles multiple customers (as you might expect) and also multiple sellers. This allows you to change your business details (which might happen as you grow) or track multiple businesses without getting confused.

#Hacker UI

Invoicer uses your shell and text editor as a user interface. When you want to create a new invoice or party, just run invoicer invoice or invoicer party. (But if you're holding an "invoicer party," whatever that is, count me out.) Invoicer will pipe a partially-completed form into your text editor for you to fill out. When you're done, write the form to standard out; Invoicer will add it to the database!

#Effective typography

Invoicer renders the most compelling invoice documents you've ever seen, thanks to me having read Practical Typography from cover to cover a few times. I can only hope, however, that your customers will pay upon sight.

To generate a document, you'll need the invoice's ID (which, for your convenience, invoicer invoice prints out after it succeeds). Then run invoicer report $ID. You can convert this to a PDF using tools like wkhtmltopdf or a web browser (Chromium works well). Just make sure to set the page margins to zero and disable fit-to-page automatic scaling.

#Missing features

  • Smooth UX. We're working on it.
  • Pagination. It works best with fewer than seven items per invoice.
  • Updating or removing entries in the database. You can use SQLite directly.
  • Rendering to pages of a size other than 8.5″ × 11″.