Cannot downgrade memberships created via Stripe Migration Toolkit

We are in the process of migrating to Ghost from another membership platform.

In our current platform Stripe is used for maintaining members, payment methods and payment history.

The membership tiers (products), prices, currencies, terms and subscriptions are all stored in the membership system itself (not in Stripe).

To facilitate our migration we need to create Subscriptions in Stripe for each user to attach them to the Ghost-created membership tiers (Stripe products) in line with their current subscriptions. We are using the Stripe Billing Toolkit for the migration but have run into an issue.

Specifically we are following this scenario to migrate users in the appropriate stage of their subscription.

When import the users via the migration toolkit the Subscriptions are created appropriately in Stripe and a subsequent import of the users into Ghost links everything up appropriately.

However in the scenario where we log in as a user on an annual subscription and attempt to downgrade them to a monthly subscription there is no resulting change to their membership in Ghost and the following error is shown in Stripe:

"The subscription is managed by the subscription schedule `sub_sched_1QMMyeAxYIlj1waLhg7OFoG3`, and updating any cancelation behavior directly is not allowed. Please update the schedule instead."

Users who are created directly in Ghost on an annual plan can downgrade to a monthly plan without issue.

In comparing the two scenarios (user with Subscription created directly in Ghost vs user with Subscription created via the Migratoin Toolkit import) I can see that the subscriptions are different in Stripe.

Subscriptions created via the Migration Toolkit have an associated Subscription Schedule. Subscriptions I create from Ghost directly (by registering new users) do not have a Subscription Schedule in Stripe.

This Subscription Schedule seems to override the ability for users to downgrade their subscription via Ghost.

I’m hoping someone else may have experienced this issue and uncovered a solution. I think there are a few options:

1 - Is it possible to create subscriptions without a subscription schedule via Stripe’s migration toolkit?

2 - If not, is there some way to configure the subscription schedule so that it’s more flexible during the import?

3 - Alternatively, would we be better off to do the subscription migration via the API and would this allow us to avoid the subscription schedule issues?

Thanks for any help/advice. I have emailed Stripe support about this but they’re not very responsive.

fwiw the only solution we’ve found for this scenario is to manually release the subscription schedule in Stripe via an API call. This doesn’t impact anything important on the subscription - it still has the appropriate expiry date etc.

So we will have to write something custom to obtain all the subscription schedule IDs and then release them all.

That said, if anyone has any better ideas I’d love to hear them.