When something goes wrong
opcode is built to stop rather than guess. When it cannot prove that a price is fresh, a token is as expected, or a transaction's outcome is known, it says so and waits. This page lists the states you can land in and the way out.
First, the rule that matters most
The ticket will not let me ask for a quote
| The ticket says | Why | What to do |
|---|---|---|
| Connection interrupted, in the status bar | The terminal has lost contact with the server. | Check your connection, then Refresh. |
| Pool unavailable | The OPmode pool is paused, the US market is closed, or its reference is being refreshed. The notice gives the reason; the table under OPmode below explains each one. | Wait, or switch to Quick, which still works for this market. |
| An earlier order is waiting for its result | An order you sent has no known outcome yet. | Choose Check it now, and wait for it to resolve. |
| The token mint could not be verified | The token failed its on-chain check. Quick quotes are paused for it. | Wait. The market shows the reason once it clears. |
| Enter a positive amount within the token limit | The amount is empty, zero, or has too many decimals. | Correct the amount. |
Reasons a market has no price
These reasons belong to the public reference that the market list, the chart and Quick use: the Jupiter token price, checked against the underlying share price. OPmode does not use that reference; its own reasons are in the next section.
| Reason | Meaning |
|---|---|
| Reference updates are delayed | No fresh price for ten seconds. See Reference prices. |
| The token and underlying share prices disagree | The sources differ by more than 1.5% in the regular session, or 4% otherwise. |
| The reference moved more than 10% between observations | A jump that large is treated as suspect until a consistent update arrives. |
| This thin market needs a fresh underlying share price | The token is too illiquid on chain to be its own reference, and the share price is too old. |
| The latest on-chain token price could not be verified as fresh | The token is its own reference, its latest trade is more than 15 minutes old, and no share price can stand in. |
| Token mint verification is delayed | The token's on-chain configuration has not been re-checked in the last six minutes. |
| The issuer has paused this token mint | The issuer has stopped all transfers of this token. Nobody can trade it anywhere until they lift it. |
| The token extension set has changed and requires review | The issuer changed how the token behaves. The market stays off until the change has been reviewed. |
| Verified calendar has expired | The exchange calendar could not be refreshed for a week. Sessions cannot be trusted, so there is no price. |
Quick can still route a market without a public price through Jupiter, if the token itself passes its checks.
OPmode is unavailable for this market
OPmode prices from the underlying stock or ETF price from Pyth, verified on chain. When that reference cannot be used, the ticket shows Pool unavailable with one of these messages, or the quote request returns it. Quick is not affected.
| Message | Meaning | What to do |
|---|---|---|
| A fresh underlying price is unavailable for this market session. | The US market is closed, at a weekend or on an exchange holiday, or the calendar and the Pyth report do not both confirm the current session. | Wait for the next open session, or use Quick. |
| The underlying price is preparing. Try again shortly. | No Pyth observation is ready for this market yet. | Try again in a few seconds. |
| The market reference is being refreshed. | The on-chain reference has expired or no longer matches its verified Pyth record. A market's reference stops refreshing after 60 seconds in which nobody has it open in the terminal or requests a quote, and opening it starts a new one. | Wait a few seconds; the notice clears when the pool is ready. |
| The stock reference is being confirmed. Try again shortly. | A new reference is being verified and written on chain while your request was prepared. | Try again in a few seconds. |
| The stock reference needs to refresh before a new quote. | The on-chain reference is more than five seconds old, or more than 5 bps from the latest underlying price. | Try again in a few seconds. |
| The underlying price is older than five seconds. | The Pyth source has not updated recently enough. | Try again shortly. |
| The underlying price confidence exceeds the session limit. | Pyth's confidence interval is wider than 25 bps of price in the regular session, or 50 bps in other sessions. | Try again later. |
| The underlying feed has too few publishers for this session. | Fewer publishers than the session requires: 3 in the regular session, 2 in the others (3 for COINx before and after the regular session). | Try again later. |
| USDC parity monitoring is unavailable or delayed. | The independent USDC price that guards the 1 USDC = 1 USD assumption is missing or more than 60 seconds old. | Try again shortly. |
| USDC has moved outside the supported dollar parity range. | The independent USDC price is outside $0.99 to $1.01. | Wait. OPmode resumes when USDC is back in range. |
| OPmode is being updated. Try again shortly. | opcode is applying an update to OPmode. | Wait, or use Quick. |
A quote or a swap was refused
| Message | Meaning | What to do |
|---|---|---|
| The quote expired | The quote's time ran out before the transaction was signed and sent. | Get a new quote. |
| OPmode trading is paused | The owner or the emergency key has paused this market, or a withdrawal emptied its pool or left a vault below its floor. | Use Quick, or wait for it to reopen. |
| Check your pending transaction before creating another order | An OPmode order or pool transaction from this wallet has no known result yet. | Open it from Activity in Portfolio and wait for it to resolve. |
| The settlement reference must be refreshed before a new quote | The reference on chain has too little life left to give you five seconds of review. | Try again in a few seconds. |
| The underlying price moved or the quote needs more review time. Request a fresh quote. | Checked again just before the quote was returned, the Pyth source was over five seconds old or fewer than five seconds were left for review. | Request a fresh quote. |
| The underlying price changed during preparation. Request a fresh quote. | The underlying price moved more than 5 bps, or its confidence widened, while the quote was being prepared. | Request a fresh quote. |
| This trade exceeds the settlement market size limit | Over 100 USDC on NVDAx, or 20 USDC on any other OPmode market. | Lower the amount, or split it. |
| The settlement market turnover limit has been reached | The pool has traded its limit for the current fixed 60-second window. | Wait for the next window, at most a minute. |
| Available pool inventory is reserved by pending quotes | Other open quotes have set aside what this one needs. | Try again shortly. |
| This trade would exceed the pool inventory range. The opposite direction remains available. | The pool's stock share of value must stay between 25% and 75%, and this trade would push it further out. | Trade a smaller size, or the other side. |
| Pending quotes have reserved the pool inventory range | Open quotes already use the room left inside that 25–75% range. | Try again shortly. |
| The settlement vaults cannot fill this trade | The pool cannot cover the output at this size right now. | Try a smaller size. |
| This quote exceeds the on-chain reference price band | The price would be more than 1% from the reference on chain. | Try again after the next reference update. |
| This amount is too small to quote | After the fee, the output rounds down to nothing. | Increase the amount. |
| No executable route was found | Jupiter found no route for this amount on Quick. | Try another amount. |
| Too many quotes. Try again in a minute | More than twelve quote requests in a minute on one route. | Wait a minute. |
| Settlement simulation rejected the quote; refresh balances and market state. | A trial run of the OPmode transaction failed before the quote was returned, usually because a balance or the pool changed. | Refresh, then request a new quote. |
| Add SOL to your wallet… / The wallet needs SOL… | Not enough SOL for the network fee, or for the rent of a new token or receipt account. | Add about 0.01 SOL. |
In the wallet
| What happened | Result |
|---|---|
| You rejected the transaction | Nothing was submitted. The quote lapses when it expires. |
| The wallet account changed | opcode signs you out. Sign in with the account you want, then get a new quote. |
| The wallet changed the transaction | opcode refuses to submit anything other than the exact bytes you reviewed. Get a new quote, and check your wallet's settings for anything that rewrites transactions. |
| This account cannot sign Solana v0 transactions | Update the wallet, or use another account. |
On chain
If the program rejects a fill, nothing moves except the network fee. The reasons are precise. The common ones: the quote expired by slot; an epoch changed because the pool was paused or a provider withdrew; the reference on chain was too old or no longer matched its verified Pyth record; the token's configuration changed. Each means the same thing to you: ask for a new quote. Settlement on Solana lists them all.
Still stuck
Keep your wallet address and the transaction signature, or the order ID from the Receipt section of the ticket; they identify the trade exactly. Never send a seed phrase or a private key to anyone, including someone claiming to be opcode.