OTC Trading
OTC Trading
This guide covers the OTC (Over-the-Counter) trading workflow for executing trades with external dealers.
Overview
OTC trading allows clients to execute large trades with external dealers, with the platform acting as an intermediary. This avoids impacting the public order book on the Marketplace.
Prerequisites
- Authenticated session (JWT or API key)
CanTradepermission- Sub-account with
venue=VENUE_OTCor OTC-enabled - Pair must have
otcTradable= true
Step 1: Check OTC Listing
Before trading, verify that OTC trading is available for your desired pair.
Endpoint: GET /api/rest/v1/otc/listings/{pairId}
Request
Response (200 OK)
Listing Fields
Step 2: Create OTC Order
Submit an OTC order for execution.
Endpoint: POST /api/rest/v1/otc/orders
Request
Request Fields
Order Types
Stop Orders
Stop and stop-limit orders are created by adding stopParams to the parameters field. Use TYPE_MARKET with stopParams for a stop order, or TYPE_LIMIT with stopParams for a stop-limit order. See Stop Order Example below.
Time in Force
Response (200 OK)
Step 3: List OTC Orders
View your OTC orders.
Endpoint: GET /api/rest/v1/otc/orders/by-sub-account/{subAccountId}
Request
Query Parameters
This endpoint supports standard pagination, sorting, and filtering.
Supported filters: status, side, pair_id
Response (200 OK)
OTC Order Status Values
Step 4: Get Specific OTC Order
Endpoint: GET /api/rest/v1/otc/orders/by-sub-account/{subAccountId}/{orderId}
Request
Response (200 OK)
Step 5: Cancel OTC Order
Cancel an open OTC order.
Endpoint: DELETE /api/rest/v1/otc/orders/by-sub-account/{subAccountId}/{orderId}
Request
Response (200 OK)
Empty response on success.
Step 6: View OTC Trades
View executed OTC trades.
Endpoint: GET /api/rest/v1/otc/trades/by-sub-account/{subAccountId}
Request
Query Parameters
This endpoint supports standard pagination and filtering.
Supported filters: order_id, side, pair_id
Sort restriction: OTC trades can only be sorted by executed_at:
sort=executed_at-desc(default)sort=executed_at-asc
Note: Unlike other endpoints, sorting by
created_atis not supported and will return a 400 error.
Response (200 OK)
Step 7: Get Specific OTC Trade
Endpoint: GET /api/rest/v1/otc/trades/by-sub-account/{subAccountId}/{tradeId}
Request
Step 8: View Quotes (Optional)
View quotes associated with your orders.
Endpoint: GET /api/rest/v1/quotes/by-sub-account/{subAccountId}
Request
Query Parameters
This endpoint supports standard pagination, sorting, and filtering.
Supported filters: status, side, pair_id
Response (200 OK)
Quote Status Values
Get Specific Quote
Endpoint: GET /api/rest/v1/quotes/by-sub-account/{subAccountId}/rfq/{rfqId}
TWAP Order Example
Create a TWAP (Time-Weighted Average Price) order:
Stop Order Example
Create a stop-limit order that triggers when the price reaches 44000.00:
For a stop (market) order, use TYPE_MARKET instead of TYPE_LIMIT and omit the price field:
Stop Parameters
Error Scenarios
Related
- Trading Data - Market data and pricing
- Wallet Information - Balance verification
- Domains: Trading - Full trading API reference