General
Billing

Subscriptions

Learn how to set up and manage subscriptions.

Creating a Subscription

To create a subscription, use the Stripe API:

create-subscription.ts
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);

const subscription = await stripe.subscriptions.create({
  customer: customerId,
  items: [{ price: priceId }]
});

Checking Subscription Status

Check if an organization has an active subscription:

check-subscription.ts
import {
  getActivePlanForOrganization,
  getActiveSubscriptionByOrganizationId
} from '@/lib/billing';

// Get the active subscription
const subscription =
  await getActiveSubscriptionByOrganizationId(organizationId);

if (subscription?.status === 'active' || subscription?.status === 'trialing') {
  // Organization has active subscription
}

// Or get the active plan (includes subscription and lifetime orders)
const activePlan = await getActivePlanForOrganization(organizationId);

if (activePlan && activePlan.planId !== 'free') {
  // Organization has an active paid plan
}

Canceling a Subscription

Allow users to cancel their subscriptions:

cancel-subscription.ts
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);

await stripe.subscriptions.cancel(subscriptionId);