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.