> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://partner.ninjatrader.com/eval/overview/prop-firm-management/changing-users-from-demo-to-live/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://partner.ninjatrader.com/_mcp/server. # Changing Users Between Demo and Live By default, a trader is **non-professional** while evaluating on a demo account (also known as a *sim* or *simulation* account) and becomes **professional** when they move to a live account. This guide walks you through moving a user in either direction: from demo to live when they pass their evaluation, and from live back to demo when their live trading ends. Each move updates the user's classification, along with their trading permissions, market data, and entitlements. ## Prerequisites Before you start, make sure you have the following: * The user ID of the trader graduating to live * The trader's required documents: * Power of Attorney (POA) form * Government-issued ID * Proof of address * The `marketDataSubscriptionPlanIds` for the professional market data subscriptions you'll assign * To find these, see the [`marketDataSubscriptionPlan/list` endpoint](/api/rest-api-endpoints/fees/market-data-subscription-plan-list). * The `entitlementId` for the Live+ entitlement (`85` in Production) * To find this, see the [`entitlement/list` endpoint](/api/rest-api-endpoints/configuration/entitlement-list). * Your organization's `_DATA` billing account ID * A plan for how payment will be handled for the user's professional market data subscriptions ## Changing a User from Demo to Live To move a user from demo to live and classify them as professional, follow these steps using the **Live** domain: **Step 1.** Submit a subaccount request for the user. #### Admin Dashboard 1. From the Admin Dashboard (**Live** domain), click **Eval Functions** on the left pane. 2. Click **Add Subaccount**. 3. Fill out the required fields, upload the required documents (POA form, Government-issued ID, and Proof of address), and select an auto-liquidation profile for the new account. You can create up to five subaccounts per user. #### API 1. Call [`createpartnersubaccountrequest`](/api/rest-api-endpoints/users/create-partner-subaccount-request) with the user's details (name, address, citizenship, and tax ID or national ID). You can optionally include an `autoLiqProfileId` to assign a specific [auto-liquidation profile](/overview/prop-firm-management/risk-management/pre-trade-risk#auto-liquidation-profile) to the new account; if omitted, the system uses your organization's default. Note the returned `requestId`, which you'll use as the `subAccountRequestId` in subsequent calls. > **Note** > > If you've already uploaded the user's documents via the `submitcustomerapplicationdocument` endpoint, you can link them to the subaccount request by providing the `documentId` fields. 2. Call [`submitpartnersubaccountdocument`](/api/rest-api-endpoints/users/submit-partner-subaccount-document) to upload each required document (POA form, Government-issued ID, and Proof of address). Repeat for each document. 3. Poll [`getpartnersubaccountrequeststatus`](/api/rest-api-endpoints/users/get-partner-subaccount-request-status) until the status reaches `Approved` or `Denied`. Intermediate statuses include `Pending`, `Preapproved`, `InReview`, and `InAMLReview`. The subaccount request is reviewed by the New Accounts team. `Preapproved` requests receive an account number immediately and the subaccount is tradable right away. Outstanding document requirements must be met within 14 days, or the account is locked automatically. `InReview` requests are prioritized for manual processing. Allow up to two business days for review. **Step 2.** Once the subaccount request is approved, grant trading permissions to the user. #### Admin Dashboard 1. From the user's Account entity card, click **Actions**. 2. Click **Grant Trading Permission**. 3. In **Account Controller Name**, enter the first and last name of the trader (POA/account controller) who will be trading the account (max 64 characters). 4. In **Account Controller Email**, enter the email address of the trader. 5. Click **Send**. #### API 1. Call the [`requestTradingPermission` endpoint](/api/rest-api-endpoints/users/request-trading-permission). * For `accountId`, enter the account ID. * For `ctaContact`, enter the first and last name of the trader (POA/account controller) who will be trading the account (max 64 characters). * For `ctaEmail`, enter the email address of the trader. After the trading permission request is approved (typically the same day), the user is automatically converted to professional status and their existing non-professional market data is archived. **Step 3.** Add at least one professional market data subscription (CME, CBOT, COMEX, or NYMEX). #### Admin Dashboard 1. From the user's User entity card, click **Actions** > **Manage User**. 2. In the Manage User window, click the **Market Data** field and select the market data plan you want to assign to the user, then click **+** (the plus sign) to add it. 3. Click the **Renewal Account** field and select your `_DATA` account. 4. Click **Save**. #### API 1. Call the [`addMarketDataSubscription` endpoint](/api/rest-api-endpoints/users/add-market-data-subscription) and use your organization's `_DATA` billing account ID for the `accountId`. > **Note** > > It's your responsibility to coordinate payment with the user for professional market data subscriptions. **Step 4.** Switch the user's entitlement from Sim+ to Live+. #### Admin Dashboard 1. From the user's User entity card, click **Actions** > **Manage User**. 2. In the Manage User window under **Add-ons**, click the **X** next to **Sim+** to remove the Sim+ entitlement. 3. Click the **Add-ons** field, select **Live+**, then click **+** (the plus sign) to add the Live+ entitlement. 4. Click the **Renewal Account** field and select your `_DATA` account. 5. Click **Save**. #### API 1. Call the [`cancelEverything` endpoint](/api/rest-api-endpoints/users/cancel-everything). Set only `userPlugins` to `true` and all other fields to `false`: ```json { "userIds": [123456], "tradovateSubscriptions": false, "tradingPermissions": false, "userPlugins": true, "marketDataSubscriptions": false } ``` > **Warning** > > Setting `userPlugins` to `true` expires **all** of the user's active add-ons (not just Sim+), so re-add any others the user should keep. Don't set the other fields to `true` unless you intend to cancel the user's subscriptions, permissions, or market data. For fully deactivating an inactive user, see [Revoke and Cancel Users and Accounts](/overview/prop-firm-management/revoke-and-cancel-users-and-accounts). 2. Call the [`addEntitlementSubscription` endpoint](/api/rest-api-endpoints/users/add-entitlement-subscription). For `entitlementId`, use the Live+ entitlement ID (`85` in Production). > **Info** > > For `accountId`, use your organization's `_DATA` billing account ID, not the user's account ID. > **Note** > > It's your responsibility to coordinate payment with the user for entitlements. **Step 5.** (Optional) Configure the user's risk settings using your organization's master account. > **Warning** > > You must use your organization's master account to perform this step. #### Admin Dashboard 1. From the user's Account entity card, expand the User Account Auto Liq entity card. 2. In the results pane, click **Show Entity Card** (the eyeball icon) on the user's existing User Account Auto Liq. 3. Fill out the required fields. 4. Click **Save**. #### API 1. Call the [`userAccountAutoLiq/update` endpoint](/api/rest-api-endpoints/risks/user-account-auto-liq-update). ## Changing a User from Live to Demo To move a user from live back to demo and classify them as non-professional, follow these steps using the **Live** domain: > **Warning** > > Changing a user from professional to non-professional happens immediately, but changing a user from non-professional to professional requires approval. **Step 1.** Change the user's classification to non-professional. > **Warning** > > Only the master account owner can change a user's classification. Organization administrators cannot, whether through the API or the Admin Dashboard. #### Admin Dashboard 1. From the user's User entity card, click **Actions** > **Change User Status**. 2. Clear the **Professional Status** checkbox and click **Submit**. #### API 1. Call [`changeUserStatus`](/eval/api/rest-api-endpoints/users/change-user-status) with the user's ID, their `status`, and `professional` set to `false`: ```json { "userId": 123456, "status": "Active", "professional": false } ``` `status` is required, and the endpoint writes whatever you send. This example assumes an `Active` user, so send the status the user already has — sending `Active` for a `TemporaryLocked` or `Closed` user would reactivate them. The change is recorded in the audit trail. It doesn't move the user's market data or entitlements for you, so expire their professional market data and reassign Sim+ yourself (Steps 2 and 3). The downgrade only works once the user no longer holds an active live subaccount (an approved, non-archived trading permission); if you aren't the master account owner, or the user still holds one, the request is rejected and the classification is unchanged. Attempts to set a user to professional through this flow are also refused. **Step 2.** Expire the user's professional market data subscriptions. Call the [`expireMarketDataSubscription` endpoint](/api/rest-api-endpoints/users/expire-market-data-subscription) to expire the user's professional market data. Expiring market data from the Admin Dashboard is limited to organization administrators who have a `_DATA` account assigned, so the API is the standard path for this step. **Step 3.** Switch the user's entitlement from Live+ to Sim+. #### Admin Dashboard 1. From the user's User entity card, click **Actions** > **Manage User**. 2. In the Manage User window under **Add-ons**, click the **X** next to **Live+** to remove the Live+ entitlement. 3. Click the **Add-ons** field, select **Sim+**, then click **+** (the plus sign) to add the Sim+ entitlement. 4. Click the **Renewal Account** field and select your `_DATA` account. 5. Click **Save**. #### API 1. Call the [`cancelEverything` endpoint](/api/rest-api-endpoints/users/cancel-everything). Set only `userPlugins` to `true` and all other fields to `false`: ```json { "userIds": [123456], "tradovateSubscriptions": false, "tradingPermissions": false, "userPlugins": true, "marketDataSubscriptions": false } ``` > **Warning** > > Setting `userPlugins` to `true` expires **all** of the user's active add-ons (not just Live+), so re-add any others the user should keep. Don't set the other fields to `true` unless you intend to cancel the user's subscriptions, permissions, or market data. For fully deactivating an inactive user, see [Revoke and Cancel Users and Accounts](/overview/prop-firm-management/revoke-and-cancel-users-and-accounts). 2. Call the [`addEntitlementSubscription` endpoint](/api/rest-api-endpoints/users/add-entitlement-subscription). For `entitlementId`, use the Sim+ entitlement ID (`82` in Production). > **Info** > > For `accountId`, use your organization's `_DATA` billing account ID, not the user's account ID. Re-adding Sim+ restores the user's non-professional market data (`CMEGROUP_TOP`) by default.