Y CombinatorBacked by Y Combinator

Ship billing in minutes,not weeks

Embed our PricingTable component and track usage in real-time.

Control feature access instantly with usage-based billing, credit systems, feature gates and much more.

Payment Processing

Process payments in minutes. Handle subscriptions, one-time payments, and complex billing scenarios. Integrate with Stripe and other providers seamlessly.

Monthly Subscription$99/mo
Usage-based BillingMetered
One-time Setup$299
Feature Access (Entitlements)

Control access to every feature. Define plans, manage quotas, and gate features with real-time entitlement checks and usage tracking.

Team Collaboration

5/10 users

API Calls

847/1000 this month

Advanced Analytics

Upgrade to unlock

Ramon Garate
"Lumen saved me weeks of building usage tracking and billing. I added metered billing and real-time usage tracking to ramon.chat in an hour."

Ramon Garate

Co-Founder and CTO (YC W24)

Get Started in Minutes

Four simple steps to integrate payments and feature access

1

Install the Packages & Pricing Table

The recommended way is to use our shadcn component so you can easily edit the styling with Cursor or similar tools

bash
npm install @getlumen/react @getlumen/server
bash
npx shadcn@latest add https://getlumen.dev/pricing-table.json
2

Frontend Integration

Import the PricingTable component and add it to your NextJS pricing page

tsx
import { PricingTable } from '@/components/ui/pricing-table';
// OR if you don't want to use shadcn
// import { PricingTable } from '@getlumen/react'

export default function PricingPage() {
  return (
    <PricingTable
      lumenPublishableKey={process.env.NEXT_PUBLIC_LUMEN_PUBLISHABLE_KEY}
      userId={session?.user?.id}
      loginRedirectUrl="/login"
    />
  );
}
3

Backend Integration

Check if a user has access to a feature and record usage with 1 line of code

tsx
import { sendEvent, isFeatureEntitled } from "@getlumen/server";;

export async function POST(request: NextRequest) {
  const supabase = await createClient();
  const { data: { user } } = await supabase.auth.getUser();

  // Check if user still has credits
  if (
     await isFeatureEntitled({
        feature: "ai-chat-requests",
        userId: user.id
      })
    ) {
    // Do something here ...
    // after completion you can record usage with:
    sendEvent({
      name: "ai-chat-requests",
      userId: user.id,
    });
  }
}
4

Set up your plans & features in the dashboard

Lumen dashboard onboarding

Complete billing for any scale. Engineered for speed, designed for developer experience.

Stop building billing infrastructure from scratch. Lumen handles usage tracking, complex pricing models, and entitlements so you can focus on shipping features.

Real-time Usage Tracking

Track usage in real-time without building your own system. Same data powers both billing and entitlements—no duplicate tracking needed.

Complex Billing Made Simple

Monthly, yearly, credits, overrides, multiple billing dates. Build sophisticated pricing models that would take weeks with Stripe—in minutes.

Zero State Management

No subscription tables in your DB. No feature flags to maintain. We handle all user state—you just check entitlements with one API call.

Instant Pricing Changes

Move features between plans, adjust credit limits, test new pricing—all without code changes. Perfect for rapid experimentation.

Everything Connected

Credits → Usage → Billing → Entitlements. One unified system where changes ripple through automatically. No manual syncing required.

Lightning Fast Setup

What takes weeks with traditional billing solutions takes minutes with Lumen. Import our component, check entitlements—you're done.

Taxes & Invoices Included

Global tax calculation and professional invoice generation handled automatically. No need to integrate separate tax providers or build invoice systems.

Ready to ship in production

Stop building billing infrastructure.Start shipping features.