# Retrieving orders

## Prerequisites

- **Authentication scopes** — `orders:read`
For more information, refer to [Authentication scopes](/products/byol/concepts/api_concepts/authentication/authentication_oauth#list-of-authentication-scopes).
- **Webhook handler ready** — Set up a webhook endpoint to listen for order status updates.
  - Subscribe to [`ORDER.*` and `EXECUTION.*`](/products/byol/guides/orders/orders_webhooks) events.
For more information, refer to [Implementing webhooks](/products/byol/getting_started/implementing_webhooks).


**Recommended: Use webhooks to track order status**

To check order statuses, set up a webhook listener for order events. You receive automatic notifications when orders transition through states (`NEW` → `PROCESSING` → `FILLED`/`CANCELLED`) and when executions settle (T+2).

For more information, refer to [Order webhook events](/products/byol/guides/orders/orders_webhooks)

## Tracking orders via webhooks (recommended approach)

Once you place an order, your webhook handler receives event notifications as the order progresses:

1. **`ORDER.NEW`** — order created and submitted
2. **`ORDER.PROCESSING`** — order accepted by the market (no longer cancellable via Investment API)
3. **`EXECUTION.FILLED`** — individual execution fills occur
4. **`ORDER.FILLED`** — entire order is filled
5. **`EXECUTION.SETTLED`** — execution settles (typically T+2); for sell orders, cash is now available


This event-driven approach removes the need to poll and ensures you never miss status changes.

## API reference: retrieving orders by ID (alternative)

If webhooks are temporarily unavailable, you can retrieve order status manually:

**GET** [`/orders/{order_id}`](/api/orders/retrieve_order)

## API reference: retrieving order executions by ID

Individual order executions can be queried:

**GET** [`/orders/{order_id}/executions/{execution_id}`](/api/orders/retrieve_order_execution)

**Example response**

```json
{
  "id": "eb5ba93f-5dfe-4bf1-8571-4da0caacc80c",
  "created_at": "2021-07-21T14:10:00.00Z",
  "updated_at": "2021-07-21T14:10:00.00Z",
  "user_id": "2dedfeb0-58cd-44f2-ae08-0e41fe0413d9",
  "account_id": "debf2026-f2da-4ff0-bb84-92e45babb1e3",
  "cash_amount": "1000",
  "currency": "EUR",
  "side": "BUY",
  "instrument_id": "US0378331005",
  "instrument_id_type": "ISIN",
  "order_type": "MARKET",
  "quantity": "0",
  "user_instrument_fit_acknowledgement": true,
  "limit_price": "",
  "stop_price": "",
  "status": "FILLED",
  "fee": "0.0",
  "executions": [
    {
      "id": "b9dc0676-8a7d-412d-802a-3b325eefd15e",
      "side": "BUY",
      "currency": "EUR",
      "status": "FILLED",
      "order_id":  "eb5ba93f-5dfe-4bf1-8571-4da0caacc80c",
      "cash_amount": "1000",
      "share_quantity": "11.734334663",
      "price": "85.22",
      "transaction_time": "2021-07-21T14:10:00.020Z",
      "taxes": [
        {
          "type": "TOTAL",
          "amount": "0"
        }
      ],
      "venue_id": "20d6024b-2df4-41ae-8d42-62e4744e455b"
    }
  ],
  "client_reference": "",
  "initiation_flow": "API"
}
```

## Related events

Cash balance and positions also update when orders execute and settle. See the API References for [cash balance events](/api/cash-balances/cash_balance_event) and [positions events](/api/positions/position_event).