Upgrade or Downgrade a Subscription
Move a subscriber to a different plan immediately (with proration) or at next billing cycle.
POST /subscription/{id}/change-plan to move a subscriber to a different plan — either upgrading to a higher-priced tier or downgrading to a lower one. You control whether the change takes effect immediately (with proration charged or absorbed today) or is scheduled for the next billing cycle.
amount, interval, and intervalCount are immutable once it has active subscribers. To change pricing or cadence, create a new plan and use this endpoint to migrate subscribers to it.planId (target plan) is required; applyAt (now | next_billing, defaults to next_billing) controls timing — see the parameters panel above.
Response
Returns200 OK with the updated subscription object. When applyAt is "next_billing", the response includes a scheduledPlanChange object with the planId and effectiveAt timestamp.
Errors
Authorizations
Your secret API key: Bearer prv_production_xxx (production) or Bearer prv_sandbox_xxx (sandbox).
Path Parameters
Body
Your merchant account identifier.
ID of the plan to switch to.
When the change takes effect. next_billing (default) stores it as pending and applies it at the next cycle with no immediate charge. now applies immediately - an upgrade charges the prorated difference by MIT straight away; a downgrade switches immediately with no refund and the lower amount takes effect next cycle.
now, next_billing Response
Plan changed
A customer enrollment in a plan. plan is embedded on single-subscription responses. Invoice/event history is not included here - use the invoice endpoints.
Subscription UUID.
The merchant account that owns the subscription.
ID of the plan this subscription is enrolled in.
Subscriber email, used for billing and dunning notifications.
Subscriber name as it appears on invoices.
Subscriber national ID / tax document, where a market requires it (e.g. Brazil CPF/CNPJ).
Brand of the card on the mandate, e.g. visa.
pending - awaiting first charge; trialing - in a free trial; active - billing normally; past_due - a renewal failed and dunning is running; suspended - dunning exhausted, needs a new CIT (POST /subscription/{id}/payment-method in CIT mode) to recover; paused - billing stopped on request, resumable; cancelled - terminated; completed - reached maxBillingCycles.
pending, trialing, active, past_due, suspended, paused, cancelled, completed Start of the current billing period.
End of the current billing period.
When the next renewal charge is scheduled.
Trial start, when the plan has a trial.
Trial end - the first real charge date.
Failed-renewal retry attempts made in the current dunning sequence.
When the subscription first became active.
Deferred start, when creation set a future startAt.
Number of billing cycles charged so far.
When the subscription reached maxBillingCycles.
Parent subscription UUID, for add-on hierarchies.
Whether pause/cancel on the parent cascades to this subscription.
Plan the subscription will switch to at the next cycle, set by a next_billing change-plan.
A reusable billing plan. amount is a flat integer in the currency minor units (with separate currency + exponent) - not an Amount object.

