From 6c3ca9bf248f11cd7f3a6290ec876680fd93aeac Mon Sep 17 00:00:00 2001 From: Ahmed Darrazi Date: Fri, 5 Dec 2025 23:11:04 +0100 Subject: [PATCH] Fix: Use subscription item's current_period_end (Stripe API v2) --- app/api/webhooks/stripe/route.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/api/webhooks/stripe/route.ts b/app/api/webhooks/stripe/route.ts index d19af57..fd4a266 100644 --- a/app/api/webhooks/stripe/route.ts +++ b/app/api/webhooks/stripe/route.ts @@ -42,11 +42,12 @@ export async function POST(request: Request) { session.subscription as string ) as Stripe.Subscription; + const subscriptionItem = subscription.items.data[0]; const updatedData = { stripeSubscriptionId: subscription.id, stripeCustomerId: subscription.customer as string, - stripePriceId: subscription.items.data[0].price.id, - stripeCurrentPeriodEnd: new Date(subscription.current_period_end * 1000), + stripePriceId: subscriptionItem.price.id, + stripeCurrentPeriodEnd: new Date(subscriptionItem.current_period_end * 1000), }; if (session?.metadata?.userId != null) { @@ -84,12 +85,13 @@ export async function POST(request: Request) { ) as Stripe.Subscription; // Update the price id and set the new period end. + const subscriptionItem = subscription.items.data[0]; await db .update(subscriptions) .set({ - stripePriceId: subscription.items.data[0].price.id, + stripePriceId: subscriptionItem.price.id, stripeCurrentPeriodEnd: new Date( - subscription.current_period_end * 1000 + subscriptionItem.current_period_end * 1000 ), }) .where(eq(subscriptions.stripeSubscriptionId, subscription.id));