Skip to main content
Change a customer’s subscription to a different plan. Choose whether to charge immediately (with proration) or wait until the next billing date.

Choose Your Approach

Change With Immediate Payment

Charge the customer now for the new plan. Use when upgrades should take effect immediately.
1

Create a client session

Include the customer, subscription, and new plan:
cURL
2

Mount the SDK

Display checkout with the customer’s saved payment method:
Outcomes:
  • Success: Plan updates immediately, billing cycle resets to today
  • Failure: Subscription stays on old plan; customer can retry with a different card
The prorated amount must reach the minimum charge amount of $0.50 (USD equivalent). If the calculation produces a smaller amount—common for downgrades or small upgrades—the client session returns a 400 error. Change the plan without a charge instead.

Change Without a Charge

When the prorated amount is below the minimum or you don’t want to charge now, change the plan with the subscription endpoint. Set change_mode to immediate to reset the billing cycle to today.
cURL
The plan changes immediately. The next billing date resets to today plus the new plan’s period, and the next charge uses the new plan’s price.

Schedule Plan Change

Change the plan now and keep the existing billing date. Set change_mode to next_billing_date.
cURL
The plan changes immediately in the system. The next charge, on the existing billing date, uses the new plan’s price.
change_mode controls only when the billing cycle starts. With next_billing_date (the default), the existing billing date stays the same. With immediate, the next billing date resets to today plus the new plan’s period.

Silent Plan Change (No UI)

To change plans without showing checkout, use the API-only approach. This charges the customer’s saved payment method directly.
Background charges have no card update UI. If payment fails, you must notify the customer separately.