Complete reference of Binance.US API error codes with solutions and troubleshooting tips.
All API errors return a JSON response:
{
"code": -1121,
"msg": "Invalid symbol."
}The MCP server enhances error messages with helpful hints based on the error code.
| Code | Message | Solution |
|---|---|---|
| -1000 | Unknown error | Retry the request. If persistent, check Binance.US status page. |
| -1001 | Disconnected | Internal error. Retry with exponential backoff. |
| -1002 | Unauthorized | API key doesn't have permission for this endpoint. Check API settings. |
| -1003 | Too many requests | Rate limit exceeded. Wait and retry. |
| -1006 | Unexpected response | Check Binance.US status. May be maintenance. |
| -1007 | Timeout | Request timed out. Retry with smaller payload if applicable. |
| -1010 | Error message received | Check the specific error message for details. |
| -1013 | Invalid quantity | Check the symbol's LOT_SIZE filter. |
| -1014 | Unknown order composition | Check order parameters against symbol filters. |
| -1015 | Too many orders | Reduce order frequency. Max 10/second, 100k/day. |
| -1016 | Service shutting down | Maintenance in progress. Wait and retry. |
| -1020 | Unsupported operation | This operation is not supported on Binance.US. |
| -1021 | Timestamp outside recvWindow | Sync your system clock. Increase recvWindow (max 60000). |
| -1022 | Invalid signature | Check API secret. Ensure proper HMAC-SHA256 signing. |
| Code | Message | Solution |
|---|---|---|
| -1100 | Illegal characters | Remove special characters from parameters. |
| -1101 | Too many parameters | Reduce the number of parameters sent. |
| -1102 | Mandatory parameter missing | Include all required parameters for the endpoint. |
| -1103 | Unknown parameter | Remove unrecognized parameters. |
| -1104 | Unread parameters | Check parameter format and types. |
| -1105 | Empty parameter | Provide a value for the parameter. |
| -1106 | Parameter not required | Remove the unnecessary parameter. |
| -1111 | Precision too high | Reduce decimal places. Check symbol's tick/step size. |
| -1112 | No depth in order book | Try again later when liquidity is available. |
| -1114 | TimeInForce not required | Remove timeInForce for MARKET orders. |
| -1115 | Invalid timeInForce | Use GTC, IOC, or FOK. |
| -1116 | Invalid orderType | Use LIMIT, MARKET, STOP_LOSS, etc. |
| -1117 | Invalid side | Use BUY or SELL. |
| -1118 | Empty newClientOrderId | Provide a valid client order ID or remove the parameter. |
| -1119 | Empty originalClientOrderId | Provide the original client order ID. |
| -1120 | Invalid interval | Use valid kline intervals: 1m, 5m, 15m, 1h, etc. |
| -1121 | Invalid symbol | Check symbol format (e.g., BTCUSDT). Must be uppercase. |
| -1125 | Invalid listenKey | Get a new listen key for user data stream. |
| -1127 | Listen key interval too long | Reduce the listen key lifetime. |
| -1128 | Invalid combination of params | Check mutually exclusive parameters. |
| -1130 | Invalid data sent | Check parameter types and values. |
| -1131 | recvWindow must be < 60000 | Reduce recvWindow value. Maximum is 60000ms. |
| -1136 | Invalid newOrderRespType | Use ACK, RESULT, or FULL. |
| Code | Message | Solution |
|---|---|---|
| -2010 | New order rejected | Check balance, symbol filters, and order parameters. |
| -2011 | Cancel rejected | Order may already be filled or doesn't exist. |
| -2013 | Order does not exist | Verify the orderId or clientOrderId. |
| -2014 | Invalid API key format | Check API key format. Should not have extra spaces. |
| -2015 | Invalid API key or permissions | Enable required permissions (e.g., Spot Trading). |
| -2016 | No trading window | Trading is paused. Wait for market to reopen. |
| -2018 | Balance not sufficient | Add funds or reduce order size. |
| -2019 | Margin not sufficient | For margin accounts (not available on Binance.US). |
| -2020 | Unable to fill | Order cannot be filled at current market conditions. |
| -2021 | Order would trigger immediately | Adjust stop price for stop orders. |
| -2022 | ReduceOnly rejected | Remove reduceOnly flag (for futures, not US). |
| -2024 | Position side not match | Check position mode settings. |
| -2025 | Reduce only | Not applicable to Binance.US spot trading. |
| -2026 | Margin account error | Margin not available on Binance.US. |
| Code | Message | Solution |
|---|---|---|
| -9000 | Filter failure: PRICE_FILTER | Price outside allowed range. Check minPrice/maxPrice. |
| -9001 | Filter failure: PERCENT_PRICE | Price too far from mark price. |
| -9002 | Filter failure: LOT_SIZE | Quantity invalid. Check minQty/maxQty/stepSize. |
| -9003 | Filter failure: MIN_NOTIONAL | Order value too low. Increase quantity × price. |
| -9004 | Filter failure: ICEBERG_PARTS | Check iceberg order parts limit. |
| -9005 | Filter failure: MARKET_LOT_SIZE | Market order quantity invalid. |
| -9006 | Filter failure: MAX_NUM_ORDERS | Too many open orders. Cancel some first. |
| -9007 | Filter failure: MAX_NUM_ALGO_ORDERS | Too many algo orders. Cancel some first. |
| -9008 | Filter failure: MAX_NUM_ICEBERG_ORDERS | Too many iceberg orders. |
| -9009 | Filter failure: TRAILING_DELTA | Invalid trailing delta value. |
| -9010 | Filter failure: EXCHANGE_MAX_NUM_ORDERS | Exchange-wide order limit reached. |
| -9011 | Filter failure: EXCHANGE_MAX_NUM_ALGO_ORDERS | Exchange-wide algo order limit reached. |
| Code | Message | Solution |
|---|---|---|
| -2010 | OCO rejected | Check price relationships for OCO. SELL: limit > stop. BUY: limit < stop. |
| -2011 | OCO cancel rejected | One or both orders may already be filled. |
For SELL OCO:
Limit Price > Last Market Price > Stop Price
- Limit order is above market (take profit)
- Stop order is below market (stop loss)
For BUY OCO:
Limit Price < Last Market Price < Stop Price
- Limit order is below market (buy the dip)
- Stop order is above market (breakout buy)
Error: -9002 LOT_SIZE
Cause: Quantity doesn't match symbol's lot size filter.
Solution:
- Get exchange info for the symbol
- Find LOT_SIZE filter:
minQty,maxQty,stepSize - Adjust quantity:
minQty <= quantity <= maxQty - Round to stepSize:
quantity % stepSize == 0
Error: -9000 PRICE_FILTER
Cause: Price outside allowed range or wrong tick size.
Solution:
- Get exchange info for the symbol
- Find PRICE_FILTER:
minPrice,maxPrice,tickSize - Adjust price:
minPrice <= price <= maxPrice - Round to tickSize
Error: -9003 MIN_NOTIONAL
Cause: Order value (price × quantity) too small.
Solution:
- Get exchange info for the symbol
- Find MIN_NOTIONAL filter:
minNotional - Ensure:
price × quantity >= minNotional - Typically $10 minimum on Binance.US
Error: -1022 Signature for this request is not valid
Causes:
- Wrong API secret
- System clock not synchronized
- Parameters changed after signing
Solutions:
- Verify API secret is correct
- Sync system time with NTP server
- Don't modify parameters after signing
- Ensure proper URL encoding
Error: -1021 Timestamp for this request is outside of the recvWindow
Causes:
- System clock ahead/behind server time
- Network latency
Solutions:
- Sync system clock:
sudo ntpdate pool.ntp.org - Increase recvWindow (up to 60000ms)
- Use server time endpoint to check offset
binance_us_test_order
Tests order validity without placing it.
Get exchange info to see all filters and requirements for a symbol.
- Go to Binance.US API Management
- Check which permissions are enabled
- Ensure IP whitelist includes your server
# Compare your time with server time
curl https://api.binance.us/api/v3/timeThe MCP server includes the full error message with code and hint.
When you hit rate limits:
| HTTP Status | Meaning |
|---|---|
| 429 | Rate limit exceeded |
| 418 | IP banned (usually 5 min) |
Prevention:
- Implement request queuing
- Use WebSocket for real-time data
- Cache responses when appropriate
- Respect weight limits per minute
- Check this error reference
- Review Binance.US API Docs
- Test with smaller requests
- Check Binance.US status page for outages