Account Trade Channel
Authenticated per-fill (execution) stream for your account
Channel name: account_trade
Streams individual fills for your account as they execute. Unlike the order channel
(which reports order-level aggregates: filled_sz, avg_px, tot_fees), this channel
gives per-fill detail: execution price, fill id, fee amount and asset, and maker/taker role.
Includes both order-book and OTC fills.
Authentication
You must send a successful auth message before subscribing.
{ "op": "sub", "channel": "account_trade" }The stream is account-scoped. You may optionally pass { "market": "BTC-PERP" } to receive
fills for a single market only.
Message Types
There is no snapshot for this channel - only live fills are pushed after subscribing. To backfill historical fills, use REST GET getAccountTradeHistory.
Update
Each message contains an array of fills produced by a single execution event. A single order that fills against multiple resting orders produces multiple entries.
{
"channel": "account_trade",
"type": "update",
"filter": "BTC-PERP",
"data": [
{
"id": "0xabc...",
"mkt_id": "BTC-PERP",
"oid": "550e8400-e29b-41d4-a716-446655440000",
"sd": "ORDER_SIDE_BUY",
"px": "64519.00",
"sz": "0.01",
"quote_sz": "645.19",
"fee_rt": "0.0005",
"fee_asset": "USDC",
"fee_amt": "0.322595",
"liq": "LIQUIDITY_TAKER",
"seq_fee_amt": "0",
"liq_fee_amt": "0",
"ts": "1784170121595176777"
}
],
"gsn": 646233901,
"ts": "1784170121595176777"
}Fields
Fills use the same v1AccountTrade schema as REST GET getAccountTradeHistory.
| Field | Type | Description |
|---|---|---|
id | string | Fill (match) ID |
mkt_id | string | Market ID |
oid | string | Order ID this fill belongs to (join to the order channel) |
sd | string | Your side for this fill: ORDER_SIDE_BUY or ORDER_SIDE_SELL |
px | string | Execution price |
sz | string | Fill size (base asset) |
quote_sz | string | Fill size (quote asset) |
fee_rt | string | Fee rate applied to this fill |
fee_asset | string | Asset the fee was charged in |
fee_amt | string | Fee amount charged for this fill |
liq | string | LIQUIDITY_MAKER or LIQUIDITY_TAKER |
seq_fee_amt | string | Sequencer fee amount (taker only, 0 for maker) |
liq_fee_amt | string | Liquidation fee amount (taker liquidation only, 0 otherwise) |
ts | string | Fill timestamp in nanoseconds |
Notes
- Both sides are notified. Each fill is delivered to the maker account and the taker
account, each from its own perspective (
liq,sd, and fee fields reflect your role). - Self-trades are prevented. Your own maker and taker orders never match each other (self-trade prevention defaults to cancelling the taker), so you will not receive both-side fills for a match against yourself.