Skip to main content

Transactions (Legacy)

Legacy Endpoint

This endpoint will be deprecated. Use /v1/transactions for new integrations. Migrate to V1 when made live.

Base URL: https://connect.kryptos.io/api

GET Transactions

GET /v0/transactions

Retrieve user's transaction history in legacy format.

Query Parameters

Same as /v1/transactions


POST Transactions

POST /v0/transactions

Create new transactions manually.

Required Permission: transactions:write

Request Body Schema

Getting Wallet IDs

To get valid walletId values for your connected wallets, call GET /api/integrations. See Integrations documentation for details.

{
walletId: string (required), // ID of the wallet for these transactions (get from integrations list)
transactions: [ // Array of transaction objects (min: 1, required)
{
timestamp: number (required), // Transaction timestamp in Unix milliseconds
transactionType: enum (required), // Must be: "deposit" | "withdrawal" | "trade" | "payment"
transactionId: string (required), // Unique transaction identifier

description?: { // Optional transaction description
title: string (required), // Transaction title
desc: string (required) // Detailed description
},

sentCurrency?: { // Optional - Currency sent
currency: string (required), // Currency symbol (e.g., "BTC", "ETH")
amount: number (required), // Amount of currency
contractAddress?: string // Token contract address (for ERC-20, etc)
},

sender?: { // Optional - For deposits: can attach sender details
name?: string, // Sender name in UPPERCASE (e.g., "BINANCE")
publicName?: string, // Public display name from integrations list (e.g., "Binance")
address?: string, // Blockchain address
walletId?: string, // Only if sender wallet exists in Kryptos system
logo_url?: string, // URL to wallet/provider logo
portfolioId?: string, // Portfolio identifier
portfolioName?: string // Portfolio name
} | null,

receivedCurrency?: { // Optional - Currency received
currency: string (required), // Currency symbol
amount: number (required), // Amount of currency
contractAddress?: string // Token contract address
},

receiver?: { // Optional - For withdrawals/payments: can attach receiver details
name?: string, // Receiver name in UPPERCASE (e.g., "COINBASE")
publicName?: string, // Public display name from integrations list (e.g., "Coinbase")
address?: string, // Blockchain address
walletId?: string, // Only if receiver wallet exists in Kryptos system
logo_url?: string, // URL to logo
portfolioId?: string, // Portfolio identifier
portfolioName?: string // Portfolio name
} | null,

fee?: { // Optional - Transaction fee
currency: string (required), // Fee currency symbol
amount: number (required), // Fee amount
contractAddress?: string // Token contract address
},

feeValue?: { // Optional - Fiat value of the fee
fiatValue: number | null, // Fiat value (can be null)
priceAccuracy?: string, // Price accuracy indicator (e.g., "high", "low")
baseCurrency?: string // Base currency (e.g., "USD", "EUR")
},

netValue?: { // Optional - Net fiat value of transaction
fiatValue: number | null, // Net fiat value (can be null)
priceAccuracy?: string, // Price accuracy indicator
baseCurrency?: string // Base currency
},

label?: enum // Optional - Must be one of the labels listed below
}
]
}
📄 Click to view full example
{
"walletId": "wallet_123",
"transactions": [
{
"timestamp": 1640995200000,
"transactionType": "trade",
"transactionId": "manual_001",
"description": {
"title": "Manual Trade",
"desc": "Bought Bitcoin"
},
"sentCurrency": {
"currency": "USD",
"amount": 50000,
"contractAddress": "0x..."
},
"sender": {
"name": "ETHEREUM",
"publicName": "Ethereum",
"address": "0x742d35...",
"walletId": "ethereum",
"logo_url": "https://storage.googleapis.com/kryptos-public/logos/ethereum.png",
"portfolioId": "portfolio_123",
"portfolioName": "Main Portfolio"
},
"receivedCurrency": {
"currency": "BTC",
"amount": 1.0,
"contractAddress": "0x..."
},
"receiver": {
"name": "BINANCE",
"publicName": "Binance",
"address": "0x123abc...",
"walletId": "binance",
"logo_url": "https://storage.googleapis.com/kryptos-public/logos/binance.png",
"portfolioId": "portfolio_456",
"portfolioName": "Exchange Portfolio"
},
"fee": {
"currency": "ETH",
"amount": 0.005,
"contractAddress": "0x..."
},
"feeValue": {
"fiatValue": 10.50,
"priceAccuracy": "high",
"baseCurrency": "USD"
},
"netValue": {
"fiatValue": 50010.50,
"priceAccuracy": "high",
"baseCurrency": "USD"
},
"label": "Buy"
}
]
}

Sender/Receiver Guidelines by Transaction Type

Sender/Receiver Integration Details

The walletId field in sender or receiver objects is only needed if the wallet exists in the Kryptos system. If the sending/receiving wallet is external (not tracked in Kryptos), you can omit the walletId and just provide address, name, etc.

When referencing an integration, the name and publicName fields must match the corresponding values from the Public Integrations List.

Transaction TypeWhen to Attach SenderWhen to Attach ReceiverNotes
depositRecommended❌ Not neededAttach sender details; walletId only if sender is in Kryptos
withdrawal❌ Not neededRecommendedAttach receiver details; walletId only if receiver is in Kryptos
payment❌ Not neededRecommendedMostly for fees; walletId only if receiver is in Kryptos
trade❌ Not needed❌ Not neededSwaps don't require sender/receiver attachment

Example for Deposit (sender is a Kryptos wallet):

{
"transactionType": "deposit",
"sender": {
"walletId": "binance",
"name": "BINANCE",
"publicName": "Binance"
}
}

Example for Deposit (sender is external):

{
"transactionType": "deposit",
"sender": {
"address": "0x1234567890abcdef",
"name": "EXTERNAL WALLET"
}
}

Example for Withdrawal (receiver is external):

{
"transactionType": "withdrawal",
"receiver": {
"address": "0xabcdef1234567890",
"name": "HARDWARE WALLET"
}
}
Deriving name and publicName
  • name: Use UPPERCASE (e.g., "BINANCE", "ETHEREUM")
  • publicName: Use the value from the Public Integrations List (e.g., "Binance", "Ethereum")

Transaction Labels

info

The label field must be one of the following values exactly as shown (case-sensitive). Each label is associated with a specific transaction type.

📋 Click to view all available labels (74 labels)
LabelTransaction TypeDescription
Add LiquiditytradeAdding tokens to a liquidity pool in DeFi protocols (e.g., Uniswap, PancakeSwap)
AirdropsdepositFree tokens received from blockchain projects or promotional campaigns
ApprovepaymentSmart contract approval to allow spending of tokens on your behalf
IncomedepositGeneral taxable income from cryptocurrency activities
BorrowdepositReceiving borrowed assets from DeFi lending protocols (Aave, Compound)
Borrow InterestwithdrawalInterest payments on borrowed assets in lending protocols
Bridge ReceivedepositReceiving tokens from a cross-chain bridge transfer
Bridge SendwithdrawalSending tokens through a cross-chain bridge to another blockchain
BurnwithdrawalPermanently destroying tokens by sending to a burn address
BuytradePurchasing cryptocurrency with another crypto or fiat currency
CashbackdepositRewards received back from purchases or transactions (e.g., crypto cards)
Casualty LosswithdrawalLoss of assets due to theft, hacks, or other unforeseen events
Collateral DepositwithdrawalDepositing assets as collateral for loans or leveraged positions
Collateral WithdrawaldepositWithdrawing collateral after closing positions or repaying loans
DeFi SwaptradeSwapping tokens through decentralized exchanges (DEXs) like Uniswap
DonationswithdrawalCharitable donations made in cryptocurrency
ExpensewithdrawalGeneral business or personal expenses paid in crypto
Failed*Transaction that failed to execute on-chain
Farming RewardsdepositYield farming rewards from providing liquidity or staking in DeFi
FeepaymentTransaction fees paid for on-chain operations (gas fees, network fees)
Fiat DepositdepositDepositing fiat currency to exchange or platform to buy crypto
Fiat WithdrawalwithdrawalConverting crypto to fiat and withdrawing to bank account
Funding Fee PaidwithdrawalPeriodic funding fees paid in perpetual futures trading
Funding Fee ReceiveddepositPeriodic funding fees received in perpetual futures trading
Futures ExpensepaymentCosts associated with futures and derivatives trading
ICO investmentwithdrawalParticipating in Initial Coin Offering by sending funds
Ignore*Transaction to be ignored for tax and accounting purposes
Incoming GiftdepositCryptocurrency received as a gift from another person
LendwithdrawalLending out assets to DeFi protocols to earn interest
Lend RedeemdepositRedeeming lent assets plus earned interest from lending protocols
LiquidationpaymentForced closure of position due to insufficient collateral
LoandepositReceiving a loan that must be repaid (not taxable income)
Loan InterestdepositInterest earned from lending assets to borrowers
Loan PaybackpaymentRepaying principal and interest on a crypto loan
LostwithdrawalPermanently lost access to assets (lost keys, forgotten passwords)
Margin FeepaymentFees for margin trading and leveraged positions
MiningdepositCryptocurrency rewards from mining blocks (PoW)
Mint NFTtradeCreating and minting a new NFT on blockchain
NFT BuytradePurchasing a non-fungible token (NFT)
NFT SelltradeSelling a non-fungible token (NFT)
Outgoing GiftwithdrawalSending cryptocurrency as a gift to another person
Realized LosswithdrawalLoss realized from selling crypto at lower price than purchase
Realized ProfitdepositProfit realized from selling crypto at higher price than purchase
Resource StakingwithdrawalStaking CPU/NET resources on blockchains like EOS
RewarddepositGeneral rewards from platform activities, promotions, or referrals
RoyaltiesdepositRoyalty payments received from NFT sales or content licensing
SelltradeSelling cryptocurrency for another crypto or fiat currency
Liquidity WithdrawaltradeRemoving liquidity from DeFi pools and receiving back LP tokens
SpamdepositUnwanted spam tokens sent to your wallet
StakewithdrawalLocking up tokens for staking to earn rewards (PoS)
UnstakedepositUnlocking and withdrawing staked tokens from staking protocols
Staking RewardsdepositRewards earned from staking tokens in proof-of-stake networks
Security Token Offering(STO)tradeParticipating in regulated Security Token Offering
StolenwithdrawalAssets stolen through hacks, scams, or unauthorized access
TradetradeGeneral cryptocurrency trading activity
WithdrawalwithdrawalWithdrawing cryptocurrency from exchange or platform to wallet
DepositdepositDepositing cryptocurrency from wallet to exchange or platform
PaymentpaymentMaking a payment for goods or services using cryptocurrency
SwaptradeExchanging one cryptocurrency for another
ForkdepositReceiving new tokens from blockchain fork (e.g., Bitcoin Cash from Bitcoin)
WraptradeWrapping tokens to use on different blockchain (e.g., ETH to WETH)
UnwraptradeUnwrapping tokens back to original form (e.g., WETH to ETH)
Buy (Fiat to Crypto)tradeDirect purchase of cryptocurrency using fiat money
Sell (Crypto to Fiat)tradeDirect sale of cryptocurrency for fiat money
Cross Chain SwapstradeSwapping assets across different blockchain networks
Rex WithdrawaldepositWithdrawing from REX (Resource Exchange) on EOS blockchain
Rex DepositwithdrawalDepositing to REX (Resource Exchange) on EOS blockchain
InterestdepositInterest earned from savings accounts or interest-bearing products
EarndepositEarnings from various platform earn programs or savings products
Centralized StakewithdrawalStaking through centralized exchange staking programs
Centralized LendingwithdrawalLending through centralized exchange lending programs
Vault DepositwithdrawalDepositing assets into yield vaults for automated strategies
Vault WithdrawaldepositWithdrawing assets and returns from yield vaults
note

* indicates the label can be used with any transaction type.

Response

{
"message": "1 transaction(s) created successfully",
"data": [],
"count": 1,
"user_id": "user_123",
"timestamp": 1640995200000
}

Error Responses

400 Bad Request - Invalid Parameters

{
"error": "invalid_parameters",
"message": "Invalid request body",
"details": [
{
"path": ["transactions", 0, "timestamp"],
"message": "Required"
}
]
}

404 Not Found - Wallet Not Found

{
"error": "wallet_not_found",
"message": "Wallet not found"
}

500 Internal Server Error

{
"error": "internal_server_error",
"message": "Failed to create transactions"
}