> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bullionwale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Market hours

> The IST trading clock, the official closing price, and when an order is refused because the market is not live.

Bullionwale prices follow the live exchange market. All times on this page are **India Standard Time** (IST, UTC+05:30).

## The trading day

| Time (IST) | What happens |
| - | - |
| 09:00 | The trading day starts. Daily figures, such as the day's high and low, reset. |
| 23:30 | The market closes. |
| 23:32, Monday to Friday | Each symbol's last live price of the day is recorded as its **official closing price**. |

There is no official close on Saturday or Sunday. The closing time can move with the exchange's seasonal timings.

## When orders are accepted

The API has no clock of its own for orders: an order is accepted whenever the symbol has a live, confirmed price and trading is not halted. Outside market hours there is no live price, so orders are refused by the price checks:

| Code | Status | When |
| - | - | - |
| `stale_rate` | 503 | The price feed has not confirmed the symbol's price in the last few seconds, for example after the close or while the feed is paused. |
| `no_live_price` | 400 | The symbol has no live price at all right now. |
| `trading_halted` | 403 | Bullionwale has halted trading. |
| `symbol_frozen` | 400 | The symbol's price feed is frozen. |
| `symbol_not_trading` | 400 | Trading is off for this symbol. |

Nothing is booked when an order is refused for these reasons. `stale_rate` is often brief: retry after a short wait with the **same** `Idempotency-Key`. The others last longer; try again later. Reads (every `GET` call) work at any time.

To check before you order: `GET /market/status` shows whether trading is halted, which symbols are frozen, the clock above and your rates at the latest official close (see [Market status](/api-reference/market/overview)), and `GET /rates` flags each symbol's rate as `stale` or not trading (see [Market data](/api-reference/rates/overview)).

The same checks apply to test orders, so you can see these refusals in the test environment too.

## Times in the API

* Times in responses are ISO 8601 with their UTC offset, for example `2026-10-14T15:01:05.120000+05:30`.
* A `since` filter without a zone is read as **UTC**, not IST. Send the offset (`2026-10-14T09:00:00+05:30`) to mean IST.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.