Same three calls. Auth and email stay yours. The payment gateway charges the card. UsageGate enforces the entitlement on every request.
Stack
- UsageGate for Next.js — Put canAccess in the App Router route. UsageGate is the entitlements layer and enforces every request. Clerk, Supabase, and any payment gateway stay yours.
- UsageGate + Supabase — Use session.user.id as UsageGate userId. Supabase is auth and the database. UsageGate is entitlements.
- UsageGate + Clerk — Use Clerk user.id as UsageGate userId. Clerk is auth. UsageGate is entitlements.
- UsageGate + Resend — Resend sends email. UsageGate enforces entitlements on every request. Same Next.js SaaS stack — they do not replace each other.
Payments
- UsageGate + Stripe — Stripe charges the card in your account. UsageGate enforces the entitlement on every request. Paste Price ids on paid columns. We are not a processor.
- UsageGate + Paystack — Paystack charges the card. UsageGate enforces the entitlement on every request. Choose Other on Payment gateway, then reportSubscription from your Paystack webhook.
- UsageGate + Paddle — Paddle charges the card. UsageGate enforces the entitlement on every request. Choose Other on Payment gateway, then reportSubscription from your Paddle webhook.
Architecture: don't build the processor.

