Skip to main content
Personal SaaS
DEVELOPMENT

Invozy

Invoice-to-cash for Indonesian agencies and professional services. Build an invoice with a live A4 preview, send it over email and WhatsApp in one click, and let Smart Collections chase payment automatically — turning a 45-day collection cycle into under 14.

Invozy

Overview

Invozy is a self-owned B2B SaaS that compresses the invoice-to-cash loop for Indonesian agencies, studios, and consultants. Owners build an invoice against a real-time A4 preview, dispatch it across email and WhatsApp, and the system runs scheduled reminders (D-3, D-1, D+1, D+7) until it's paid — with status tracking from Draft to Sent to Viewed to Paid.

Problem

Agencies and professional services in Indonesia average ~45 days to collect (DSO). The workflow is manual end to end: invoice in Word/Excel, email it one by one, chase over WhatsApp, check bank mutations daily, confirm by hand. Nobody even knows if an invoice was opened.

Solution

One product that owns invoicing, multi-channel delivery, and automated collection. Point-in-time issuer/customer snapshots keep historical invoices immutable; idempotent financial writes and an append-only audit log keep the money trail trustworthy. Planned Phase 2 adds DOKU pay-in links, an active balance, and bank payout — mirroring the architecture proven in Lyra.

Architecture

Next.js frontend; Hono API on Cloudflare Workers with D1 (SQLite) + Drizzle, KV sessions, R2 for PDFs and brand assets, and Queues for delivery + reminder fan-out. Email + password auth with email verification, per-tenant isolation at the app layer, AES-256-GCM encryption for PII (phone, NPWP, bank details), and client-supplied idempotency keys on every financial write.

Lessons learned

Reusing Lyra's payment architecture means inheriting its hard-won lessons up front — DGPC virtual accounts, QRIS mall IDs, account-inquiry-before-payout, and business-responseCode error classification — so Invozy's money layer starts where Lyra's ended rather than repeating the same integration debugging.

Challenges

  • Immutable invoice snapshots so editing a contact or company profile never rewrites history
  • Smart Collections as cancellable, idempotent delayed jobs that stop the instant an invoice is marked paid
  • Atomic invoice numbering (INV-YYYYMM-NNNN) via a D1 counter under concurrency
  • Company-scoped subscriptions and a referral program adapted from Lyra, with DOKU pay-in/payout planned

Results

Target: cut DSO from ~45 days to under 14

Multi-channel delivery (email + WhatsApp) with Draft → Sent → Viewed → Paid tracking

Automated D-3/D-1/D+1/D+7 reminders that self-cancel on payment

Freemium model (Free / Pro / Business) reusing Lyra's battle-tested DOKU + referral stack