Kairo Invoice — Next.js 16 Invoicing App with Stripe Payment Links
Create, send and get paid. Kairo Invoice is a complete invoicing application built with Next.js 16, React 19, Tailwind CSS 4 and shadcn/ui. Not a UI kit: authentication, database, Stripe payments, PDF generation, emails and a scheduled job are wired together and tested.
LIVE DEMO: https://kairo-invoice-demo.vercel.app — create an account and click “Load sample data”.
What it does
- Invoices with line items from a price catalog, discounts, tax, notes and payment details
- Statuses draft → sent → viewed → paid, overdue and void, with the right guards (paid invoices can't be edited or deleted)
- PDF rendered on the server, identical in the download and in the email attachment
- Pay-by-link: every invoice has a secure page where the client downloads the PDF and pays by card through Stripe Checkout; a signed, idempotent webhook records the payment and emails a receipt
- Send and resend invoices with a personal message; see when the client opened it
- Recurring invoices (weekly, monthly, quarterly, yearly) with optional auto-send and “run now”
- Automatic weekly reminders for overdue invoices from the daily job
- Clients with billing details, items catalog, expenses with billable flag
- Dashboard: cash received, outstanding, overdue, profit, six-month cash flow, invoices that need attention
- Reports by period: revenue, expenses, profit margin, tax collected, top clients, expenses by category
- Business settings: 10 currencies (zero-decimal aware), tax label and rate, invoice numbering, payment terms, bank details
Tech stack
Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4, shadcn/ui, Better Auth (email + password, Google, GitHub), Drizzle ORM with SQLite locally and Turso in production, Stripe Checkout + webhooks, @react-pdf/renderer, React Email + Resend, Vercel Cron.
Developer experience
- Demo mode: runs right after npm install with no API keys. Payments are simulated and emails are printed to the console
- Sample data loader fills a new workspace with clients, invoices in every status, a schedule and expenses
- One function computes every total (form, server, PDF, email); amounts stored as integers
- 100% TypeScript, zero lint errors, detailed README (setup, Stripe, cron, deployment, customization)
- Standard shadcn/ui setup: add any component with npx shadcn add
What you get
Full source code (.zip), README, LICENSE.md, CHANGELOG.md. Free updates: re-download the latest version from your Payhip library.
License
Personal: one end product (personal or commercial). Commercial: unlimited end products. You can't resell or redistribute the template itself.
Support
Questions or a bug? Reply to your purchase email with your order number.