Change Plan
Modify an existing subscription’s plan, enabling both upgrades and downgrades to different pricing tiers.
Note: This will use the existing payment information of the customer to upgrade/downgrade the plan.
Documentation Index
Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
Use this file to discover all available pages before exploring further.
Scheduled Plan Changes
Use theeffective_at parameter to control when the plan change takes effect:
| Value | Behavior |
|---|---|
immediately | Apply the plan change right away. This is the default. |
next_billing_date | Schedule the change for the next billing date. The customer retains access to their current plan until the billing period ends. |
Payment Failure Handling
Use theon_payment_failure parameter to control what happens when the plan change payment fails:
| Value | Behavior |
|---|---|
prevent_change | Keep subscription on current plan until payment succeeds. Plan change remains pending. |
apply_change | Apply plan change immediately regardless of payment outcome. This is the default. |
on_payment_failure is not specified, the behavior defaults to your business-level setting configured in the dashboard.Discount Codes
You can apply one or more stacked discount codes when changing plans by passing thediscount_codes array (max 20 entries, applied in array order). The singular discount_code field is deprecated but still works for existing integrations; it cannot be combined with discount_codes in the same request.
discount_codes value | Behavior |
|---|---|
Not provided (null / omitted) | Existing discounts with preserve_on_plan_change=true are preserved if applicable to the new product. |
[] (empty array) | All existing discounts are removed from the subscription. |
["CODE_A", "CODE_B", ...] | Replaces any existing discounts with this stacked set, validated and applied in array order. |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Subscription Id
Body
Unique identifier of the product to subscribe to
Proration Billing Mode
prorated_immediately, full_immediately, difference_immediately, do_not_bill Number of units to subscribe for. Must be at least 1.
x >= 0Whether adaptive currency fees should be included in the price (true) or added on top (false). If not specified, uses the subscription's stored setting.
Addons for the new plan. Note : Leaving this empty would remove any existing addons
DEPRECATED: Use discount_codes instead. Cannot be used together with discount_codes.
Stacked discount codes to apply to the new plan. Max 20. Cannot be used together with discount_code. If provided, replaces any existing discount codes. Empty array removes all discounts. If not provided (None), existing discounts with preserve_on_plan_change=true are preserved.
When to apply the plan change.
immediately(default): Apply the plan change right awaynext_billing_date: Schedule the change for the next billing date
immediately, next_billing_date Metadata for the payment. If not passed, the metadata of the subscription will be taken
Controls behavior when the plan change payment fails.
prevent_change: Keep subscription on current plan until payment succeedsapply_change(default): Apply plan change immediately regardless of payment outcome
If not specified, uses the business-level default setting.
prevent_change, apply_change Response
Subscription plan changed. If on_payment_failure=prevent_change, the plan change is pending until payment succeeds.