Skip to main content
Bullionwale gives your account a weight allocation per metal. Your open net position (buys minus sells) uses it, and an order that would take it past the allocation is refused with 400 limit_exceeded. It is weight, not money: there is no cash balance, no margin and no rupee limit. GET /limits shows the allocation and how much of it is used, so your program can size an order before it sends it.

The limits object

One entry per metal, gold and silver: Every weight is a decimal string with 4 decimals, such as "960.0000". Parse it as a decimal, not a float. The unit is the metal’s: gold in grams and silver in kilograms, whatever symbol you trade (see Units and pricing).

Read your limits

200 OK
This is the test path, so the figures are the test book’s: the account’s allocation is 1,000 g of gold and its test orders hold a net 40 g, so a test order may add up to 960 g more. Its resting test limit orders would add 20 g if they all triggered. On the production path the same fields describe your real position.

How the allocation is applied

  • It caps open exposure, not turnover. Buys and sells net off: after buying 40 g and selling 40 g of gold, used is back to 0.0000.
  • An order that adds exposure must fit in free. With free at 960.0000 g, a 1,000 g gold buy is refused with 400 limit_exceeded; a 960 g buy is accepted.
  • An order that reduces exposure is always allowed, even when used is above limit (for example after Bullionwale lowered your allocation). With a net long of 40 g, a 40 g sell always goes through.
  • Pending orders count. In production, an order still pending already counts towards used.
  • Resting limit orders do not hold allocation. They count only when they trigger and book; reserved shows what they would need, so keep that much free if you want them all to be able to fire. When a limit order triggers, it is checked against your allocation at that moment, like a market order (see Limit orders).
  • No allocation, no trading. An account without an allocation shows 0.0000 for both metals and cannot open a position.
To change your allocation, ask your Bullionwale relationship manager or the Bullionwale desk.

Test and production

Both environments return your real allocation as limit. In production, used, free and reserved describe your real position and your real resting limit orders. In test, used, free and reserved come from your test book: your test orders (the same net position as the test GET /positions, see Positions) and your pending test limit orders. That is exactly how a test order’s weight check works, so test free is the room a test order has: a test buy larger than free is refused with 400 limit_exceeded, quoting the same figure. Real orders never change the test numbers, and test orders never change the production ones.

Errors

GET /limits itself refuses nothing else. The refusal it helps you avoid is 400 limit_exceeded on POST /orders. Every code is in the Error reference.