# Order rejection codes

The table below describes the meaning of the rejection code in the **58** `Text` field when the field **103** `OrdRejReason` has value `99`.

| Rejection code                | Description                                                                                                                                   |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `INVALID_QTY`                 | Invalid order quantity. Can be that the lot size is less than the min lot size, too little lots or too many lots for the provided quantity.   |
| `INVALID_PRICE`               | Invalid **44** `Price` field. Can be related to wrong format or limitations for min/max price, or incorrect accuracy.                         |
| `INVALID_LOCKED_FUNDS`        | Not enough balance.                                                                                                                           |
| `NOT_ENOUGH_LIQUIDITY`        | Cannot match the `MARKET` order with the Fill-or-Kill strategy due to insufficient volume of limit orders in the orderbook.                   |
| `NOT_ENOUGH_LOCKED_FUNDS`     | Not enough balance.                                                                                                                           |
| `NOT_FOUND`                   | Order was not found.                                                                                                                          |
| `NOT_REPLACEABLE`             | Cannot replace the order with provided parameters.                                                                                            |
| `INVALID_CURRENCY_PAIR`       | Currency pair was not found.                                                                                                                  |
| `DISABLED_CURRENCY_PAIR`      | Known but not tradable currency pair.                                                                                                         |
| `NOT_ENOUGH_BALANCE`          | Not enough balance.                                                                                                                           |
| `EMPTY_RESERVE_AMOUNT`        | Nothing to reserve from the balance (like when buying zero amount).                                                                           |
| `SELF_MATCHING_PROTECTION`    | Cannot match the taker order because at least one of the crossing maker orders belongs to the same party.                                     |
| `PRICE_LIMIT_PROTECTION`      | Protection from placing an order with a price deviating from the bid/ask for >= 50%.                                                          |
| `INVALID_ORDER_TYPE`          | Unsupported **40** `OrdType`.                                                                                                                 |
| `PREV_ORDER_NOT_FOUND`        | Cannot replace the order because the existing order is not active anymore.                                                                    |
| `PREV_ORDER_ANOTHER_SIDE`     | Cannot replace the order because the existing order has a different side (`SELL` vs `BUY`).                                                   |
| `TOO_MANY_MATCHED_ORDER`      | Taker order was rejected because it would be executed with more than 10000 maker orders.                                                      |
| `DUPLICATE`                   | An order is already in the order book.                                                                                                        |
| `EXCHANGE_CLOSED`             | Exchange is currently not operating.                                                                                                          |
| `TOO_OLD`                     | It is too late to process the order (more than 1d old).                                                                                       |
| `POST_ONLY_IMMEDIATE_MATCH`   | Order was placed as post-only (maker-only) but was immediately matched with some other order.                                                 |
| `SLIPPAGE_PROTECTION`         | Market order was not executed due to price protection.                                                                                        |