Create invoices, send them by email, track payment status, generate PDF receipts. The freelancer's FreshBooks without the $15/mo subscription.
Every operation in Billfold is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/invoices — list all invoices with optional search and filter query parametersPOST /api/invoices — create a new invoice recordGET /api/invoices/{id} — retrieve a single invoice by IDPUT /api/invoices/{id} — update an existing invoiceDELETE /api/invoices/{id} — remove a invoiceGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringA non-profit with no DevOps budget downloads the Billfold binary, sets two environment variables, and runs it on the same Linux box that handles their email. It has been running for three months without intervention. When they need to update, they download the new binary and restart the process.
Every invoice your team creates contains context that matters — name, amount, due date, status, line items. When that data lives in a third-party service, you are one acquisition or policy change away from losing access. Billfold keeps it local.
GET /api/invoices — List all invoices. Supports ?q=keyword for search and ?status=value for filteringPOST /api/invoices — Create a new invoice. Send JSON with at least nameGET /api/invoices/{id} — Fetch one invoice by IDPUT /api/invoices/{id} — Update fields on an existing invoiceDELETE /api/invoices/{id} — Remove a invoiceGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringThe dashboard opens at /ui and gives you a search bar, status filters, and a create form. Double-click any invoice to edit it inline. Behind the dashboard, every operation maps to a REST endpoint under /api/invoices. Responses are JSON. Authentication is handled at the network level — put Billfold behind your VPN or reverse proxy, and it serves requests to whoever can reach it.
Self-hosted invoice generator. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool billfold
PORT=9070 ./billfold
http://localhost:9070
Single binary. Embedded SQLite. No Docker. No database. No dependencies.
Your license key arrives by email within 5 minutes of checkout. Set it as an environment variable and restart the binary.
export BILLFOLD_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./billfold
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.