There could be multiple reasons why an order which has been placed successfully is not filled.

Some scenarios are below:

Scrip has hit lower or upper circuit price

Sometimes a scrip might hit the lower or upper circuit price defined by the exchange. 

For example: 

  1. when there is an extremely bad news, the scrip price might hit the lower circuit as there would be a lot of selling pressure. There might not be enough buyers of the scrip and hence any sell order placed by you might not get filled.
  2. Similarly when there is a good news, the price might hit the upper circuit as there would a lot of buying pressure. There might not be enough sellers of the scrip as everyone would be expecting for price to move further up. In this case, any buy order you place might got filled.

The above scenarios are very common for penny stocks which have very low liquidity (very few people trading them)

Order type is Limit or SL-Limit

A limit order is when you wish to buy or sell a stock at a certain price. When you place a limit order it will be executed only when the stock reaches that price. Similarly a stop-loss limit order will be executed at the price you have specified. The stop-loss is a mere trigger to validate the order.

All the orders are executed on a 'first come, first serve' basis' by the queue system on the exchange. This means that if there are multiple orders at the same price, the person who placed their order first will get their order filled first. This can sometimes lead to your order not being filled even if the scrip LTP crosses the limit price specified by you.

  • You hold a scrip X which is currently trading at Rs. 100. To limit your loss, you place a SL-Limit order to sell off your holdings with the limit price as Rs. 95 and the trigger price as Rs. 96. Let us say the LTP hits Rs. 96. Your SL-Limit order will now be triggered and if a price of Rs 95 is reached, exchange will try to settle your order.
    When the price of the scrip hits Rs. 95, exchange will try to fill your order. If there are very few people willing to buy the scrip at Rs. 95, there are chances that your sell order might not be executed (because your order might be behind in the queue and by the time your order reaches the front of the queue, there might not be enough buyers left). It can also happen that there are no buyers at Rs. 95 and price jumps directly to below Rs. 95. The price now moves to Rs. 90, your order will still not be executed. As soon as price goes below Rs 95, exchange will stop trying to fill your order. It will only try to execute it again if price reaches back to 95.
  • You have shorted a scrip X which is currently trading at Rs. 100. To limit your loss, you place a SL-Limit buy to buy the scrip with the limit price as Rs. 105 and the trigger price as Rs. 103. Let us say the LTP hits Rs. 103. Your SL-Limit order will now be triggered and if a price of Rs 105 is reached, exchange will try to settle your order.
    When the price of the scrip hits Rs. 105, exchange will try to fill your order. If there are very few people willing to sell the scrip at Rs. 105, there are chances that your sell order might not be executed (because your order might be behind in the queue and by the time your order reaches the front of the queue, there might not be enough sellers left). It can also happen that there are no sellers at Rs. 105 and price jumps directly above Rs. 105. The price now moves to Rs. 110, your order will still not be executed. As soon as price goes above Rs 105, exchange will stop trying to fill your order. It will only try to execute it again if price reaches back to 105.

NOTE: 

  • This scenario is very likely to occur for far OTM options with low liquidity. 
  • SL-Market orders are not allowed for options as mandated by exchanges to avoid freak trades.