From 1713b2398d5c238058639ac5a0d5cef916a7a1e8 Mon Sep 17 00:00:00 2001 From: Dries Augustyns Date: Tue, 9 Dec 2025 14:26:59 +0100 Subject: [PATCH] fix: Only check free tier limits if billing is enabled --- apps/api/src/services/BillingLimitService.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/api/src/services/BillingLimitService.ts b/apps/api/src/services/BillingLimitService.ts index 5a8dcfc..50b49b1 100644 --- a/apps/api/src/services/BillingLimitService.ts +++ b/apps/api/src/services/BillingLimitService.ts @@ -1,6 +1,7 @@ import {EmailSourceType} from '@plunk/db'; import signale from 'signale'; +import {STRIPE_ENABLED} from '../app/constants.js'; import {stripe} from '../app/stripe.js'; import {prisma} from '../database/prisma.js'; import {redis} from '../database/redis.js'; @@ -221,7 +222,8 @@ export class BillingLimitService { project.billingLimitTransactional !== null; // Free tier projects (no subscription and no custom limits): enforce total 1000 email/month limit - if (!project.subscription && !hasCustomLimits) { + // Only enforce free tier limits if billing is enabled + if (STRIPE_ENABLED && !project.subscription && !hasCustomLimits) { const totalUsage = await this.getTotalUsage(projectId); const freeLimit = this.FREE_TIER_TOTAL_LIMIT; const percentage = (totalUsage / freeLimit) * 100; @@ -415,7 +417,8 @@ export class BillingLimitService { project.billingLimitTransactional !== null; // Free tier projects (no subscription and no custom limits): show total usage with shared limit - if (!project.subscription && !hasCustomLimits) { + // Only show free tier limits if billing is enabled + if (STRIPE_ENABLED && !project.subscription && !hasCustomLimits) { const totalUsage = workflowUsage + campaignUsage + transactionalUsage; const limit = this.FREE_TIER_TOTAL_LIMIT; const percentage = (totalUsage / limit) * 100;