Connect to Bybit via Vezgo API

Beta

Accounts

Positions

Transactions

Support for Accounts, Positions and Transactions enabled.

Support for Positions & Balances:

  • Spot (Classic account)
  • Unified
  • Contract


Supported Transaction Types:

  • Deposits (on & off chain)
  • Withdrawals (on & off chain)
  • Trades (Unified accounts only)
  • Spot Repayment Sell/Buy (Unified accounts only)
  • Transfer In/Out (Unified accounts only)
  • Currency Buy/Sell (Unified accounts only)


Additional Notes:

  • Only successful transactions are imported.
  • We're working actively on enriching the supported transaction types


Full List of Integrations

Data mapping

A field-level guide to the Vezgo API data for Bybit — what each attribute means and where to read it — so you can map it into your own system.

DataWhere to read itSource on Bybit
Account & walletsaccount.wallets[]Bybit connects with an API key + secret (no OAuth, no wallet address); a read-only key is recommended. Bybit organizes holdings into account types — Spot, Unified (UTA) and Contract (derivatives) — and Vezgo surfaces each present account as an entry in account.wallets[] (name "<Type> Account", key on wallet.id). Bybit is a beta connector and does not support reconciliation or KYC.
Balances / positionsaccount.balances[]Per-coin wallet balances within each account. Each balance has ticker, amount, decimals and fiat_value (USD). asset_type is always "crypto" — Bybit holdings (including stablecoins) are all typed as crypto; there is no cash / staked / derivative asset_type. Balances can be negative on margin (borrowed). No ticker_address — exchange holdings are identified by ticker. A few Bybit-specific symbols are normalized to a readable name (e.g. MNT → Mantle).
TransactionsGET /accounts/:id/transactionsSpot and derivative (linear) trades, crypto-to-crypto convert, on-chain and internal deposits / withdrawals, transfers, and rewards / bonuses. A spot trade carries its two legs (base + quote) as parts. See "How to read a transaction" below. (The Contract account exposes balances only — no transaction history.)
Assets / securitiesbalance.tickerIdentified by ticker (e.g. BTC, ETH, USDT). No ticker_address — custodial exchange balances are not on-chain tokens.

How to read a transaction

Each Bybit activity maps to a Vezgo transaction. Read the value movement from parts[], and classify with transaction_type:

  • Value movement — parts[] (direction sent/received, ticker, provider_ticker, amount, fiat_value in USD). A spot trade and a convert each have two parts (base + quote / from + to); a derivative (linear) trade has one part, the contract quantity under the settlement-currency ticker; deposits, withdrawals, transfers and rewards have one part. On a Unified-account trade the sent part's amount is negative: take its absolute value and apply direction.
  • Type — transaction_type (trade / deposit / withdrawal / reward / bonus). Bybit carries no transaction_subtype; read a trade's buy vs sell from parts[].direction. A convert (crypto-to-crypto) is classified as a trade. misc.trade_category ("spot" / "linear") tells spot from derivative trades where it is set; Classic Spot accounts, and Unified-account trades imported before February 10, 2026, leave it unset. A spot trade has two parts and a linear trade one, on every account.
  • Fees — fees[] (the trade or network fee; fiat_value in USD, plus the native fee asset and amount). On a spot trade (misc.origin_type TRADE, with two parts) the parts are the fill amounts before the fee, and fees[] is charged on top: deduct it from the balance of the asset in fees[].ticker. A convert (misc.origin_type CONVERT) carries its cost in the rate: its parts are the exact amounts exchanged.
  • On-chain deposits / withdrawals carry the destination address in parts[].to_address and the blockchain hash in transaction_hash (Bybit's txID). There is no from_address and no misc.network (the chain is in the description). misc.origin_id is the Bybit id for the activity (execId / tradeId / withdrawId / txID); misc.origin_type is Bybit's raw activity type.
// One Vezgo transaction = a Bybit activity (a spot trade carries its two legs as parts)
const id   = tx.misc.origin_id;        // Bybit id (execId / tradeId / withdrawId / txID)
const kind = tx.misc.origin_type;      // raw Bybit type (TRADE, CONVERT, deposit_on_chain, TRANSFER_IN, REWARD, …)

const type  = tx.transaction_type;     // trade | deposit | withdrawal | reward | bonus
const parts = tx.parts ?? [];          // spot trade / convert = 2 legs; linear trade / deposit / withdrawal = 1
const fees  = tx.fees ?? [];           // trade / network fee; spot trades: charged on top — deduct it

if (tx.transaction_hash) { /* on-chain deposit/withdrawal — parts[].to_address is the destination */ }
// Bybit has no transaction_subtype (read buy/sell from parts[].direction) and no from_address.
// misc.trade_category = "spot" | "linear" where set (unset on Classic Spot accounts and on
// Unified-account trades imported before Feb 10, 2026): a spot trade has 2 parts, a linear trade 1.
// Unified-account trades: the sent part's amount is negative — use Math.abs(amount) with direction.
Where to read itAttributesWhat it is
tx.parts[]direction, ticker, provider_ticker, amount, fiat_value, to_addressValue movement. Spot trades and converts have 2 legs (base + quote); linear trades and deposits / withdrawals have 1. On Unified-account trades the sent leg's amount is negative. to_address (destination) is present only on on-chain deposits / withdrawals; there is no from_address.
tx.transaction_typetrade / deposit / withdrawal / reward / bonusNormalized classification — prefer it over the raw misc.origin_type. Bybit has no transaction_subtype; read buy vs sell from parts[].direction, and spot vs derivative from the part count (2 vs 1), or misc.trade_category where set.
tx.fees[] · tx.transaction_hashfees: ticker, amount, fiat_value · transaction_hash (txID)Trade / network fee (native asset + USD value), charged on top of a spot trade's parts — deduct it from the asset in fees[].ticker; a convert carries its cost in the rate. transaction_hash is the on-chain txID, present on on-chain deposits / withdrawals.

misc.origin_type is Bybit's raw activity type. Always classify off transaction_type. Common values:

  • TRADE
  • CONVERT
  • deposit_on_chain
  • deposit_off_chain
  • withdrawal_on_chain
  • withdrawal_off_chain
  • TRANSFER_IN
  • TRANSFER_OUT
  • CURRENCY_BUY
  • CURRENCY_SELL
  • AIRDROP
  • BONUS
  • REWARD
  • COMMISSION

Supported

  • Multiple account types — Spot, Unified (UTA), Contract — each surfaced as a wallet
  • Crypto balances (all asset_type crypto; stablecoins included)
  • Spot trades and crypto-to-crypto convert (legs carried as parts)
  • Derivative (linear) trades (one part under the settlement-currency ticker; misc.trade_category where set)
  • On-chain and internal deposits / withdrawals (with destination address and transaction_hash)
  • Transfers, airdrops, bonuses and rewards / commissions
  • USD fiat valuation for balances and transactions

Notes & limitations

  • Bybit is a beta connector.
  • Balances are the exchange's reported (custodial) holdings — there is no on-chain wallet address for balances.
  • The Contract (derivatives) account exposes balances only — no transaction history is imported for it.
  • Derivative (linear) trades surface as a single part — the contract quantity under the settlement-currency ticker — while spot trades have two; misc.trade_category also tells them apart where it is set.
  • Bybit carries no transaction_subtype — read buy vs sell from parts[].direction.
  • Deposits / withdrawals carry the destination to_address and a blockchain transaction_hash (txID), but no from_address and no misc.network (the chain is only in the description).
  • No KYC and no reconciliation (wallet.is_reconciled is not set).
  • Values are USD; fiat_value can be 0 when a USD rate is unavailable.
See the full Vezgo object reference

Try to connect to Bybit in our Demo Sandbox

Open Demo

Let's get you started

To get your API Keys, sign up on the portal or reach out to the team at sales@vezgo.com

You have questions? Contact us