> This page is for NT Prop.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://partner.ninjatrader.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://partner.ninjatrader.com/_mcp/server.

# Partner Account Lock and Unlock

> How a partner organization locks a Live funded subaccount to process a payout, and unlocks a subaccount so a trader can resume, from the Admin Dashboard or the API

## At a Glance

* When enabled for your organization, partner lock and partner unlock are a linked pair of controls on a Live funded subaccount: use **partner lock** to freeze a subaccount's trading while you process a payout, and **partner unlock** to let a trader resume.
* Locking puts the subaccount in liquidate-only mode (`LiquidateOnlyModeImmediately`), recorded with the `PartnerPayoutLock` reason code: the account can close open positions but can't open new ones.
* Unlocking clears a system risk lock (`RestrictedRiskRestriction`) or a partner lock (`PartnerPayoutLock`), but not compliance, anti-money-laundering, treasury, W-8, or account-closure locks.
* Unlocking doesn't automatically restore trading. If the condition that locked the account still applies, the risk engine re-locks it right away.
* Confirm results from the response body, not the HTTP status: a rejected lock or unlock returns an `HTTP 200` with an `errorText`. A subaccount is locked when its `adminAction` is `LockTradingImmediately`, `LiquidateOnlyModeImmediately`, or `LiquidateImmediately`, or when its `liquidateOnly` timestamp is set, so check both fields. Locks differ in severity: `LiquidateOnlyModeImmediately` and a set `liquidateOnly` still allow closing orders, while `LockTradingImmediately` and `LiquidateImmediately` reject every order.
* When a subaccount's trading permission is approved, the system can automatically run a requalification reset, re-anchoring the subaccount's maximum net liquidation value (the high-water mark for its trailing drawdown) and rebuilding its risk status. This is separate from a manual unlock, and it never acts on a compliance or partner lock.

## Partner Lock and Unlock in the Subaccount Lifecycle

Some locking and unlocking is automatic and needs no action from you: the system locks a subaccount when it breaches a risk rule and auto-liquidates, and it can unlock a risk-locked subaccount automatically when its trading permission is approved. Partner lock and partner unlock cover what the automation doesn't.

Partner lock and partner unlock are a linked pair of controls an organization administrator can apply to a Live funded subaccount in their own organization. They share the same gating and the same Admin Dashboard panel, and they have opposite effects: one applies a lock, the other clears one.

Each covers a different need:

* Use **partner lock** to freeze a subaccount's trading while you process a payout. It puts the account in liquidate-only mode, so the trader can close open positions but can't open new ones.
* Use **partner unlock** to let a trader resume. It clears a system risk lock (for the cases the automatic requalification reset on trading-permission approval doesn't cover) or it reverses a partner lock your organization set.

## Locking or Unlocking in Bulk

In the Admin Dashboard, you can select multiple subaccounts and run lock or unlock on all of them at once. The action runs on every selected account, and the confirmation reports how many accounts it's acting on.

A server rejection is reported per account, and the run continues to the next account, so one rejected account doesn't stop the rest. Only a client-side validation error stops the run. The confirmation closes when the run finishes, even if every account was rejected, so verify the outcome by re-checking each subaccount's `adminAction` rather than assuming the run succeeded.

## Which Locks You Can Manage

You can unlock the two types of locks: a system risk lock (reason code `RestrictedRiskRestriction`) and a partner lock (reason code `PartnerPayoutLock`) you already set.

Compliance, anti-money-laundering, treasury, W-8, and account-closure locks are rejected, and so is a lock recorded only with the generic `Other` code. To resolve one of those locks, contact NinjaTrader Support.

## Automatic Requalification Reset

When a subaccount's trading permission is approved, the system checks whether the subaccount needs to requalify and, if it does, runs a requalification reset automatically. This is the automatic counterpart to a manual unlock: rather than only clearing a lock, it rebuilds the subaccount's risk status so the trader can return to trading.

The reset re-anchors the subaccount's maximum net liquidation value (`maxNetLiq`), the high-water mark its trailing drawdown is measured from, and clears the stepped cooldown and the auto-liquidation counters. On Live, it also clears emergency auto-liquidation mode.

The reset applies to an eligible subaccount: one under a system risk lock (`RestrictedRiskRestriction`), one the risk engine is holding to closing orders (its `liquidateOnly` timestamp is set), or one whose maximum net liquidation value has gone stale, such as after a fund transfer. It never resets a subaccount under a compliance, anti-money-laundering, treasury, W-8, account-closure, or partner lock.

A partner lock won't clear automatically: the requalification reset never acts on one, so to release it, unlock it yourself.

The reset runs only when the subaccount's current net liquidation value is within \$1 of its required starting balance (the transfer amount set on the subaccount request). Outside that range, the reset is skipped and the account is handled manually, so contact NinjaTrader Support if a subaccount that should have requalified didn't.

## How to Lock and Unlock a Live Subaccount

### Prerequisites

Before you start, make sure you have the following:

* The feature enabled for your organization. NinjaTrader enables it per organization, so work with the NinjaTrader Support team to turn it on. Organization administrators can't enable it themselves.
* Organization administrator access.
* The Live funded subaccounts you want to manage, which must be in your own organization.

### Lock a Live Subaccount

A partner lock puts a funded subaccount in liquidate-only mode (`LiquidateOnlyModeImmediately`): the account can close open positions but can't open new ones. It's recorded with the `PartnerPayoutLock` reason code, which marks it as your organization's own lock, separate from a system risk lock or a compliance lock.

A partner lock never overrides a stronger lock. The check reads the subaccount's `adminAction`: if it's already `LockTradingImmediately` or `LiquidateImmediately`, the request is rejected with `Account has an existing lock - contact Tradovate`. Work with NinjaTrader Support to resolve it. Locking a subaccount that's already in liquidate-only mode has no further effect, and its response is indistinguishable from a successful lock: an `HTTP 200` carrying the account's risk status, with no `errorText`.

#### Admin Dashboard

1. From the Admin Dashboard on **Live**, click **Query Builder** on the left pane.
2. In **Repository Name**, select **accounts** from the dropdown.
3. Run the query and select the subaccounts you want to lock.
4. Click **Actions** and select **Lock (partner)**.
5. Review the current lock state, add an optional reason, and click **Submit**.

#### API

1. Call [`organizationAdminLockAccount`](/prop/api/rest-api-endpoints/risks/organization-admin-lock-account).
2. Enter the `accountId` of the account you want to lock.
3. (Optional) Enter a reason (up to 8,192 characters) to be recorded with the action.

**Production**: `https://live.tradovateapi.com/v1/accountRiskStatus/organizationadminlockaccount`\

**Staging**: `https://live-api.staging.ninjatrader.dev/v1/accountRiskStatus/organizationadminlockaccount`

Send a POST request with this JSON body:

```json
{
  "accountId": 131838,
  "reason": "Held for payout processing"
}
```

### Unlock a Live Subaccount

A partner unlock clears an eligible lock so the trader can attempt to resume. It clears two kinds of locks:

* A **system risk lock** (reason code `RestrictedRiskRestriction`) applied by auto-liquidation or a drawdown or evaluation breach
* A **partner lock** (reason code `PartnerPayoutLock`) that your organization set itself

It doesn't clear compliance, anti-money-laundering, treasury, W-8, or account-closure locks. A request against one of those is rejected, and you contact NinjaTrader Support to resolve it. Unlocking a subaccount that has no active lock is also rejected, with an `errorText` noting there's no active lock.

> **Info**
>
> Unlocking doesn't by itself restore trading. If the risk condition that locked the account still applies, the risk engine re-locks the account immediately, and the trader may still need trading permission and funding.

#### Admin Dashboard

1. From the Admin Dashboard on **Live**, click **Query Builder** on the left pane.
2. In **Repository Name**, select **accounts** from the dropdown.
3. Run the query and select the subaccounts you want to unlock.
4. Click **Actions** and select **Unlock (partner)**.
5. Review the current lock state, add an optional reason, and click **Submit**.

After you confirm, the Admin Dashboard reports whether the unlock was submitted and repeats that unlocking alone doesn't restore trading.

#### API

1. Call [`organizationAdminUnlockAccount`](/prop/api/rest-api-endpoints/risks/organization-admin-unlock-account).
2. Enter the `accountId` of the account you want to unlock.
3. (Optional) Enter a reason (up to 8,192 characters) to be recorded with the action.

**Production**: `https://live.tradovateapi.com/v1/accountRiskStatus/organizationadminunlockaccount`\

**Staging**: `https://live-api.staging.ninjatrader.dev/v1/accountRiskStatus/organizationadminunlockaccount`

Send a POST request with this JSON body:

```json
{
  "accountId": 131838,
  "reason": "Unlock after manual review"
}
```

### Confirming the Result

A rejected lock or unlock request doesn't come back as an error: it returns an `HTTP 200` with an `errorText` field explaining why, and leaves the account's risk status unchanged.

> **Warning**
>
> Since a rejected lock or unlock comes back as an `HTTP 200` instead of an error, check the response body for `errorText` rather than relying on the HTTP status. A `200` alone doesn't confirm the action succeeded.

To confirm a subaccount's current lock state, read the account risk status the lock and unlock responses return, or fetch it with [`accountRiskStatusList`](/prop/api/rest-api-endpoints/risks/account-risk-status-list). Two fields carry it, and you need both:

* `adminAction`: the subaccount carries an admin or partner lock when this is `LockTradingImmediately`, `LiquidateOnlyModeImmediately`, or `LiquidateImmediately`. Any other value (including `Normal`, `PlaceAutoLiqOnHold`, and `DisableAutoLiq`) or an empty `adminAction` means no such lock is in place.
* `liquidateOnly`: a timestamp the risk engine sets when it holds the account to closing orders. It works independently of `adminAction`: while it's set, new orders are rejected even if `adminAction` reads `Normal`, and a partner unlock doesn't clear it.

The reason codes that identify where a lock came from (`PartnerPayoutLock`, `RestrictedRiskRestriction`, and the compliance codes) are recorded with the action and visible in the Admin Dashboard, but the API doesn't return them, so you can't use them to determine lock state.

## Related Account Controls

Partner lock and unlock are the self-service actions for Live funded subaccounts. They're separate from two other controls:

* **Change Lock** ([`setAdminAutoLiqAction`](/prop/api/rest-api-endpoints/risks/set-admin-auto-liq-action)) is the account-lock action in Demo. For the Change Lock steps, see [Lock and Halt Individual Accounts](/prop/overview/prop-firm-management/halt-trading/immediate-trading-halts#lock-and-halt-individual-accounts).
* [Manual lockouts](/prop/overview/prop-firm-management/risk-management-setup#manual-lockouts) are a trader's self-lockout, not a partner action.