diff --git a/apps/web/.env.development b/apps/web/.env.development index 943f5375f..bd96eb1c2 100644 --- a/apps/web/.env.development +++ b/apps/web/.env.development @@ -39,7 +39,6 @@ NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY= NEXT_PUBLIC_ENABLE_ACCOUNT_DELETION=true NEXT_PUBLIC_ENABLE_PERSONAL_ACCOUNT_BILLING=true NEXT_PUBLIC_ENABLE_ORGANIZATION_DELETION=true -NEXT_PUBLIC_ENABLE_ORGANIZATION_INVITATIONS=true NEXT_PUBLIC_ENABLE_ORGANIZATION_BILLING=true # LOCALES diff --git a/packages/billing/core/src/schema/report-billing-usage.schema.ts b/packages/billing/core/src/schema/report-billing-usage.schema.ts index cf3ccd055..c0defc8a5 100644 --- a/packages/billing/core/src/schema/report-billing-usage.schema.ts +++ b/packages/billing/core/src/schema/report-billing-usage.schema.ts @@ -1,8 +1,9 @@ import { z } from 'zod'; export const ReportBillingUsageSchema = z.object({ - subscriptionId: z.string(), + subscriptionItemId: z.string(), usage: z.object({ quantity: z.number(), + action: z.enum(['increment', 'set']), }), }); diff --git a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-billing-strategy.service.ts b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-billing-strategy.service.ts index d898aacf5..8172e358b 100644 --- a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-billing-strategy.service.ts +++ b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-billing-strategy.service.ts @@ -121,6 +121,15 @@ export class LemonSqueezyBillingStrategyService const { error } = await cancelSubscription(params.subscriptionId); if (error) { + Logger.error( + { + name: 'billing.lemon-squeezy', + subscriptionId: params.subscriptionId, + error: error.message, + }, + 'Failed to cancel subscription', + ); + throw error; } @@ -197,21 +206,22 @@ export class LemonSqueezyBillingStrategyService Logger.info( { name: 'billing.lemon-squeezy', - subscriptionItemId: params.subscriptionId, + subscriptionItemId: params.subscriptionItemId, }, 'Reporting usage...', ); const { error } = await createUsageRecord({ quantity: params.usage.quantity, - subscriptionItemId: params.subscriptionId, + subscriptionItemId: params.subscriptionItemId, + action: params.usage.action, }); if (error) { Logger.error( { name: 'billing.lemon-squeezy', - subscriptionItemId: params.subscriptionId, + subscriptionItemId: params.subscriptionItemId, error: error.message, }, 'Failed to report usage', @@ -223,7 +233,7 @@ export class LemonSqueezyBillingStrategyService Logger.info( { name: 'billing.lemon-squeezy', - subscriptionItemId: params.subscriptionId, + subscriptionItemId: params.subscriptionItemId, }, 'Usage reported successfully', ); diff --git a/packages/billing/stripe/src/services/stripe-billing-strategy.service.ts b/packages/billing/stripe/src/services/stripe-billing-strategy.service.ts index dbb497a65..e69bd29ad 100644 --- a/packages/billing/stripe/src/services/stripe-billing-strategy.service.ts +++ b/packages/billing/stripe/src/services/stripe-billing-strategy.service.ts @@ -187,9 +187,13 @@ export class StripeBillingStrategyService async reportUsage(params: z.infer) { const stripe = await this.stripeProvider(); - await stripe.subscriptionItems.createUsageRecord(params.subscriptionId, { - quantity: params.usage.quantity, - }); + await stripe.subscriptionItems.createUsageRecord( + params.subscriptionItemId, + { + quantity: params.usage.quantity, + action: params.usage.action, + }, + ); return { success: true }; }