diff --git a/crates/collab/src/api/billing.rs b/crates/collab/src/api/billing.rs index f1ed25ed88a2aeedaf322d5b122ca77e3547ae81..3852b028119234316240bf403588c567a60bbf5e 100644 --- a/crates/collab/src/api/billing.rs +++ b/crates/collab/src/api/billing.rs @@ -1183,14 +1183,20 @@ async fn sync_subscription( if subscription.status == SubscriptionStatus::Canceled || subscription.status == SubscriptionStatus::Paused { - let stripe_customer_id = billing_customer - .stripe_customer_id - .parse::() - .context("failed to parse Stripe customer ID from database")?; - - stripe_billing - .subscribe_to_zed_free(stripe_customer_id) + let already_has_active_billing_subscription = app + .db + .has_active_billing_subscription(billing_customer.user_id) .await?; + if !already_has_active_billing_subscription { + let stripe_customer_id = billing_customer + .stripe_customer_id + .parse::() + .context("failed to parse Stripe customer ID from database")?; + + stripe_billing + .subscribe_to_zed_free(stripe_customer_id) + .await?; + } } }