Minvoice
Invoicing for one business: PDF invoices by email, Stripe or PayPal pay links and overdue reminders
Minvoice invoice list with status tabs, client filter, due dates, totals and Draft, Sent, Overdue and Paid labels
Minvoice runs in your own Cloudflare account and keeps the books in a D1 database. Clients see invoices, emails, the pay page and PDFs in English, Spanish, German or French. The admin sits behind a password or Cloudflare Access.
Invoices take multiple line items, per-client payment terms and default rates, and custom or automatic numbering with optional date-based prefixes. A print view stamps them PAID or VOID, and invoice emails carry a generated PDF. Each invoice keeps a timeline of edits, sends, payments and pay-link views, and you can undo a recorded payment. Clients pay from a link carrying a 100-bit token, by card through Stripe Checkout or through PayPal. You record checks and bank transfers by hand. Stripe and PayPal webhooks are the source of truth: the Worker deduplicates them and commits each payment, status change and queued receipt email in one transaction. Opt-in reminders email overdue clients on an editable schedule, by default 1, 7 and 14 days after the due date. Monthly reports can be filtered by client, and invoices and payments export to CSV. The Worker is built on Hono with server-rendered JSX and uses D1, static assets for self-hosted fonts and styles, and a Cron Trigger that sends reminders at 15:00 UTC. Email goes out through Resend or a Cloudflare send_email binding. The admin accepts the ADMIN_PASSWORD secret until you configure Cloudflare Access; from then on the Worker verifies Access JWTs and fails closed. The Worker envelope-encrypts API keys you enter in the app with AES-256-GCM before storing them in D1. The Deploy to Cloudflare button clones the repository to your GitHub account, provisions and migrates D1, and asks only for ADMIN_PASSWORD. A setup wizard runs on your first visit to /admin. Stripe, PayPal and Resend keys can be entered in Settings or set as Wrangler secrets, which take precedence. For a CLI setup, npm create minvoice scaffolds a fresh copy and prints the same steps.
Built for: Freelancers, consultants and single-business owners who want self-hosted invoicing without a monthly subscription
What you can use it for
- Send invoices to clients with the PDF attached
- Collect card and PayPal payments through a pay link
- Remind clients automatically when an invoice is overdue
- Check monthly totals and export payments to CSV for bookkeeping
Deploy
One-click · main path
Branch main
CLI
Branch main
Paste the database_id that d1 create prints into wrangler.jsonc before running the remaining commands.
npm install npx wrangler d1 create minvoice npx wrangler types npm run db:migrate:remote npx wrangler secret put ADMIN_PASSWORD npm run deploy
Payments and email are optional and can be added after the button deploy. Stripe and PayPal each need their keys and a webhook registered in their own dashboard, and email needs a provider and a From address in Settings.
What it needs to run
- D1 databasesminvoice
- Email sendingEMAIL
Good to know
Putting the admin behind Cloudflare Access needs a custom domain. Invoice PDFs do not support right-to-left or Indic scripts, and CJK text needs your own font files in a fork. The admin UI is English only. The project started in July 2026 and has one maintainer. There are no tagged releases.
Cost on Cloudflare
Likely fits the free plan
Per the README, Workers Free is enough when email goes through Resend, whose free tier covers 3,000 emails a month. D1 on Free includes 5 GB and 5 million rows read per day. Cloudflare Email Sending to clients needs Workers Paid. So do PDFs with extended Latin, Greek or Cyrillic text, which embed Noto fonts and take about 130 ms of CPU, beyond the 10 ms Workers Free allows.
The estimate is based on Cloudflare’s documented limits and the app’s configuration. What you pay depends on your usage and plan.
Where this comes from
- Repositoryhttps://github.com/ddyy/minvoice
- App websitehttps://minvoice.dev
An alternative to FreshBooks, Invoice Simple, PayPal Invoicing, Stripe Invoicing, Wave, Zoho Invoice.
Listing history
- Oct 2, 2026 · Minvoice listed
Similar apps
All Commerce apps
Small server-rendered store with an admin, Stripe and Lightning checkout, and APIs that let AI agents shop
- Deploy
- One-click
- License
- MIT
- GitHub stars
- 164 stars
- Last commit