Buy, sell, and swap
Wallet proforma then execute for buy, sell, and pocket-to-pocket moves.
Wallet conversion uses a proforma (quote) and a separate execute call. No funds move until you confirm the proforma.
Every proforma goes to:
POST /v1/wallet/transaction/proformaSend X-SUBACCOUNT-ID for end-user wallets. The response carries the proforma id you execute afterwards. More bodies are in the REST reference.
Buy
Set operation and a pair. This example buys 100 EUR worth of BTC:
{
"operation": "buy",
"pair": "BTC/EUR",
"amount": "100",
"currency": "EUR"
}Or name the pockets explicitly (fiat pocket → crypto pocket):
{
"pocket": "<EUR pocket UUID>",
"destination": { "pocket": "<BTC pocket UUID>" },
"amount": "100",
"currency": "EUR"
}Sell
This example sells 0.001 BTC:
{
"operation": "sell",
"pair": "BTC/EUR",
"amount": "0.001",
"currency": "BTC"
}With pockets, swap the source and destination and set amount / currency to the crypto you are selling:
{
"pocket": "<BTC pocket UUID>",
"destination": { "pocket": "<EUR pocket UUID>" },
"amount": "0.001",
"currency": "BTC"
}Swap (crypto → crypto)
Move value between two crypto pockets. type: "SEA" (Send Exact Amount) fixes the amount that leaves the source pocket; REA (Receive Exact Amount) fixes the amount that arrives.
{
"pocket": "<BTC pocket UUID>",
"amount": "0.001",
"currency": "BTC",
"destination": { "pocket": "<ETH pocket UUID>" },
"type": "SEA",
"userCurrency": "EUR"
}Execute
POST /v1/wallet/transaction{
"proforma": "<proforma id>"
}Execute before expirationTime on the proforma. Some operations require x-totp and x-totp-type. For subaccounts, x-totp-type is always gauth.
Listen for settlement
Prefer WebSocket wallet-transaction-v1 over tight polling. See Notifications.
Spot Trading API uses a different order model (POST /v1/trading/order) with its own balances. Wallet pair and Pro symbol share the BTC/EUR format; MCP tools use BTC-EUR. Do not mix formats on the same call.