
Connect to Kraken via Vezgo API
Accounts
Positions
Transactions
Support for Accounts, Positions and Transactions enabled.
Support for Positions & Balances:
- Spot
- Staking
Supported Transactions Types:
- Spot: Trades, Deposits, and Withdrawals
- Staking, Unstaking & Rewards.
Additional Notes:
- Import up to 4000 transactions per sync operation.
Data mapping
A field-level guide to the Vezgo API data for Kraken — what each attribute means and where to read it — so you can map it into your own system.
| Data | Where to read it | Source on Kraken |
|---|---|---|
| Account & wallet | account.wallets[] | Kraken connects with an API key + secret (no OAuth, no wallet address); a read-only key is recommended. A connection is a single custodial account, surfaced as one entry in account.wallets[] (key on wallet.id). wallet.is_reconciled may be present (Kraken supports reconciliation), indicating balances were reconciled from transaction history. |
| Balances / positions | account.balances[] | Per-asset balances on the Kraken account. Each balance has ticker, amount, decimals and fiat_value (USD). asset_type is "crypto", "staked" for staking (.S) assets, "cash" only for the account's USD holding (name null), or "cash_equivalent" for everything else off the crypto reference list (including non-USD fiat such as EUR/GBP). Staked balances keep the base ticker but carry provider_ticker with a .staked suffix (e.g. ticker ETH, provider_ticker ETH.staked). Margin / pooled (.M / .P) balances are folded into the base asset. No ticker_address — exchange holdings are identified by ticker. |
| Transactions | GET /accounts/:id/transactions | Trades, deposits/withdrawals, and staking / unstaking / rewards from the Kraken ledger. A trade's two ledger legs are reconciled into one transaction. See "How to read a transaction" below. |
| Assets / securities | balance.ticker | Identified by ticker (e.g. BTC, ETH). Kraken's staking / margin / pooled suffixes (.S / .M / .P) are stripped to the base ticker. No ticker_address — custodial exchange balances are not on-chain tokens. |
How to read a transaction
Each Kraken ledger activity maps to a Vezgo transaction. Read the value movement from parts[], and classify with transaction_type / transaction_subtype:
- Value movement — parts[] (direction sent/received, ticker, provider_ticker, amount, fiat_value). A trade reconciles its two ledger legs into one transaction with two parts; staking / unstaking also produce two legs that share the base ticker but differ by provider_ticker (base vs base.staked). Other activities have one part.
- Type — transaction_type (trade / deposit / withdrawal / staking / unstaking / reward / other). transaction_subtype refines non-trade activity: buy / sell (on type "other") and fiat_deposit / fiat_withdrawal for fiat movements; trades carry no subtype.
- Fees — fees[] (the ledger fee).
- misc.origin_id is the Kraken referenceId for trades and staking / unstaking / reward (it groups a trade's two legs); for deposits / withdrawals it is the per-entry ledger id, with the referenceId in misc.ref_id. For trades / deposits / withdrawals misc also carries ref_id plus per-leg sent_id / received_id; staking / unstaking / reward carry only origin_id and origin_type. Kraken data comes from the ledger API, so transactions have no on-chain address.
// One Vezgo transaction = a Kraken ledger activity (trade legs reconciled into one)
const id = tx.misc.origin_id; // referenceId for trades/staking; ledger entry id for deposits/withdrawals
const kind = tx.misc.origin_type; // surfaced ledger/activity type (trade, transaction, staking, …)
const type = tx.transaction_type; // trade | deposit | withdrawal | staking | reward | other
const subtype = tx.transaction_subtype; // buy | sell | fiat_deposit | fiat_withdrawal (non-trade only)
const parts = tx.parts ?? []; // trade / staking = 2 legs; else 1
const fees = tx.fees ?? []; // ledger fee
// Kraken has no tokenTransfers / nftTransfers / internalTransfers, no on-chain address,
// and no blockchain transaction_hash (data is from the Kraken ledger API).| Where to read it | Attributes | What it is |
|---|---|---|
tx.parts[] | direction, ticker, provider_ticker, amount, fiat_value | Value movement. Trades and staking have 2 legs (staking legs share ticker, differ by provider_ticker base vs base.staked); other activities have 1. No address (Kraken data is from the ledger API). |
tx.transaction_type · transaction_subtype | trade/deposit/withdrawal/staking/unstaking/reward/other · buy, sell, fiat_deposit, fiat_withdrawal | Normalized classification — prefer these over the raw misc.origin_type. Subtypes refine non-trade activity; trades carry no subtype. |
tx.fees[] | ticker, amount, fiat_value | Ledger / trade fee. |
misc.origin_type is Kraken's surfaced ledger/activity type — trade / transaction / spend / receive come straight from the ledger, while staking / unstaking / reward are Vezgo-normalized; deposits and withdrawals surface as "transaction" (use transaction_type for direction). Common values:
- trade
- staking
- unstaking
- reward
- transaction
- spend
- receive
Supported
- Crypto and fiat balances
- Trades (legs reconciled into one transaction)
- Deposits and withdrawals (fiat and crypto)
- Staking / unstaking and staking rewards
- Margin and pooled balances (folded into the base asset)
- USD fiat valuation for balances and transactions
Notes & limitations
- Balances are the exchange's reported (custodial) holdings — there is no on-chain wallet address.
- A read-only API key is recommended; write-permission rejection is enforced only for clients with that feature enabled, and the check is best-effort.
- Transactions carry no blockchain transaction_hash and no on-chain address (data is from the Kraken ledger API); misc carries ref_id plus per-leg sent_id / received_id for trades / deposits / withdrawals.
- An asset held both spot and staked is consolidated into a single balance keyed on the base ticker, so a distinct asset_type "staked" balance may not appear in that case.
- Unlisted assets are typed as cash_equivalent.
Try to connect to Kraken in our Demo Sandbox
Open DemoLet's get you started
To get your API Keys, sign up on the portal or reach out to the team at sales@vezgo.com