Why Binance OCO Orders Only Fill One Side

 / 
 / 
1

OCO orders only fill one side because that's how they're designed — you place two orders (a limit order and a stop-limit order) simultaneously. When one side is filled or triggered, the other is automatically canceled, ensuring both don't execute at the same time.

Binance Exchange
The world's largest cryptocurrency exchange by trading volume,leading in security and liquidity.
New user benefit: Enjoy 20% off trading fees upon registration!

This is precisely the core function of an OCO (One-Cancels-the-Other), not a malfunction. "Only one side fills" means the order executed as you intended — the market moved in one direction, and the other side is no longer needed.

Below, we explain how an OCO order works and what happens to the other side after one fills.

Prerequisites

  1. You have placed an OCO order (including both a limit order and a stop-limit order) on Binance spot or margin trading.

  2. You see that one side of the order has been filled or triggered.

  3. You can check your order history to confirm the status.

Step 1: Check the Current Order Status

Open the Binance app or website and go to [Order Management] → [Open Orders] or [Order History]. Find the OCO order you placed.

Case A: The OCO order is no longer in Open Orders

This means the order has been completed — one side filled, and the other was automatically canceled.

Case B: Order History shows one filled, one canceled

This is the normal completed state. You can tap into the details to see the exact fill price and the cancellation reason.

Case C: The OCO order is still in Open Orders

This means the price has not yet reached either condition; both sides are still waiting to be triggered.

Completion criteria: Confirm the order is no longer in Open Orders and that the history shows one "Filled" and one "Canceled".

Step 2: Understand Why Only One Side Fills

An OCO order contains two orders:

  • Limit order (take-profit side): Sets a sell price above the current market price, or a buy price below it.

  • Stop-limit order (stop-loss side): Sets a trigger price below the current market price (for selling), or above it (for buying).

Both orders are placed at the same time. When either one fills or is triggered, the system instantly cancels the other.

Sell order example: You hold BTC, current price 90,000 USDT.

  • Limit sell order: 100,000 USDT (take-profit)

  • Stop-limit sell order: trigger price 87,000, limit price 85,000 (stop-loss)

If BTC rises to 100,000, the limit order fills and the stop-limit order is automatically canceled. If BTC drops to 87,000 and the stop triggers, the stop-limit order fills and the limit order is automatically canceled.

Completion criteria: You can identify which side was triggered first based on the price levels you set.

Step 3: Confirm How the Other Side "Disappeared"

After one side fills, the other side does not remain on the order book waiting to execute — it is directly canceled by the system. The cancellation happens instantly and requires no manual action.

In [Order History], you will see the canceled order with a status of "Canceled" or "CANCELED", and the reason is typically shown as "OCO cancel" or that the linked order has been filled.

Completion criteria: Confirm that the canceled order clearly shows "Canceled" and not "Open" or "Partially Filled".

Step 4: If Neither Side Has Filled but the Order Remains

If the OCO order is still in Open Orders, the price is fluctuating between the two thresholds, and the system is still waiting for one side to be triggered. You can choose to wait or manually cancel the entire OCO order — canceling one side manually will automatically cancel the other side as well.

Common Reasons for Misunderstanding

Mistaking OCO for a mechanism where both sides fill

This is the most common misunderstanding. The "C" in OCO stands for "Cancel", and its design ensures only one side fills, preventing the stop-loss and take-profit from both executing at once and creating a double position or hedging loss. If you need both sides to work independently, place two separate limit orders instead of using an OCO order.

Risk Reminders

  • OCO is for existing positions: A sell OCO is used to manage take-profit and stop-loss for an existing long position. If you want to use an OCO to enter a long position, the buy limit price should be lower than the current market price, and the stop trigger price should be higher.

  • After triggering, orders execute with a limit: A stop-limit order generates a limit order once triggered, not a market order. If the price moves quickly through your set limit price, the order may not fill.

  • Manual cancellation cancels both sides: Do not try to cancel only one side and leave the other — the system does not support this.

Binance Exchange
The world's largest cryptocurrency exchange by trading volume,leading in security and liquidity.
New user benefit: Enjoy 20% off trading fees upon registration!

How to Confirm the Operation Is Complete

Go to [Order History] and find the OCO order record. If you see two entries — one with "Filled" status and the other with "Canceled" — the OCO order has executed normally.

If both entries show "Canceled" with no fill record, you may have manually canceled the order, or the OCO was canceled by the system before triggering (e.g., due to delisting of the trading pair).