A move deferred to a commitment's end survives an upgrade the console learns of from Stripe #308

Open
opened 2026-10-31 00:29:59 +00:00 by cgalo5758 · 0 comments
Owner

What happens

A member on a plan with a commitment can schedule a downgrade or a cancellation for the end of that commitment. When the member later upgrades, the console takes back every scheduled move on the subscription, the deferred one included, but only in the request that applied the upgrade.

An upgrade can also apply outside that request: when the member approves the payment on Stripe's invoice page, or when the upgrade went through but its answer never reached the console. The console then learns of it only through the reconcile, which leaves moves deferred to a commitment's end alone. At the commitment's end the sweep applies the old move over the upgrade.

What should happen

An upgrade that applies takes back the moves deferred to a commitment's end, however the console learns of it.

Where

internal/fulfillment/reconcile.go (convergeScheduledChanges), internal/fulfillment/plan_change.go (appliedUpgrade)

Why it matters

A member who upgraded can be moved down or cancelled at the end of a commitment, against their latest choice.

Related: #177, #219, #275.

### What happens A member on a plan with a commitment can schedule a downgrade or a cancellation for the end of that commitment. When the member later upgrades, the console takes back every scheduled move on the subscription, the deferred one included, but only in the request that applied the upgrade. An upgrade can also apply outside that request: when the member approves the payment on Stripe's invoice page, or when the upgrade went through but its answer never reached the console. The console then learns of it only through the reconcile, which leaves moves deferred to a commitment's end alone. At the commitment's end the sweep applies the old move over the upgrade. ### What should happen An upgrade that applies takes back the moves deferred to a commitment's end, however the console learns of it. ### Where `internal/fulfillment/reconcile.go` (`convergeScheduledChanges`), `internal/fulfillment/plan_change.go` (`appliedUpgrade`) ### Why it matters A member who upgraded can be moved down or cancelled at the end of a commitment, against their latest choice. Related: #177, #219, #275.
cgalo5758 added the
kind
bug
area/billing
labels 2026-10-31 00:29:59 +00:00
Sign in to join this conversation.
No labels area/billing
kind
bug
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wiki-cafe/member-console#308