> ## Documentation Index
> Fetch the complete documentation index at: https://docs.panofx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Why the relay rejected an offer

> The relay checks every offer against what the chain will enforce before ranking it.

An offer that fails these checks is recorded as rejected, counts against your valid rate, and is never
shown to the taker. The quote response lists rejections by resolver, and your console shows yours.

## Funds and reservations

| Reason                   | Meaning                                                   |
| ------------------------ | --------------------------------------------------------- |
| `insufficient_balance`   | Your address does not hold the amount the offer gives     |
| `insufficient_allowance` | Permit2 is not approved for that token, or not for enough |
| `inventory_reserved`     | That inventory is already committed to another open quote |
| `nonce_used`             | The Permit2 nonce in the signature was already spent      |
| `validation_paused`      | Settlement is paused network-wide                         |

## Terms

These point at a misconfigured policy, usually a contract address, or a node that is out of date.

| Reason                                                | Meaning                                                                                       |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `wrong_chain`                                         | The offer is for a different chain than the RFQ                                               |
| `wrong_executor`, `wrong_reactor`, `wrong_validation` | The order names a contract other than the network's                                           |
| `wrong_taker`, `wrong_recipient`                      | The order's exclusive filler data or recipient is not the RFQ's taker                         |
| `wrong_input_token`, `wrong_output_token`             | The tokens are not the RFQ's pair, in the right direction                                     |
| `wrong_output_amount`                                 | The output is not the RFQ's sell amount                                                       |
| `bad_input_amount`                                    | The input is zero or malformed                                                                |
| `bad_validation_data`, `bad_outputs`                  | The order's validation data or outputs are not the canonical shape                            |
| `bad_expiry`, `deadline_too_soon`, `deadline_too_far` | The deadline is under the minimum offer lifetime (10 s) or over the maximum (120 s on Solana) |
| `bad_signature`                                       | The signature does not recover to your address, or on Solana to your bound maker key          |
| `bad_transaction`                                     | Solana: the transaction is not the canonical settlement for these terms, byte for byte        |
| `maker_is_taker`                                      | The maker and the taker are the same account                                                  |
| `fees_exceed_offer`                                   | Solana: the fee and gas in the buy mint would leave the taker nothing                         |

## After the auction

A winning offer can still fail later. `expired` means the taker did not sign in time. `failed` means the
keeper's simulation reverted; those count toward [demotion](/resolvers/operate/reliability#automatic-removal-from-fan-out)
unless the keeper traces the revert to the taker's side.
