Calculate Plan Upgrade

View as Markdown
### Calculate the cost of upgrading to a different subscription plan. **Available to:** All authenticated users **Environments:** Live **[Rate Limit](/overview/core-concepts/rate-limits):** No endpoint-specific limit Preview what switching the calling user's Tradovate subscription to another plan would cost before committing to the change. This is a read-only calculation — it doesn't modify the subscription or charge anything. The response returns: - `estimatedAmount` — the new plan's price minus any prorated refund for the unused portion of the current plan - `refund` — the prorated credit from the current plan, when one applies - `current` — the user's current subscription - `startDate` and `expirationDate` — the period the new plan would cover **Field Details** The `tradovateSubscriptionPlanId` identifies the target plan. Use the `/tradovateSubscriptionPlan/list` endpoint to retrieve available plan IDs. The calculation applies to the authenticated user's own subscription. **Common Failure Scenarios** - Target plan doesn't exist or isn't available - Target plan is the user's current plan - Target plan is a trial and the user already had one, or has an active live account - Switch would be a downgrade, which isn't allowed through this flow **Error Messages** | `errorText` | Trigger | |-------------|---------| | `"Membership plan is not available."` | `tradovateSubscriptionPlanId` doesn't match an available plan | | `"Switch to the same plan is not allowed. Your membership will be renewed at the end of period"` | Target plan is the current plan (`errorCode: ConflictWithExisting`) | | `"Gap between subscriptions are not allowed"` | Current subscription expires before the upgrade would start (`errorCode: ConflictWithExisting`) | | `"Trial with active live account is not allowed"` | Target is a free trial plan and the user has an active live account (`errorCode: SingleTrialOnly`) | | `"Only one trial is allowed"` | Target is a free trial plan and the user already had a trial (`errorCode: SingleTrialOnly`) | | `"Cannot downgrade from Lifetime plan"` | Current plan is a lifetime membership (`errorCode: DowngradeNotAllowed`) | | `"Please contact Customer Service about downgrading the plan"` | New plan's price minus the refund is negative (`errorCode: DowngradeNotAllowed`) | **Related Endpoints** - Use [`addTradovateSubscription`](/api/rest-api-endpoints/users/add-tradovate-subscription) to apply a plan change after previewing the cost.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Request

This endpoint expects an object.
tradovateSubscriptionPlanIdlongRequired

Response

PlanUpgradeResponse
startDateobject
expirationDateobject
errorTextstring<=8192 characters

Non-empty if the request failed

errorCodeenum
ConflictWithExisting, DowngradeNotAllowed, IncompatibleCMEMarketDataSubscriptionPlans, IncorrectPaymentMethod, InsufficientFunds, PaymentProviderError, PlanDiscontinued, SingleTrialOnly, Success, UnknownError
estimatedAmountdouble
currentobject
refunddouble