> This page is for NT Connect.

> 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.

# Operator ID (customTag50) and Passthrough

Every order carries an operator ID: a value that identifies who placed it. Exchanges treat it as regulatory information, so NinjaTrader attaches one to every order for you.

The `customTag50` field on order requests is how that value gets set. How you use it depends on how your organization is configured. There are two mechanisms, and a user uses one or the other, never both:

| Mechanism   | Who supplies the operator ID                        | What you send                                            |
| ----------- | --------------------------------------------------- | -------------------------------------------------------- |
| Allow-list  | You                                                 | `customTag50` on every order, matching an approved value |
| Passthrough | NinjaTrader, from the identity of the account owner | Nothing. Omit `customTag50`                              |

If neither is configured for your user, NinjaTrader derives the operator ID from the user who placed the order, and you omit `customTag50`.

`customTag50` is optional in the

[API reference](/connect/api/rest-api-endpoints/orders/place-order)

because it's only required when an allow-list is configured for your user. Once an allow-list exists, it's required on every order.

The field applies to order placement, modification, cancellation, liquidation, and order strategy requests.

## Prerequisites

* Know which mechanism your organization uses. If you're not sure, ask your NinjaTrader contact.
* Allow-list: NinjaTrader configures the approved operator IDs for your user.
* Passthrough: NinjaTrader enables it on your organization administrator user. Passthrough doesn't apply to other users.

## How Each Configuration Behaves

The table covers a single user. Requests are checked against the allow-list first, using exactly what you sent. Passthrough only fills a value in afterward, so it can't rescue a request that the allow-list check already denied.

| User configuration         | You send `customTag50`       | Result                                                                    |
| -------------------------- | ---------------------------- | ------------------------------------------------------------------------- |
| Neither                    | No                           | Allowed. NinjaTrader derives the operator ID                              |
| Neither                    | Yes                          | Denied                                                                    |
| Allow-list                 | No                           | Denied                                                                    |
| Allow-list                 | Yes, value is on the list    | Allowed                                                                   |
| Allow-list                 | Yes, value isn't on the list | Denied                                                                    |
| Passthrough only           | No                           | Allowed. NinjaTrader sets the operator ID to the account owner's identity |
| Passthrough only           | Yes                          | Denied                                                                    |
| Allow-list and passthrough | No                           | Denied. Passthrough never applies                                         |
| Allow-list and passthrough | Yes, value is on the list    | Allowed, using your value                                                 |

Passthrough and the allow-list are mutually exclusive by design. A user with both must send the value on every order, so passthrough never fills anything in. Ask NinjaTrader for one mechanism, not both.

A denied request returns an access-denied error. Nothing is placed.

## Values You Can Send

* Up to 64 characters of printable text. Stick to letters, digits, and common punctuation.
* Matching against the allow-list is exact and case-sensitive.
* Omit the field instead of sending an empty value. Authorization treats an empty value as not sent, but under passthrough an empty value stops NinjaTrader from filling in the operator ID.

## Examples

Allow-list: send an approved operator ID on every order.

```js
const URL = 'https://live.tradovateapi.com/v1'
const body = {
    accountSpec: yourUserName,
    accountId: yourAcctId,
    action: "Buy",
    symbol: "MYMM1",
    orderQty: 1,
    orderType: "Market",
    customTag50: "OPERATORID001", //must match a value NinjaTrader approved for your user
    isAutomated: true
}

const response = await fetch(URL + '/order/placeorder', {
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Authorization': `Bearer ${myAccessToken}`,
    },
    body: JSON.stringify(body)
})
```

Passthrough: omit the field. NinjaTrader fills in the operator ID.

```js
const URL = 'https://live.tradovateapi.com/v1'
const body = {
    accountSpec: endCustomerUserName,
    accountId: endCustomerAcctId,
    action: "Buy",
    symbol: "MYMM1",
    orderQty: 1,
    orderType: "Market",
    isAutomated: true //no customTag50
}

const response = await fetch(URL + '/order/placeorder', {
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Authorization': `Bearer ${myOrgAdminAccessToken}`,
    },
    body: JSON.stringify(body)
})
```

## Troubleshooting

| What you see                                           | Likely cause                                                                   | What to do                                                              |
| ------------------------------------------------------ | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| Every order is denied and you never send `customTag50` | An allow-list is configured for your user                                      | Send an approved value, or ask NinjaTrader to remove the allow-list     |
| Orders are denied when you send `customTag50`          | No allow-list is configured, or the value doesn't match exactly (case, spaces) | Omit the field, or send a value NinjaTrader approved                    |
| Passthrough is enabled and orders are denied           | An allow-list is also configured, or you're sending `customTag50`              | Ask NinjaTrader to keep one mechanism. Omit the field under passthrough |

## Next Steps

* See the

  [place order reference](/connect/api/rest-api-endpoints/orders/place-order)

  for the request schema.
* To enable passthrough, add or change an allow-list, or remove one, contact your NinjaTrader representative.