SaaS & FinTechSaaSProduct engineeringBillingDesign

Building a SaaS Invoicing Platform from Scratch

Client Anonymous fintech startupTimeline 12 weeksTeam 3 devs + 1 designer

  • 40% MRR growth in first 90 days

  • 300ms average API response time

  • Launched on schedule, on budget

  • 5-star client review

The challenge

Our client, an early-stage fintech team, was stuck between spreadsheets, legacy PDFs, and a patchwork of tools. Finance leads needed a single product that could issue invoices, track payments, and support multi-tenant B2B plans—without a six-month detour on infrastructure.

Time-to-market was the constraint: they had investor milestones and a narrow window to prove retention. They needed a partner who could own product, API design, and a polished UI—not just a short sprint of features.

VyrroTech was brought in to design and ship the full product: from tenant model and permissions to usage-based billing, PDF generation, and an admin that finance teams would actually use every day.

Our approach

Step-by-step how we scoped, built, and shipped the work—together with the client team.

01

Discovery and tenant model

We mapped org structures, seat vs. usage limits, and approval flows. The data model (organizations, members, plans, entitlements) was defined before a single screen was high-fidelity.

// Tenant-scoped request context
type Ctx = { orgId: string; role: Role };

async function forOrg(ctx: Ctx) {
  return db.invoices.where({ orgId: ctx.orgId });
}
02

Billing engine with Stripe

We aligned product catalog, metered add-ons, and dunning in Stripe, with webhooks for idempotent reconciliation. Every invoice and payment is traceable in-app for support teams.

03

API-first, performance budget

We set a 300ms p95 target on core reads and used caching and query shaping on hot paths. Public API docs and versioning shipped alongside the app so partners could integrate early.

// Example: paged, indexed listing
const rows = await db.invoice
  .where({ orgId, status })
  .orderBy("issuedAt", "desc")
  .limit(50);
04

UI and design system

A compact design system in React kept flows consistent: invoice builder, remittance, and org settings. Accessibility and dense tables were first-class, not a polish pass at the end.

Tech stack

React
Node.js
PostgreSQL
Stripe
AWS
TypeScript

Key features built

Multi-tenant orgs & roles

Granular roles for owner, finance, and read-only stakeholders with org-scoped data.

Invoices & line items

Editable templates, tax lines, and PDF export with consistent numbering and audit fields.

Usage-based plans

Metering hooks for add-ons, with overage and upgrade prompts before limits bite.

Reconciliation & exports

CSV/ledger-friendly exports and filters that match how finance teams close the month.

Webhook + API

Versioned API and signed webhooks for HR and accounting integrations.

Admin & support views

Internal tooling for support to trace payments and resend documents safely.

Timeline

Milestones from kickoff to launch and handover.

  1. Week 1–2

    Discovery

    Model, flows, and billing map locked.

  2. Week 3–8

    Core build

    Auth, orgs, invoices, Stripe, PDFs, API v1.

  3. Week 9–10

    Beta

    Pilot customers, hardening, perf and alerts.

  4. Week 12

    Launch

    GA, monitoring, and handover runbooks.

The results

Revenue and retention

MRR growth of 40% in the first 90 days was driven by upgraded plans and a clearer upgrade path, validated against cohorts from the prior spreadsheet-led workflow.

Performance

Core list and detail views held under 300ms p95 in production, with room for growth as data volume increased.

Delivery

The release landed on the agreed 12-week window with a fixed scope, documented trade-offs, and a roadmap for the next two quarters co-owned with the client team.

VyrroTech treated this like a product, not a ticket queue. The clarity on the tenant and billing model saved us from expensive rework, and the team was relentless on launch quality.

Head of Product, Product lead, Anonymous fintech startup

Next steps

After launch, we helped onboard two integration partners and expanded the public API for payroll sync. A dedicated reliability week tightened alerts and SLOs as traffic grew.

The product roadmap now focuses on international tax profiles and a mobile-friendly approval flow for finance approvers in the field.

Ready to achieve similar results?

Share your product goals and timeline—we can map a plan that fits your team and delivery window.