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);