HomePlatformProductsLabsBuildCompanyContactStart a Project →
Build/Cases/FreeBill
SaaS ProductLIVE2022

FreeBill was built to solve a specific problem: Indian GST invoicing for freelancers and small businesses who don't need a full accounting suite like QuickBooks. It launched in 2022 and currently processes invoices for over 200 active businesses.

200+
Businesses actively billing
0
Support tickets about invoice flow
4hrs
Resolution time for the only bug
Launched 2022 · Operating continuously

The Context

Most invoicing tools are built for accountants — not for the freelancer or independent business owner who needs to send three invoices a week without reading a help article first. QuickBooks is overkill. Generic invoice generators have no business logic. The gap was a tool that understood Indian GST structure, generated professional PDFs, tracked payment status, and required zero training to use on day one.

The Approach

Built the entire UX around a single insight: the user should never have to think about where to click next. One action per screen. The invoice creation flow is four steps — client, items, GST, send. The PDF generation runs server-side with Puppeteer to ensure pixel-perfect output regardless of the user's device or browser. Payment tracking integrates with Razorpay webhooks for automatic status updates — no manual 'mark as paid' required.

CRITICAL ENGINEERING CHALLENGE

Correct GST calculation without rounding errors.

GST calculation across different slab rates (0%, 5%, 12%, 18%, 28%) with inter-state vs intra-state IGST/CGST/SGST split — implemented correctly in the invoice total and the PDF without any rounding errors. Took three days of edge case testing with real invoices.

THE OUTCOME

200+ active businesses using FreeBill within the first six months of launch. Zero support tickets about the invoice flow. One support ticket ever — a PDF rendering issue on a specific Chrome version, fixed in 4 hours.

Engagement Meta

ClientInternal Product
Year2022
CategorySaaS Product
Status● LIVE

Technology Context

Next.js 15Node.jsPostgreSQLRazorpayPuppeteerNodemailerCloudflarePM2

Quick Navigation

FREEBILL ARCHITECTURE
01

FRONTEND

Next.js 15Frontend + API layer
02

API LAYER

Node.jsServer runtime
03

SERVICES

RazorpayPayment + webhook integration
PuppeteerPDF generation server-side
NodemailerTransactional email
04

DATABASE

PostgreSQLDatabase + relations
05

INFRA

CloudflareCDN + DNS
PM2Cluster + process management

Architectural Decisions

Why this specific stack was chosen over standard defaults for this build.

IF YOU NEED A BILLING TOOL

Don't build before validating the GST logic.

Indian GST across slabs and inter/intra-state is the hardest part of any billing tool — not the UI. Get that right before writing a single invoice component.

ON PDF GENERATION

Server-side PDF is not optional at this standard.

Client-side PDF libraries produce inconsistent output across browsers and OS configurations. If the invoice is a legal document, the PDF must be identical every time — Puppeteer server-side is the only reliable path.

ON PAYMENT INTEGRATION

Webhook-first payment status is non-negotiable.

Relying on redirect success pages for payment confirmation misses failures, timeouts, and network drops. Razorpay webhooks as the source of truth means zero missed payments.

MEASURABLE OUTCOMES
200+
Businesses actively billing
Six months post-launch
0
Support tickets about invoice flow
In the first operational year
4hrs
Resolution time for the only bug
A PDF rendering edge case on Chrome

The Final Result

200+ active businesses using FreeBill within the first six months of launch. Zero support tickets about the invoice flow. One support ticket ever — a PDF rendering issue on a specific Chrome version, fixed in 4 hours.

WHAT THIS MEANS FOR YOU
IF YOU NEED A BILLING TOOL

Don't build before validating the GST logic.

Indian GST across slabs and inter/intra-state is the hardest part of any billing tool — not the UI. Get that right before writing a single invoice component.

ON PDF GENERATION

Server-side PDF is not optional at this standard.

Client-side PDF libraries produce inconsistent output across browsers and OS configurations. If the invoice is a legal document, the PDF must be identical every time — Puppeteer server-side is the only reliable path.

ON PAYMENT INTEGRATION

Webhook-first payment status is non-negotiable.

Relying on redirect success pages for payment confirmation misses failures, timeouts, and network drops. Razorpay webhooks as the source of truth means zero missed payments.