Orders Stuck in SUBMITTED Status
Overview / Context
In Dinari's system, an order follows a two-stage lifecycle: the OrderRequest (the user's intent) and the Order (the actual on-chain transaction). When an OrderRequest reaches the SUBMITTED status, it means the order has been successfully submitted to the order book and is actively waiting to be matched with a counterparty.
This is a normal and active status — not an error or a stuck state. However, customers frequently perceive it as "stuck" because they expect immediate execution. Understanding why orders remain in SUBMITTED is critical for both support teams and customers to set proper expectations and reduce unnecessary escalations.
Process
Step 1: Confirm the Order Status
First, verify the order is indeed in SUBMITTED status using the Get Order Request by ID endpoint:
http
GET /api/v2/accounts/{account_id}/order_requests/{order_request_id}
Look for the status field. If it shows SUBMITTED, the order is active on the order book.
If the stock_order_id field is populated, you can also retrieve the Order details:
http
GET /api/v2/accounts/{account_id}/orders/{order_id}
Step 2: Check the Trading Session
Step 2: Check the Trading Session
Use the Get Market Hours endpoint to determine the current session:
http
GET /api/v2/market_data/market_hours/
Compare the order's created_dt with the session rules:
| Session | Hours (ET) | What It Means for Your Order |
|---|---|---|
| Regular | Weekdays 9:30 AM – 4:00 PM | All order types accepted; expect normal execution |
| Extended | Pre-market 4:00–9:30 AM; After-hours 4:00–8:00 PM | Limit orders only; may take longer to fill |
| Overnight | 8:00 PM – 4:00 AM weekdays | Limit orders only; fills book in following session |
| Open (24/7) | Friday 8:00 PM – Sunday 8:00 PM | Blockchain only; limited tickers; lower liquidity |
Step 3: Check the Order Type and TIF
Step 3: Check the Order Type and TIF
| Parameter | What to Check |
|---|---|
order_type | If MARKET and placed off-hours → converted to marketable limit order |
order_tif | If DAY and placed over weekend → remains eligible through next trading day |
limit_price | If LIMIT order, check if price has been reached |
Step 4: Check for Partial Fills
Step 4: Check for Partial Fills
Call the Get Order Fulfillments endpoint:
http
GET /api/v2/accounts/{account_id}/orders/{order_id}/fulfillments
If any fulfillments exist, the order has been partially filled and is waiting for the remainder.
Key Takeaway
SUBMITTED is not an error state. It's the normal, active state for an order waiting to be filled. Most "stuck" orders are simply resting on the order book during off-hours sessions or waiting for a limit price to be reached. Understanding the trading session rules is the key to setting proper expectations and reducing unnecessary escalations.
Updated 2 days ago
