CrankWheel uses Maxio (née Chargify) for subscription management. It’s OK but I’ve never been super duper happy with it (mostly because I chose it for its flat fee structure, then later they switch to charging a flat fee plus percentage… and the switching costs are high). Today, I present another small gripe with it: The filename of invoices sent by Chargify looks something like _541780067.pdf, and this can’t be configured.

As a founder, one of the things I still deal with is storing invoices for the services we use, categorizing them, and getting them to our accountants. That default filename Chargify uses is completely useless for knowing what the invoice document is, or when it was charged, without opening it. Both of those things are useful to know when categorizing things and batching them up to send over to accounting. I end up renaming every invoice to something like [name of service]-YYYY-MM-DD.pdf or sometimes (when we have multiple accounts, e.g. for different products, with a service) I’ll use [name of service]-[short name of account]-YYYY-MM-DD.pdf.

Looking at the couple of dozen or so subscriptions and regular charges that CrankWheel receives, I find that almost all SaaS companies are doing this wrong (like us!), with names that best case have the name of the service followed by some opaque identifier, but much more often are something like INV14078409_6937098_06012024.pdf (SendGrid) or Receipt-2062-6924.pdf (MissingLettr) or invoice_23268.pdf (CodeKeeper) or EUINIS24-11866.pdf (AWS).

Cloudflare is almost perfect: cloudflare-invoice-2024-06-06.pdf

GitHub and Sentry stand at the pinnacle of perfection, with the service name and the account name followed by the date in a sensible format: github-CrankWheel-receipt-2024-05-27.pdf and sentry-crankwheel-2024-03-12

Little details like this matter, so I tip my hat to those fine teams.