diff --git a/ee/packages/billing/api/createCheckoutSession.ts b/ee/packages/billing/api/createCheckoutSession.ts index 8c3f570a8..ff2aee8f8 100644 --- a/ee/packages/billing/api/createCheckoutSession.ts +++ b/ee/packages/billing/api/createCheckoutSession.ts @@ -74,14 +74,28 @@ export const createCheckoutSession = async ({ }, }) - const customer = await stripe.customers.create({ + const existingCustomer = await stripe.customers.list({ + email, + }) + + if (existingCustomer && email !== existingCustomer.data[0].email) + throw new TRPCError({ + code: 'BAD_REQUEST', + message: 'Make sure to log in with the same email as the one provided', + }) + + const customerData = { email, name: company, metadata: { workspaceId }, tax_id_data: vat ? [vat as Stripe.CustomerCreateParams.TaxIdDatum] : undefined, - }) + } + const customer = + existingCustomer.data.length > 0 + ? await stripe.customers.update(existingCustomer.data[0].id, customerData) + : await stripe.customers.create(customerData) const checkoutUrl = await createCheckoutSessionUrl(stripe)({ customerId: customer.id,