Invoices that go out. Money that comes back.
A self-contained invoicing and expense management micro-system — PDF generation, payment tracking, and automated reminders without the recurring SaaS bill.
Core stack
Node.jsExpressPostgreSQLPuppeteerWhat's included
FreshBooks, QuickBooks, Zoho Invoice. They all do the job. They all work. And they all charge you forever, take a percentage of your transaction volume, and don't let you touch the underlying logic when your client asks for something slightly non-standard.
The moment you're building software for a vertical with specific invoicing requirements — construction project billing, freelance contracts with milestone payments, agency retainers, B2B recurring services — off-the-shelf invoicing software starts to fight you instead of helping you.
The Automated Invoicing & Expense Engine is the financial billing module you embed in your own product or deploy as a standalone micro-SaaS. You pay once, you own it, and you modify it however you need.
Generating PDFs in Node.js has a reputation for producing documents that look like they were formatted by someone who's never seen an actual invoice. jsPDF outputs misaligned text. PDFKit requires you to specify every coordinate by hand.
We use Puppeteer (headless Chrome) to render PDFs from HTML/CSS templates. This means:
Generation time for a typical invoice (single page, line items, company branding) is under 200ms. For batch exports of 50+ invoices, the system queues generation jobs and streams completed PDFs to a zip archive.
Currency arithmetic is deceptively dangerous. Add up a hundred line items in floating-point and the total is off by a penny. Multiply by an exchange rate and the error compounds. Apply a tax rate and round incorrectly, and you've got legal exposure in jurisdictions with strict invoice accuracy requirements.
Every monetary calculation in this engine uses integer arithmetic internally (amounts stored in the smallest currency unit — cents, pence, etc.) and converts to display format only at render time. Tax rates, discounts, and exchange rates are applied using precise decimal arithmetic with explicit rounding rules that you can configure per region.
Supported out of the box:
The average freelancer loses 2–3 hours per week chasing unpaid invoices. The average agency has 15% of their receivables sitting past-due at any given time. Late payments are a cash flow problem, and cash flow problems kill businesses that are otherwise profitable.
The engine includes a configurable reminder schedule that runs automatically after an invoice is issued. The defaults are designed around what actually gets invoices paid:
Every email is templated in React Email, which means you can edit the content in JSX and preview it in a browser. The reminder schedule is stored in the database and can be customized per client — some clients get a more aggressive follow-up cadence, others get more lenient terms.
Payment status updates from Stripe webhooks automatically halt the reminder schedule when an invoice is paid.
On the expense side, the engine provides a structured import and categorization system for tracking business expenses against projects or clients. Expense records link to invoices, giving you a real-time profitability view per project — revenue logged, costs recorded, margin calculated.
The export formats include CSV for accounting software, and the schema is designed to be compatible with standard bookkeeping patterns so data can be handed directly to an accountant without manual reformatting.
Lifetime access · Full source code
Secure checkout via Stripe · No subscription
Questions before purchasing? Talk to us →
Get the complete, production-ready codebase today. One payment, lifetime access, instant download.