Back to home

Case study

reels-downloader × PayCraft

A real-world adoption — Android · iOS · Web · Desktop — in production since April 2026.

First production tx
2026-04-26
Platforms shipping
4
Real-card E2E latency
≤ 5s
Infra cost / month
$0

Why PayCraft

reels-downloader needed multi-platform subscription billing without writing 4 platform-specific paywalls (Play Billing, App Store StoreKit, Stripe Web, custom Desktop) and 2 webhook routers (Stripe + Razorpay). PayCraft delivers a single KMP BillingManager.isPremium(uid) contract that wires the same gating decision into every target.

Integration in 5 commits

  1. Sign up at paycraft.mobilebytesensei.com, pick slug reels-downloader
  2. One-click Stripe Connect OAuth — keys never typed in chat
  3. Create monthly + annual products on the dashboard
  4. Wire cmp-paycraft in commonMain + call PayCraft.initialize() in app start
  5. Gate features with BillingManager.isPremium(uid)

The SDK is cache-first (weekly default, hourly during trial) — zero network on the happy path.

End-to-end proof points

  • Tenant signup creates a row in `tenants`
  • Stripe Connect OAuth completes without secrets typed in chat
  • Webhook signature verification (edge function logs)
  • subscriptions lifecycle (created → active → canceled)
  • isPremium returns true within 5s of invoice.payment_succeeded
  • Trial-sticky-fields survive renewal
  • RLS prevents tenant A reading tenant B's subscriptions
  • Webhook idempotency (Stripe retry → same DB state)
  • Refund flow (charge.refunded) downgrades subscriptions.status

Cost the day they shipped

Supabase Free500 MB DB · 2 GB egress · 50K MAU$0
Vercel Hobby100 GB bandwidth$0
Stripe2.9% + $0.30 per success (pass-through)$0 fixed
Resend Free100 emails/day · 3K/month$0
Cloudflare R2 Free10 GB storage · 10M reads/mo$0

Full case study

The full step-by-step integration walkthrough — including DB schema snippets, webhook event payloads, anti-patterns we hit, and the monthly drill log — lives in the PayCraft repo:

docs/REELS_DOWNLOADER_INTEGRATION.md