Change Plan
This endpoint allows you to replace a subscriber’s current package with a new one (upgrade or downgrade). Plan transitions follow Zotlo’s billing logic, including prorated upgrades, cycle preservation options, and deferred downgrades.
The service operates using the POST method.
How Plan Changes Work
Upgrade
When switching to a more expensive plan, Zotlo processes the change based on the saveCycle parameter.
If saveCycle = true (Keep Billing Cycle)
The current billing cycle does not change,
expireDateremains the same.The unused portion of the current plan is credited.
The user pays only the price difference.
The new plan becomes active immediately after a successful charge.
If the charge fails → upgrade does not happen; current plan continues.
If saveCycle = false (Start New Cycle)
The current billing cycle is terminated immediately.
The unused amount is credited to the new plan.
A full charge for the new plan is attempted instantly.
A new billing cycle starts immediately with a new expire date.
If the charge fails → upgrade does not occur; the current plan continues unchanged.
Note: Choosing saveCycle = false is ideal when you want users to “reset” into a new full cycle.
Downgrade
When switching to a cheaper plan:
The change never happens immediately.
The new plan activates at the next renewal.
The current billing cycle continues uninterrupted.
expireDate does not change.
No proration or credit calculation applies.
Note: saveCycle is ignored for downgrades because downgrades always activate at the next renewal.
You can learn more about plan changes 👉 here
Currency Matching Rule
The new plan must use the same currency defined for the subscriber’s country. Example: A subscriber using USD in the USA can only switch to another USD plan.
Request Parameters
subscriberId
Required
The email or phone number the user provided when starting the subscription.
packageId
Required
The ID of the current active package. A successful response is returned only if the user has a subscription for this package.
newPackageId
Required
Package ID to switch to
changeType
Required
upgrade or downgrade
saveCycle
Required
true → Upgrade with cycle continuity
false → Upgrade with a new billing cycle
(This parameter has no effect for downgrades)
subscriberIpAddress
Required
Subscriber’s IP address
redirectUrl
Optional
Required for 3DS flows, user is redirected here after authentication
platform
Optional
Example: web, ios, android
Sample Request
You can find your AccessKey and AccessSecret in the Zotlo Panel under Developer Tools → API Keys
Sending ApplicationId is optional.
Successful Response
Key Response Fields
profile
Updated subscription profile after the change
package
Details of the new package
response.isSuccess
Indicates whether any required payment was successful
card
Card information used for upgrade
expireDate
Updated expire date (only changes for successful upgrades)
Failed Response
All failed responses follow the same standard error format. (See: Error Handling)
Last updated

