diff --git a/app/api/inngest/client.ts b/app/api/inngest/client.ts index f9b1093d..dfed7189 100644 --- a/app/api/inngest/client.ts +++ b/app/api/inngest/client.ts @@ -82,6 +82,13 @@ export type Events = { subscriptionId: string; }; }; + "stripe/invoice.payment.succeeded": { + data: { + invoiceId: string; + subscriptionId: string; + customerId: string; + }; + }; "stripe/invoice.payment.failed": { data: { invoiceId: string; diff --git a/app/api/webhooks/stripe/route.ts b/app/api/webhooks/stripe/route.ts index 576790ba..404c91e7 100644 --- a/app/api/webhooks/stripe/route.ts +++ b/app/api/webhooks/stripe/route.ts @@ -57,6 +57,29 @@ export async function POST(req: NextRequest) { break; } + case "invoice.payment_succeeded": { + const invoice = event.data.object; + const sub = invoice.parent?.subscription_details?.subscription; + const subId = + typeof sub === "string" + ? sub + : typeof sub === "object" && sub + ? sub.id + : ""; + if (subId) { + await inngest.send({ + name: "stripe/invoice.payment.succeeded", + data: { + invoiceId: invoice.id, + subscriptionId: subId, + customerId: invoice.customer as string, + }, + }); + await handleSubscriptionUpdated(subId); + } + break; + } + case "invoice.payment_failed": { const invoice = event.data.object; const sub = invoice.parent?.subscription_details?.subscription;