diff --git a/src/Core/Models/Business/SubscriptionInfo.cs b/src/Core/Models/Business/SubscriptionInfo.cs index 3f82d919fc..0ea199d6fc 100644 --- a/src/Core/Models/Business/SubscriptionInfo.cs +++ b/src/Core/Models/Business/SubscriptionInfo.cs @@ -21,7 +21,7 @@ namespace Bit.Core.Models.Business PeriodEndDate = sub.CurrentPeriodEnd; CancelledDate = sub.CanceledAt; CancelAtEndDate = sub.CancelAtPeriodEnd; - Cancelled = sub.Status == "canceled" || sub.Status == "unpaid"; + Cancelled = sub.Status == "canceled" || sub.Status == "unpaid" || sub.Status == "incomplete_expired"; if(sub.Items?.Data != null) { Items = sub.Items.Data.Select(i => new BillingSubscriptionItem(i)); diff --git a/src/Core/Services/Implementations/StripePaymentService.cs b/src/Core/Services/Implementations/StripePaymentService.cs index 8baf941025..b9608d0ed3 100644 --- a/src/Core/Services/Implementations/StripePaymentService.cs +++ b/src/Core/Services/Implementations/StripePaymentService.cs @@ -976,7 +976,8 @@ namespace Bit.Core.Services throw new GatewayException("Subscription was not found."); } - if(sub.CanceledAt.HasValue || sub.Status == "canceled" || sub.Status == "unpaid") + if(sub.CanceledAt.HasValue || sub.Status == "canceled" || sub.Status == "unpaid" || + sub.Status == "incomplete_expired") { // Already canceled return; @@ -1021,7 +1022,8 @@ namespace Bit.Core.Services throw new GatewayException("Subscription was not found."); } - if((sub.Status != "active" && sub.Status != "trialing") || !sub.CanceledAt.HasValue) + if((sub.Status != "active" && sub.Status != "trialing" && !sub.Status.StartsWith("incomplete")) || + !sub.CanceledAt.HasValue) { throw new GatewayException("Subscription is not marked for cancellation."); }