Openstatus
www.openstatus.dev
1import Stripe from "stripe";
2
3import { env } from "../../env";
4
5export const stripe = new Stripe(env.STRIPE_SECRET_KEY ?? "", {
6 apiVersion: "2023-08-16",
7 appInfo: {
8 name: "OpenStatus",
9 version: "0.1.0",
10 },
11});
12
13export async function cancelSubscription(customer?: string) {
14 if (!customer) return;
15
16 try {
17 const subscriptionId = await stripe.subscriptions
18 .list({
19 customer,
20 })
21 .then((res) => res.data[0]?.id);
22
23 if (!subscriptionId) return;
24
25 return await stripe.subscriptions.update(subscriptionId, {
26 cancel_at_period_end: true,
27 cancellation_details: {
28 comment: "Customer deleted their OpenStatus project.",
29 },
30 });
31 } catch (error) {
32 console.log("Error cancelling Stripe subscription", error);
33 return;
34 }
35}