Skip to main content
Refer to Websocket for establishing the websocket connection.

Account Transfers

Params

{
    "method": "subscribe",
    "params": {
        "source": "account_transfers",
        "account": "42trU9A5..."
    }
}

Stream

{
    "channel": "account_transfers",
    "data": {
        "u": "42trU9A5...",
        "e": "deposit",
        "a": "USDC",
        "am": "1000.000000",
        "t": 1716200000000,
        "tx": "5xGk...",
        "bn": 42,
        "ra": "1000.000000",
        "f": "0.500000"
    }
}
Note: the optional keys (tx, s, r, bn, ra, f) are omitted from the payload when they do not apply — they are not sent as null. Only u, e, a, am, and t are always present.
FieldTypeDescription
'u'stringAccount address
'e'stringTransfer event type: deposit, subaccount_transfer, withdrawal_pending, withdrawal_confirmed
'a'stringAsset symbol
'am'stringTransfer amount
't'numberTimestamp in milliseconds
'tx'string (optional)Transaction ID (omitted if not applicable)
's'string (optional)Source address (omitted if not applicable)
'r'string (optional)Receiver address (omitted if not applicable)
'bn'integer (optional)Batch nonce for withdrawals (omitted if not applicable)
'ra'string (optional)Requested amount before fees (omitted if not applicable)
'f'string (optional)Fee amount (omitted if not applicable)

Code Example (Python)

import asyncio
import json
import websockets

async def subscribe_account_transfers(account: str):
    uri = "wss://<exchange-ws-url>"
    async with websockets.connect(uri) as ws:
        await ws.send(json.dumps({
            "method": "subscribe",
            "params": {
                "source": "account_transfers",
                "account": account,
            },
        }))
        async for message in ws:
            data = json.loads(message)
            print(data)

asyncio.run(subscribe_account_transfers("42trU9A5..."))