diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java index 0bafda734..42c10e648 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java @@ -316,6 +316,12 @@ public class StripeManager implements SubscriptionPaymentProcessor { final Subscription subscription = getSubscription(subscriptionObj); + if (getSubscriptionStatus(subscription.getStatus()) == SubscriptionStatus.CANCELED) { + // If the existing subscription is cancelled, just create a new subscription rather than trying to update a + // cancelled subscription (which stripe forbids) + return createSubscription(subscription.getCustomer(), priceId, level, subscription.getCreated()); + } + return CompletableFuture.supplyAsync(() -> { List items = new ArrayList<>(); try {