Nasca is the monetisation layer for AI apps. We handle per-user limits, credit top-ups, and upgrade prompts automatically.
Once you launch, every AI app runs into the same three walls.
One power user can burn through your entire monthly OpenAI budget overnight. No native per-user limits exist.
When users hit your hard cap they leave. Most would have paid to keep going, but there's no on-ramp.
Token counting, Redis counters, Stripe webhooks, a checkout flow, and an admin UI. Weeks of work before your first dollar.
Nasca is the complete AI billing layer. Plug it in once; everything else is config.
Set monthly, daily, and weekly AI budgets per user tier. Over-budget users are blocked instantly, with zero extra latency on passing requests.
Sell AI credits directly to your end-users via Stripe Connect. Fixed packs or flexible top-ups: they pay, your Stripe account receives, Nasca takes 2%.
Link your Stripe recurring prices to monthly AI spend limits. Nasca unlocks a higher budget the moment a user subscribes. No webhooks to write.
Track checkout conversions, daily revenue, and prompts blocked, all in one dashboard. See which users bought, what they paid, and what you earned.
Cloudflare and Vercel handle blocking. Nasca handles everything that comes after.
| Nasca | Cloudflare AI Gateway | Vercel AI Gateway | Build yourself | |
|---|---|---|---|---|
| Per-user spend limits | Via API keys | Weeks | ||
| Daily & weekly limits | Weeks | |||
| No proxy required | ||||
| Upgrade prompting | Weeks | |||
| Credit top-ups | Weeks | |||
| Hosted checkout | Weeks | |||
| Conversion analytics | Weeks | |||
| Works on any host | ||||
| Integration effort | 10 lines | Proxy setup | Proxy setup | Weeks |
Works with Next.js, Express, and plain Node.js
import { Nasca } from '@nasca/sdk'
const nasca = new Nasca({
accountId: process.env.NASCA_ACCOUNT_ID,
workerUrl: process.env.NASCA_WORKER_URL,
apiKey: process.env.NASCA_API_KEY,
getUserId: (ctx) => ctx.user.id,
getUserTier: (ctx) => ctx.user.plan,
})const callAI = nasca.wrap( openai.chat.completions.create.bind(openai.chat.completions) )
One wrap call covers all your AI providers: OpenAI, Anthropic, or any OpenRouter model.
try {
const result = await callAI({ model: 'gpt-4o', messages: [...] }, ctx)
} catch (err) {
if (err instanceof NascaBlockedError) {
// err.checkoutUrl → Stripe checkout or top-up page
// err.message → your custom upgrade prompt
}
}Over-budget users receive a NascaBlockedError with your custom message and a ready-made checkoutUrl. Nasca checks limits in under 50ms and logs usage after the response, all invisible to your users.
Supports OpenAI, Anthropic Claude, and OpenRouter. Any provider with token counts in the response works with custom pricing.
When a user hits their limit, Nasca shows them a path forward, not a dead end.
Nasca blocks the request and throws a NascaBlockedError with your custom upgrade message and a checkout URL.
They click through to a Stripe checkout for a credit pack, a flexible top-up, or a subscription. All payments are processed through your Stripe account.
Stripe notifies Nasca. The user's AI credits are topped up and their next request goes through. No manual intervention needed.
Start free, upgrade when you scale.
Both plans include a 2% platform fee on all conversions processed through Nasca checkout.
Everything you need to start monetising
For apps with real traction
2% platform fee applies to credit pack purchases and subscription upgrades processed through Nasca-hosted checkout. No fee on AI usage itself. Enterprise pricing available.
Add limits, credit packs, and subscriptions to your app in an afternoon. Free for your first 100 users.