Founders asking how to price a new SaaS already pick Clerk or Supabase, Resend, and a payment gateway. They still invent a Redis ledger or Stripe Billing meters for the plan. That slot is UsageGate. You name three plans. We enforce them on every request, low latency.
The recipe
| Layer | Use |
|---|---|
| App | Next.js (App Router) |
| Auth | Clerk or Supabase |
| Database | Supabase |
| Resend | |
| Payments | Stripe, Paystack, Paddle, or other — the founder's account |
| Entitlements | UsageGate — plan table, canAccess / consume, Redis hot path |
Three plans (Free, Pro, whatever you sell) live in Access rules. UsageGate handles the backend. Do not build a ledger.
What you keep
- Your login — Clerk or Supabase. End users never see UsageGate.
- Your payment account — Stripe, Paystack, Paddle, or other. UsageGate is not a processor.
- The check in the route — canAccess before the work,
consumeafter.
FAQ
What is a check?
A check is canAccess — whether an end user may use a feature on this request. UsageGate answers that in the hot path.
Does Stripe enforce plan limits?
No. Stripe Billing meters invoice usage. They do not block a request. UsageGate enforces the plan table before the work runs.
Does the payment gateway matter?
No. Stripe can assign the paid plan, or you report the subscription from another gateway. UsageGate enforces the same three plans either way.
Next
- Get started — plan table, key, Stripe or another gateway
- Setup prompt — paste into Cursor
- Compare — Stripe meters, a Redis ledger, Stigg
- Integrations — Next.js, Supabase, Clerk, Resend
