Hey Indie Hackers,
A few weeks ago, I needed to send a quick, one-off billing receipt to a client over WhatsApp.
I tested half a dozen "free" online invoice tools, and every single one hit me with the exact same friction:
Mandatory email signup just to download a file.
Giant, obnoxious watermarks unless I upgraded to a $12/month plan.
Bloated SaaS dashboards requiring 10 steps to configure a simple line item.
Saving sensitive client billing numbers and bank details on external servers I don’t control.
An invoice is fundamentally just structured text, basic arithmetic, and a styled document layout. Why does it need a complex backend, a Postgres database, or monthly server overhead?
The Build: Zero Servers, Zero Databases
I decided to build Invoice Canvas with a strict architecture rule: 100% client-side execution.
Document Rendering & Export: Uses HTML Canvas and jsPDF directly inside the browser. Users can export high-DPI PNGs (perfect for instant sharing via WhatsApp/Slack) or standard multi-page A4 PDFs for email.
Privacy by Default: Because all calculations and document compiling happen locally in the browser, no client names, invoice totals, or bank coordinates ever touch an external database.
Local Persistence: Instead of building authentication and database tables, draft invoices and auto-incrementing invoice numbers are managed through browser localStorage. You can save, duplicate, and modify drafts with zero latency.
Hosting Cost: $0. Hosted on a lean static architecture that scales effortlessly without server maintenance.
What Worked & What I Learned
Utility beats feature bloat: Freelancers and micro-agencies don't want a full accounting suite when they just need to bill an hourly task. Making the tool accessible immediately—no login screen, no paywall—reduces bounce rates significantly.
Image invoices are underrated: Most tools focus purely on PDFs. Adding crisp PNG export turned out to be the most practical feature for mobile-first communication channels.
Keep the math bulletproof: Handling floating-point arithmetic for percentage discounts, multi-currency formatting, and deposits locally requires careful edge-case validation to prevent rounding discrepancies.
Looking for Feedback
I'm currently looking at expanding the template engine and adding more industry-specific presets (development, creative media, consulting retainers).
If you frequently bill direct clients, I’d love to hear:
What specific invoice formats or payment fields are non-negotiable for your workflow?
How do you feel about zero-backend, client-side web apps vs. traditional accounts?
Check it out here: Invoice Canvas
Would love your thoughts and constructive feedback!