When an Order Fails
Nyria does not retry a failed or rejected order, apart from one narrow cash-account case. What happens instead, where the failure is recorded, what reaches you, and how to recover by hand.
An order that Nyria sends can fail in three different places, and the recovery is different for each. This page is the one to read when a fill did not arrive.
Nyria does not retry a failed or rejected order. Not on a broker rejection, not on a network timeout, not on an API error. The order is recorded as failed and nothing further is sent. Automatic retries cause duplicate orders and position mismatches, and a duplicate order is worse than a missed one.
This makes you the recovery path. If a trade mattered, you have to check.
There is exactly one exception, and it only ever re-sends a close: see The one close Nyria re-sends.
The three places a trade can fail
1. The alert never became a trade
The alert reached Nyria but the strategy did not turn it into an order. It could not be parsed, the instrument was not in the strategy's list, the strategy was paused, or it arrived outside the trading window.
Where it is recorded: the strategy's Logs tab. One entry per inbound alert, visible to anyone with view access on the strategy.
Typical entries:
| Message | Cause |
|---|---|
ALERT FAILED: <reason> | The text or JSON did not carry an instrument, direction, or action Nyria could resolve |
external selection strategy requires option details (strike, expiration, side) in the alert | The strategy is on external selection but the alert had no strike, expiration, or side |
Strategy is <status> - alerts are only processed for active strategies | Strategy status is draft, paused or archived |
instrument '<SYM>' not in allowed list | The ticker is not on the strategy's allowed list |
multiple entries disabled: open <side> position already exists for <SYM> | A position is already open and the strategy does not allow pyramiding |
Duplicate alert body ignored | Duplicate delivery. The original succeeded, not an error. Logged at most once every few minutes |
Recovery: fix the alert or the strategy, then resend. Nothing is open, so nothing needs unwinding.
2. The bot could not build or place the order
The alert parsed, but the bot could not act on it: no budget, no buying power, no contract found, a stale broker connection.
Where it is recorded: the bot's Logs tab, at level error. One entry per bot per alert, visible only to the bot's owner. A strategy with five bots on it can have one bot fail and four succeed on the same alert.
Typical entries:
| Message | Cause |
|---|---|
Insufficient budget (...) | The bot's per-entry budget is below the cost of one contract or unit |
No available balance (...) | The broker reported zero buying power, often a stale token rather than an empty account |
failed to select options: no expirations found within DTE range <min>-<max> | Nothing matched the leg's DTE window |
Recovery: nothing was sent to the broker, so there is no position to unwind. Fix the cause and wait for the next signal, or fire a manual entry alert if you still want the trade.
3. The broker rejected the order
Nyria placed the order and the broker refused it, or accepted it and then rejected it seconds later, which some cash accounts do.
Where it is recorded: the bot's Logs tab, carrying the broker's own reason text. When the broker gives no reason, the entry reads Broker rejected order at placement.
Common reasons:
- Insufficient buying power, including the exit side of a credit spread, which needs a debit
- The account lacks the required permission: options approval level, margin, crypto enablement
- Pattern Day Trader restriction on an account under $25,000
- Market closed, or an order type the broker will not accept in that session
- The strike or contract is not available
Recovery: this is the case that needs you. The trade you expected is not on. If it was an entry, you have no position, and Nyria will not re-send it. If it was an exit, you still hold the position; assume it is yours to close. Close it yourself, or send another exit alert once the cause is fixed. Close a Position covers every route and who has which. One narrow class of failed close is re-sent automatically, described below.
A rejected exit is the dangerous one. The position stays open, exposed, and Nyria has already stopped trying. Check open positions against your broker as part of your daily check. This is exactly the mismatch that check is for.
The one close Nyria re-sends
Every rule above has a single exception, and it exists because of one specific failure: a cash account rejects a sell for unsettled funds, and the same sell would succeed once settlement clears overnight.
About every half hour, Nyria sweeps for entries that filled, have no successful
exit, and do have a failed exit attempt behind them. For each one it asks the
broker what the account actually holds. Almost always that is where it stops:
if the position is gone the entry is marked closed, and if the position is open
the bot log gets a Position open at broker but its exit failed ... manual attention needed warning and nothing is sent.
It re-sends the close only when all of these hold:
- the broker itself classifies the account as cash
- the position is a long stock or option position (never a short, never crypto)
- the rejection reason was a transient one, of the settlement family
- that entry has never had a re-close claimed before
Then it places the close once, ever, for that entry, sized to the smaller of
what the broker shows, what the bot recorded, and what has settled. Simulated
(Nyria Paper) accounts are skipped entirely. The re-close writes its own bot-log
line, Retrying the close a cash account could not settle, so you can always
tell it apart from your own action.
Everything else — every entry, every margin account, every permanent rejection — is still yours to recover by hand.
What actually reaches you
Two mechanisms surface a failure, and they do not cover the same ground.
Notifications fire when the executing bot flags a failure as worth surfacing at the moment it happens. Those arrive as Trade alerts, in the bell and by email if that category's email switch is on. See Notifications.
Bot logs record every failure without exception, including the ones nobody notified you about.
A rejection that the broker reports late may not notify you at all. Some brokers accept an order and reject it tens of seconds later. Nyria polls for those and writes the result to the bot log, but that path records the failure without raising a notification or sending an email.
The consequence is concrete: an empty inbox is not proof that nothing failed. The bot log is the complete record; notifications are a partial one. Read the logs on any day you expected a fill and are not sure you got one.
Your daily check
Five minutes, and it catches everything above.
Open Notifications, set the filter to Live, and read anything unread.
Open each live bot's Logs tab and look for rows badged ERROR. Do this even if the bell was empty.
Open Live Now from the dashboard banner and compare what it lists against your broker's own positions page. They should match exactly.
Check that each integration still shows Connected, not Reauth Required. A stale connection stops a bot silently.
Reading a rejection
Bot log entries carry the broker's own reason text. Copy it verbatim before searching. The wording is the broker's, not Nyria's, and it is the fastest route to the cause.
- Broker-specific wording is listed on each broker's page under Integrations
- Platform-level messages are indexed in Troubleshooting
- Log levels and what each one means are described in Strategy logs vs bot logs
Failure modes that are not rejections
Partial fill on a spread. Some legs fill and others do not, leaving an unbalanced position. Nyria tracks what filled and exits the remaining legs on the next exit signal. Check the broker if you suspect one.
Exit signal with no tracked position. Logged as a warning, not an error, and no order is sent. It usually means Nyria's view and the broker's view have diverged, often because of a manual trade in the same account. Use a dedicated account for automation.
Conflicting signals in quick succession. Execution order is not guaranteed. Leave 30–60 seconds between signals, and flip a position with a single signal rather than an exit followed by an entry.
Reducing how often this happens
- Keep more capital than the entries alone require. Every exit needs room too
- Use a dedicated account, so manual trades cannot desync tracking
- Trade liquid instruments; illiquid options are where rejections and partial fills concentrate
- Leave Trade alerts and Broker connections notifications on, in-app and by email
- Prove the strategy on paper first, then go live small
Next Steps
- Close a Position - how to get flat when Nyria will not do it for you
- Notifications - configuring what reaches you
- Troubleshooting - message-by-message fixes
- Known Limitations - the full list of what Nyria will not do for you
Notifications
Where Nyria tells you a trade failed, a broker went stale, or a strategy went quiet, and how to control which of those reach your inbox.
Sell Your Strategies on Whop
How a creator gets paid on Nyria: paywall a strategy behind your own Whop product, grant and revoke subscriber access automatically, and keep 100% of what subscribers pay.