Skip to main content
POST
Move subscribers to a plan version
Move a list of subscriptions, or every subscription of another version, to a newer version of the plan, at their next renewal or now. Nobody moves unless every one of them fits or has a change in changes; otherwise the response lists each one with what would make it fit. Subscriptions whose status does not allow a move, such as paused ones, and one-time subscriptions in a move at renewal are left out. A move keeps each subscription’s currency, and a free version moves only to a free version and a paid one only to a paid version. Send preview to check without moving anyone. The request returns 202 with the move. Follow it and each subscriber’s status with Get plan move. subscription.version_changed fires for each subscription when its move takes effect.

Authorizations

x-api-key
string
header
required

Headers

Idempotency-Key
string

Unique key used to safely retry this write for 24 hours without applying it twice.

Required string length: 1 - 200
Commet-Version
string
default:2026-08-27

API version used by this reference. Send this header to select this contract explicitly.

Path Parameters

id
string
required

Body

application/json
subscriptionIds
string[]
required

Public IDs of the subscriptions to move.

Required array length: 1 - 10000 elements
toVersionId
string
required

The version subscribers move to.

effective
enum<string>
required

now changes features and the included amount today and the price at renewal; period_end moves each subscriber at its next renewal.

Available options:
now,
period_end
changes
object[]

Per-subscriber changes that make each one fit, applied at its renewal.

preview
boolean
default:false

Check every subscriber without moving anyone.

Response

Success

id
string | null
required

Public move ID. Null for a preview, which records nothing.

toVersionId
string
required
fromVersionIds
string[]
required

The versions its subscribers are moving from.

effective
enum<string>
required
Available options:
now,
period_end
preview
boolean
required
status
enum<string>
required

checked is a preview where everyone fits; moving while subscribers wait for their move; completed once every move ran; canceled after it was canceled.

Available options:
checking,
blocked,
checked,
moving,
completed,
canceled
counts
object
required
subscriptions
object[]
required
createdAt
string<date-time> | null
required
completedAt
string<date-time> | null
required
canceledAt
string<date-time> | null
required
object
string
required
Allowed value: "plan_move"
livemode
boolean
required