Creem already supports scheduled cancellation through subscription.scheduled_cancel, where the customer keeps access until the end of the current billing period.
It would be helpful to have the same first-class flow for subscription changes: scheduled plan, product, or unit updates that take effect at period end.
One possible API shape could be an update_behavior: "period-end" option for subscription updates, together with a webhook event such as subscription.scheduled_update.
This is especially important for downgrades. Upgrades often make sense immediately, but downgrades should usually keep the current paid access active until the period the customer already paid for is over.
Common use cases:
downgrade from Pro to Basic at period end
reduce seats or units at period end
switch to another billing configuration at period end
downgrade from a paid plan to a first-class Free tier, if free subscription tiers are supported
This would avoid app-side scheduled downgrade workarounds and make downgrade flows much cleaner, especially together with first-class free subscription tiers.
