diff --git a/packages/billing/core/src/create-billing-schema.ts b/packages/billing/core/src/create-billing-schema.ts index 5c58d3817..159f4616e 100644 --- a/packages/billing/core/src/create-billing-schema.ts +++ b/packages/billing/core/src/create-billing-schema.ts @@ -72,6 +72,20 @@ export const LineItemSchema = z message: 'Metered line items must have a unit and tiers', path: ['type', 'unit', 'tiers'], }, + ) + .refine( + (data) => { + if (data.type === LineItemType.Metered) { + return data.cost === 0; + } + + return true; + }, + { + message: + 'Metered line items must have a cost of 0. Please add a different line item type for a flat fee (Stripe)', + path: ['type', 'cost'], + }, ); export const PlanSchema = z diff --git a/packages/billing/gateway/src/components/line-item-details.tsx b/packages/billing/gateway/src/components/line-item-details.tsx index 26ed4c4b9..aa3f8d157 100644 --- a/packages/billing/gateway/src/components/line-item-details.tsx +++ b/packages/billing/gateway/src/components/line-item-details.tsx @@ -187,10 +187,6 @@ export function LineItemDetails( return ; case 'metered': { - if (item.cost > 0) { - return ; - } - return ; } } diff --git a/packages/billing/gateway/src/components/plan-picker.tsx b/packages/billing/gateway/src/components/plan-picker.tsx index 797748f98..c996fe716 100644 --- a/packages/billing/gateway/src/components/plan-picker.tsx +++ b/packages/billing/gateway/src/components/plan-picker.tsx @@ -79,21 +79,6 @@ export function PlanPicker( } }, { message: t('noPlanChosen'), path: ['planId'] }, - ) - .refine( - (data) => { - try { - const { plan } = getProductPlanPair(props.config, data.planId); - - return !(plan.paymentType === 'recurring' && !data.interval); - } catch { - return false; - } - }, - { - message: t('noIntervalPlanChosen'), - path: ['interval'], - }, ), ), defaultValues: {