Tradovate Order Rejected: Every Error Code and Fix (2026)

You’ve got a signal, you hit send, and instead of a fill you see red. A Tradovate order rejected message shows up more often than most traders expect, and the wording rarely explains what actually went wrong. Tradovate routes most of its order flow through CQG’s clearing and risk engine, and CQG alone documents more than 140 distinct reject codes. Most traders only ever run into about 25 of them.

This isn’t a general troubleshooting post. It’s a working lookup table: every code below comes from CQG’s own API documentation, Tradovate’s community forum, or Tradovate’s help center, and each one comes with the fix that actually clears it. Where I couldn’t confirm Tradovate’s exact on-screen wording, I’ve said so instead of guessing.

Key Takeaways

  • Most Tradovate rejections trace back to CQG’s routing layer, covering codes 1013 through 1253 for margin, risk limits, and price bands.
  • “Maximum order quantity” and “Liquidation Only” are the two most-reported rejections on Tradovate’s own community forum.
  • API and webhook orders fail for different reasons than manual clicks. Expired tokens, session caps, and rate limits cause most of them.
  • CME futures volume hit a record 33.2 million contracts a day in May 2026, up 15% year over year, according to CME Group. More volume means more traders hitting these codes for the first time.

Why Does Tradovate Reject Orders in the First Place?

Tradovate doesn’t reject orders at random. The rejection almost always starts one layer down, at CQG, the routing and risk engine Tradovate runs on top of. When an order fails a margin check, a position-limit check, or a price-band check, CQG returns a numeric reject code and a plain-text reason, and Tradovate surfaces that reason inside the Orders module.

Why does that layering matter? Because it tells you who can actually fix the problem. A rejection isn’t a bug in Tradovate’s platform. It’s the risk engine doing exactly what it’s configured to do, whether that configuration comes from your own risk settings, your prop firm’s rules, or the exchange itself. Knowing which layer rejected the order tells you who can fix it: you, your prop firm, or nobody, because the exchange is simply closed.

CME Futures Volume Is Climbing Fast Horizontal bar chart. 2025 Full-Year ADV: 28.1 million contracts, up 6% year over year. May 2026 ADV: 33.2 million contracts, up 15% year over year, a record. June 2026 ADV: 30.6 million contracts, up 19% year over year, a new June record. Data: CME Group, 2026. CME Futures Volume Is Climbing Fast Average daily contract volume (ADV), all products 2025 Full-Year ADV 28.1M (+6%) May 2026 ADV (record) 33.2M (+15% YoY) June 2026 ADV (record) 30.6M (+19%) Data: CME Group (2026)
Data: CME Group, 2026.

What Triggers a Margin or Risk-Limit Rejection on Tradovate?

Margin and risk-limit codes are what you’ll hit most, and they all mean roughly the same thing: this order, combined with your open positions, would put more at risk than your account or your prop firm allows. Tradovate’s own community forum shows traders hitting this as a plain message: “Your maximum order quantity has been met. Please change your quantity to place the order.” Sometimes it comes with a specific rule reference, like “Limit: 0 Current: 1. Scope: NQ Rule #555.”

CodeMessageFix
1013Requested trade exceeds the account single trade margin limitReduce contract size, or request a risk-limit increase in Account Settings
1014Account loss today (open trade equity) is greater than the loss limitYou’ve hit a daily loss limit. Trading is blocked until reset, usually next session
1015Margin for this order plus current fills/positions exceeds available cashClose an existing position first, or add funds/collateral
1016Working orders’ worst-case P/L exceeds available marginCancel resting orders you don’t need before placing a new one
1017Account is in liquidation-only modeYou can only close positions, not open new ones. Contact your broker or prop firm
1101Calculated margin for current positions exceeds available fundsSame root cause as 1015. Free up margin or reduce size
1109Risk parameters missing for the accountConfiguration issue on the account. Contact Tradovate support or your prop firm
1110Current account balance is negativeDeposit funds before placing new orders
1124Master account has negative purchasing powerAccount-level block, usually prop-firm side. Contact your funding provider
1140 / 1141Order not within risk parameters set for the firmYour prop firm’s risk rules, not Tradovate’s. Check their contract or loss limits
1182Order not within risk parameters set for the customer’s accountPersonal risk settings in Tradovate. Check Risk Settings under Account Settings

I’ve hit code 1013 and the “maximum order quantity” message more than any other rejection. It almost always happened on days I sized up a trade after a strong morning and forgot my per-trade limit was still set from a smaller account. The fix took about ten seconds once I found it: open Application Settings, click the Accounts tab, then Risk Settings. That screen shows your current max position size, and you can request a change right from there.

Want to set this up correctly before you connect an automated strategy? PickMyTrade’s Tradovate automation guide walks through it step by step.

Why Did Tradovate Reject My Order Price?

These rejections fire when the price you submitted doesn’t make sense to the exchange. Usually it’s a typo, a stale quote, or a tick-size mismatch, not a risk problem. Tradovate even has a dedicated help article for this exact scenario, titled “Order Price Is Outside Bands.”

CodeMessageFix
1105No current ask availableMarket is thin or between sessions. Wait for a live quote
1106No current bid availableSame as above, on the buy side
1156Price is not valid for this instrumentUsually a tick-size violation. ES trades in 0.25 increments, so 4150.10 gets rejected
1180Order price is outside the allowed range for the contractPrice band violation. Re-check the current market price before resubmitting

The single most common trigger is a missing decimal point. Type 415025 instead of 4150.25, and you’ve priced an order tens of thousands of points away from the market. The exchange blocks it instantly. Building automated alerts? This is the exact bug class that breaks TradingView-to-broker webhooks when a strategy script formats price as a raw integer instead of a decimal.

Close-up of a trading platform screen showing candlestick charts and order book data

Why Is My Order Rejected Near Contract Expiration or Outside Trading Hours?

Of every rejection category I’ve tracked in my own trading, expired-contract rejections cause the most repeat mistakes. The fix, switching to the front-month contract, doesn’t stop the underlying habit of leaving an alert on a continuous contract symbol from causing it again next quarter.

The exact wording Tradovate uses is: “Liquidation Only. Contract is about to be expired. Please contact the Trade Desk.” It fires when a TradingView alert still points at a continuous contract symbol, like ES1! or NQ1!, instead of the actual front-month contract, like ESU2026, and the underlying contract has entered its expiration window.

CodeMessageFix
1074Specified market is not valid or is closedCheck the exchange calendar. You’re trying to trade during a holiday closure
1076Order rejected by exchange officialsExchange-level block, not fixable from your end. Contact the Trade Desk
1077Order is expiredThe order’s time-in-force lapsed before it could fill. Resubmit
1080Exchange is in trading halt modeWait for the halt to lift. Check the exchange status page
1142Cannot place order outside omnibus account trading timesSession-hours restriction set by your prop firm or clearing firm
1228 / 1229Order exceeds the Last Trading Date (LTD) limitYou’re trading a contract too close to, or past, its expiration date. Roll to the next month

Rollover is entirely predictable, so why wait to get rejected? Check Tradovate’s own contract rollover schedule before quarterly expiration weeks in March, June, September, and December, and you’ll avoid this one for good.

Duplicate Orders, Wash Trades, and Self-Match Rejections

These rejections aren’t about your account’s risk. They’re about market-integrity rules that apply to everyone. Code 1128, “Cannot save the order because another order with the same Client Order ID already exists,” is a duplicate-order rejection. It’s almost always a software bug: your platform or automation tool sent the same order twice with an identical ID, often after a slow API response made the first attempt look like it failed.

Wash trades are a different, more serious category. Tradovate’s community forum cites CME Rule 534 directly: offsetting buy and sell orders placed to avoid genuine market risk are prohibited, “whether you did know or should have reasonably known.” This most often catches traders running two strategies, or two funded accounts, that unintentionally offset each other on the same instrument. CME’s Self-Match Prevention feature can auto-block matches between commonly-owned accounts before they ever become a rule violation, and it’s worth enabling if you run multiple accounts under one entity.

Why Do API and Webhook Orders Get Rejected?

This category matters most if you trade through a webhook, a bot, or any tool that talks to Tradovate’s API directly instead of through the Trader UI, which includes anyone running TradingView alerts through PickMyTrade. Automated orders fail for infrastructure reasons manual clicks never hit.

CauseWhat you’ll seeFix
Access token expired401 “Access is denied”Tradovate access tokens expire roughly every 80 minutes. Call /auth/renewAccessToken, don’t reuse a stale token
Cancelling a completed order401 “Access is denied”The order already filled or was archived. Refresh order status before cancelling
Too many concurrent connections408 “Request Timeout”Standard subscriptions allow 1 connection, dual allows 2. Logging into the Trader UI while your bot is also connected can trigger this
Rate limit exceededRequests silently stop processingTradovate caps API usage at roughly 5,000 requests/hour. Throttle your polling interval
Session limit exceededUnstable or dropped API sessionTradovate allows 2 active sessions per account. A 3rd login, phone, browser, or bot, can destabilize the connection
Order rate throttle1139 “Order rate has exceeded the configured maximum for the account”Your strategy is firing orders faster than the account’s rate limit. Add a cooldown between signals

This behavior comes straight from Tradovate’s own developer community, where traders have documented each of these failure modes in detail.

Here’s the pattern worth remembering: manual-trading rejections are almost always about risk, like margin or position size. Automation rejections are almost always about plumbing: auth, connections, request pacing. If your webhook orders keep getting rejected and your manual orders on the same account don’t, stop staring at your risk settings. Start looking at your token refresh logic and your request frequency instead.

Person at a desk looking stressed while reviewing a declining chart on a laptop screen

Why Does Your Prop Firm Reject Orders That Tradovate Would Allow?

If you’re trading a funded account, you’re stacked under two risk layers: Tradovate and CQG’s exchange-level checks, plus your prop firm’s own contract and drawdown rules. In practice, the second layer rejects orders far more often.

FundedNext’s own help center lists the common causes plainly: an unsigned Tradovate agreement blocking data, contract-size limits (their example is a $25,000 account capped at 2 minis or 20 micros), auto-liquidation after a daily or max-loss breach, and trading outside instrument hours or during holiday closures. Apex works the same way. Micros and minis count equally toward the contract cap, so a trader who sizes a position in micros without checking the combined total can still trip the “maximum order quantity” rejection.

What Happens to Topstep Combine Traders Lollipop chart. Combines Reaching Funded Level: 16.8%. Participants Advancing to Funded at least once: 51.8%. Funded Traders Receiving a Payout: 33.3%. Data: Topstep, 2025. What Happens to Topstep Combine Traders Share of participants at each stage, 2025 company data 0% 15% 30% 45% 60% Combines Reaching Funded Level 16.8% Participants Advancing to Funded (at least once) 51.8% Funded Traders Receiving a Payout 33.3% Data: Topstep (2025). Results include simulated environments.
Data: Topstep, 2025 (results include simulated environments, not indicative of future performance).

Building or automating a strategy against a funded account? It’s worth reading the contract caps and liquidation rules for your specific prop firm before you connect a bot. PickMyTrade’s guides on automating Apex through Tradovate and the Apex and Tradovate connection walkthrough cover the setup steps that avoid the most common rejections.

How Do You Diagnose a Tradovate Rejection in Under a Minute?

Rather than guessing, Tradovate shows you the exact reason for every rejection if you know where to look. Open the Orders module and double-click the rejected order. The detail view shows the specific rejection message, not just “Rejected.”

From there, work through it in order:

  1. Read the exact message and match it against the tables above to find the category.
  2. Check whose rule it is. A personal risk setting, a prop-firm rule, and an exchange rule each need a different fix.
  3. Margin or size issue? Open Risk Settings under Account Settings and compare your limits to the order size.
  4. Price issue? Re-check the live quote and your tick size before resubmitting.
  5. Automation issue? Check your token age, connection count, and request rate before touching your strategy logic.

How PickMyTrade Reduces Rejection-Causing Errors

Most of the rejections in the API and automation table above trace back to one root problem: a webhook or bot sending a malformed, stale, or duplicate order because nothing validated it before it hit Tradovate’s API. PickMyTrade sits between your TradingView alerts and your broker specifically to close that gap. It converts alerts into structured JSON orders, manages token refresh and session handling for you, and routes to Tradovate, Rithmic, TradeLocker, and other supported brokers without you writing or maintaining that plumbing yourself.

That doesn’t eliminate margin or price-band rejections. Those are legitimate risk checks doing their job. But it does remove the entire plumbing category: expired tokens, duplicate client order IDs, and connection-limit errors that have nothing to do with your strategy and everything to do with fragile, homemade automation. Running a DIY webhook script and seeing rejections you can’t explain? PickMyTrade’s pricing page has the current plan details.

Laptop screen displaying code with blue accent lighting, representing an automated trading webhook connection

Frequently Asked Questions

What does “Order Price Is Outside Bands” mean on Tradovate?

It means your submitted price falls outside the exchange’s allowed range around the current market price, usually from a decimal-point typo or a tick-size mismatch. Re-check the live quote and confirm your price matches the instrument’s tick increment before you resubmit.

Why did my Tradovate order get rejected with no visible error message?

The message is there, it’s just not on the main screen. Double-click the rejected order inside the Orders module to open its detail view, which shows the specific rejection reason instead of a generic “Rejected” status.

Can I increase my Tradovate position or risk limits?

Yes, for your own account settings: go to Account Settings and submit a risk-change request. If the rejection cites a firm-level rule instead, codes 1140 or 1141, that limit belongs to your prop firm or clearing firm, and you’ll need to request the change through them directly.

Why do automated or webhook orders get rejected more than manual ones?

Automated orders fail for infrastructure reasons manual clicks rarely trigger: expired auth tokens roughly every 80 minutes, exceeding the 2-session connection limit, or exceeding the API rate cap. These are plumbing issues, not risk issues, and they need a different fix path entirely.

What’s the difference between a Tradovate rejection and a CME exchange rejection?

A Tradovate or CQG rejection, codes like 1013 or 1182, is your broker’s own risk engine blocking the order before it reaches the exchange. A true exchange rejection, like code 1076 or a trading halt, comes from CME itself, and no account setting will fix it.

Conclusion

Most Tradovate rejections aren’t mysterious once you know where to look. Margin and risk-limit codes mean you’re asking for more than your account allows. Price-band codes usually mean a typo. Contract and session codes mean timing. API codes mean plumbing, not strategy. Prop-firm codes mean a second set of rules stacked on top of Tradovate’s own.

The fastest fix is always the same: double-click the rejected order, read the exact message, and match it against the category it belongs to. Bookmark this page. The next time you see red instead of a fill, you’ll know exactly which layer to check first.

If you’re automating your strategy and want to stop debugging plumbing errors altogether, see how PickMyTrade connects TradingView to Tradovate without writing custom webhook code.


Disclaimer:
This content is for informational purposes only and does not constitute financial, investment, or trading advice. Trading and investing in financial markets involve risk, and it is possible to lose some or all of your capital. Always perform your own research and consult with a licensed financial advisor before making any trading decisions. The mention of any proprietary trading firms, brokers, does not constitute an endorsement or partnership. Ensure you understand all terms, conditions, and compliance requirements of the firms and platforms you use.


Also Checkout: Automate TradingView Indicators with Tradovate Using PickMyTrade

Leave a Comment

Your email address will not be published. Required fields are marked *

error

Follow us for more insights and updates

Scroll to Top
Verified by MonsterInsights