Skip to main content

Trading behaviour

Answers to the questions a market-making client has to settle before going live.

Matching

Price-time priority. Resting orders are filled best price first, and within a price level in the order they arrived.

Self-trading. By default, two orders of the same account match like any others. Set selfTradePrevention on the order to change that — see Execution options. The setting is read from both orders and the stricter intent wins, so an order that asked for protection keeps it even against one that did not.

Post-only. Set postOnly: true to have an order rejected rather than executed if it would take liquidity on arrival. This is the safe way to quote without ever paying taker fees or crossing your own book.

Market orders fill against the book until the reserved amount is exhausted; whatever cannot fill is killed rather than left resting. postOnly is ignored for them.

Cancelling

DELETE /api/orders/{orderId} cancels one order; DELETE /api/orders?currencyPairCode=… cancels every order you hold on a pair.

There is no batch placement and no batch cancel by id list — place and cancel one order per request, within the rate limit. If you need to cancel selectively, tag your orders with clientOrderId and cancel the ids you placed; cancel-all would also remove orders entered by hand on the same account.

There is no cancel-on-disconnect: the market-data websocket carries no orders, and losing it leaves your book untouched. Cancel explicitly if a disconnect should flatten your quotes.

Currency codes

A currency code is not restricted to letters. USDT.Z is a valid code — the dot is part of the code, and codes for the same asset on different chains are distinguished this way. Treat the code as an opaque string, and never parse it. In a currency pair code the separator is _ (BASE_QUOTE, e.g. USDT.Z_BTC), so split a pair on _ only, never on ..

GET /api/currencies returns the authoritative list.

Precision

Prices and amounts are rounded down to the pair's configured digits when an order is placed, so the accepted order can be slightly smaller than requested. GET /api/currencies/pairs reports digitsPrice, digitsAmount, minBaseAmount and minQuoteAmount per pair — round on your side to the same digits to keep your view and ours in agreement.