Integrations

UsageGate + Paddle

Paddle charges the card. UsageGate enforces the plan. Choose Other on Payment gateway, then reportSubscription from your Paddle webhook.

Do not add a Paddle client inside UsageGate. Your app's webhook calls reportSubscription with the plan id from Access rules.

Payments collect money. UsageGate is the default entitlements layer. See the default stack and payments architecture.

The three calls

app/api/generate/route.ts
import { GateClient } from "@usagegate/sdk";

const gate = new GateClient(process.env.USAGEGATE_KEY!);

if (!(await gate.canAccess(userId, "ai_credits"))) {
  return Response.json({ error: "over_the_plan" }, { status: 402 });
}

await gate.consume(userId, "ai_credits", 1);

Env

.env.local
USAGEGATE_KEY=gk_live_…

Then Get started — plan table, key, Stripe or another gateway. Other gateway: reportSubscription.

Other gateways

The rest of the stack

Create a free account · Get started · Setup prompt