All work
Case №02Fintech SaaS2026Fullstack Architect

Invoila.

Multi-tenant invoice & payment SaaS.

Visit live siteinvoila.thewebstory.id
invoila.thewebstory.id
Invoila screenshot
BriefIn one paragraph

A multi-tenant billing platform for Indonesian SMEs. Each merchant connects their own Midtrans account, sends invoices, and gets paid — with payment status driven by signature-verified webhooks and a clean ledger behind it.

Challenge

Indonesian SME owners juggle manual invoicing in spreadsheets and chase payments over WhatsApp. The gap between "sent" and "paid" is opaque — no reliable status, no automated reminders, no clean reconciliation when settlement timing drifts. And a multi-tenant billing tool can't keep every merchant's payment credentials sitting in plaintext.

Solution

Built a NestJS + Prisma backend where each merchant connects their own Midtrans account, with server keys encrypted at rest using AES-256-GCM. Payment webhooks are verified against the owning merchant's key and processed idempotently, so duplicate notifications never double-settle. Recurring/installment billing schedules and Resend-based transactional email round out the flow.

What I builtSelected highlights
  1. 01Multi-tenant — each merchant connects their own Midtrans account
  2. 02Per-merchant server keys encrypted at rest with AES-256-GCM
  3. 03Signature-verified, idempotent payment webhooks
  4. 04Recurring / installment / deposit-balance billing schedules
  5. 05Transactional email via Resend with delivery, open & click tracking
StackBuilt with
  • Next.js
  • NestJS
  • Prisma
  • PostgreSQL
  • Supabase
  • Midtrans
  • TypeScript
ResultsWhat changed
  1. Multi-tenantPer-merchant Midtrans credentials
  2. AES-256-GCMServer keys encrypted at rest
  3. IdempotentSignature-verified payment webhooks