ZniForm
Forms that get paid. Build and publish a form, launch secure PayPal checkout from the same link, and let reconciliation, receipts, and notifications run automatically. Built and operated solo, end to end.

Overview
ZniForm, formerly Lyra, is a self-owned SaaS for creating forms that can collect information and launch secure PayPal checkout from the same public link. PayPal confirmation drives payment status, while the product handles reconciliation, receipts, notifications, and the creator balance. I designed, built, deployed, and operate the product and its Cloudflare-native stack myself.
Problem
Creators and small organizations often stitch together a form tool, a separate payment link, and a spreadsheet. That fragments the respondent journey and leaves the creator manually matching submissions to payments, producing receipts, and following up on status changes.
Solution
One product owns the workflow from form creation to settlement: publish a form or commerce flow, accept payment through PayPal, confirm the authoritative capture, update the submission automatically, generate a receipt, notify the right people, and record the creator's balance. The same platform also supports event tickets and check-in, workspaces, analytics, and integrations.
Architecture
A Next.js frontend runs on Cloudflare through OpenNext, backed by a Hono API on Cloudflare Workers. D1 and Drizzle store product and ledger data; KV provides caching, locks, and rate limits; R2 stores generated files; Queues and Cron handle asynchronous notifications and scheduled work. Better Auth provides authentication, while PayPal Orders v2 is the active gateway for payments and subscriptions.
Lessons learned
Financial products are mostly boundary work: provider currency rules, authoritative capture data, idempotency, fee transparency, and recovery after partial failure. ZniForm reinforced that every money movement needs one source of truth, a durable retry strategy, and copy that says exactly what the active provider can do.
Challenges
- Keep PayPal's USD charge authoritative while presenting a useful IDR estimate and preserving the exchange-rate snapshot used for each transaction
- Reconcile captures, provider fees, platform fees, creator balances, and payouts without double-crediting or double-paying when retries occur
- Keep payment credentials inside PayPal-hosted surfaces while maintaining a cohesive checkout experience from the public form
- Enforce workspace roles and plan entitlements across forms, money, team operations, and connected surfaces without deleting data on downgrade
Results
Live at zniform.com with English and Indonesian product surfaces
Form, payment-link, event-ticket, catalog, booking, and digital-product flows share one submission and payment foundation
PayPal-confirmed status updates feed automatic reconciliation, server-generated PDF receipts, and email or WhatsApp notifications
Runs on Cloudflare Workers, D1, KV, R2, Queues, and Cron as a product I operate end to end


