2
0

🛂 (billing) Past due status only for unpaid invoices with additional usage

This commit is contained in:
Baptiste Arnaud
2023-12-05 16:24:44 +01:00
parent f64784fefd
commit b0d7039577

View File

@ -9,6 +9,7 @@ import { RequestHandler } from 'next/dist/server/next'
import { sendTelemetryEvents } from '@typebot.io/lib/telemetry/sendTelemetryEvent'
import { Settings } from '@typebot.io/schemas'
import { env } from '@typebot.io/env'
import { prices } from '@typebot.io/lib/billing/constants'
if (!env.STRIPE_SECRET_KEY || !env.STRIPE_WEBHOOK_SECRET)
throw new Error('STRIPE_SECRET_KEY or STRIPE_WEBHOOK_SECRET missing')
@ -176,7 +177,11 @@ const webhookHandler = async (req: NextApiRequest, res: NextApiResponse) => {
customer: invoice.customer as string,
status: 'open',
})
if (outstandingInvoices.data.length > 0)
const outstandingInvoicesWithAdditionalUsageCosts =
outstandingInvoices.data.filter(
(invoice) => invoice.amount_due > prices['PRO'] * 100
)
if (outstandingInvoicesWithAdditionalUsageCosts.length > 0)
return res.send({
message: 'Workspace has outstanding invoices, skipping.',
})
@ -221,6 +226,14 @@ const webhookHandler = async (req: NextApiRequest, res: NextApiResponse) => {
message:
'An active subscription still exists. Skipping downgrade.',
})
const outstandingInvoices = await stripe.invoices.list({
customer: subscription.customer as string,
status: 'open',
})
const outstandingInvoicesWithAdditionalUsageCosts =
outstandingInvoices.data.filter(
(invoice) => invoice.amount_due > prices['PRO'] * 100
)
const workspace = await prisma.workspace.update({
where: {
stripeId: subscription.customer as string,
@ -230,6 +243,7 @@ const webhookHandler = async (req: NextApiRequest, res: NextApiResponse) => {
customChatsLimit: null,
customStorageLimit: null,
customSeatsLimit: null,
isPastDue: outstandingInvoicesWithAdditionalUsageCosts.length > 0,
},
include: {
members: {