This article is not tax advice. Talk to a tax professional about your own situation. Email team@awaken.tax and we can connect you with a crypto CPA. Questions about anything below? Email us. We are happy to help.
How do labels work?
A label tells Awaken what a transaction is. Awaken then decides three things:
Did you sell anything? If yes, we calculate a capital gain or loss on what you sent.
Did you earn anything? If yes, we record income at the USD value on that day.
What is the cost basis of what you received? Cost basis is the price you "paid". We use it later when you sell.
Most transactions are labeled for you automatically. You only need to label the ones marked Needs Review, or ones we got wrong.
Quick rules:
Awaken sees a transaction as sent tokens and received tokens. Labels describe what happened to each side.
A label with Swap in the name always means: you sent one thing and received another, and we treat the sent thing as sold.
A label with Deposit or Withdraw in the name means: you moved a token into or out of a protocol, and we do not treat it as sold. Your cost basis carries over.
Network fees (gas) are handled automatically. You do not need a separate label for them.
What labels are available?
Reading the examples:
Each label below has a small example in this format:
sent: 1 ETH → received: 2,000 USDC
What this means: "sent" is what left your wallet. "received" is what came in.
TRADING
🪙 Trade / Swap
You exchanged one coin for another.
Tax: Capital gain/loss on the coin you sent. Fees are added to the cost basis of the coin you received.
Example: sent: 1 ETH → received: 3,000 USDC. If you bought that ETH for $2,000, you have a $1,000 gain. Your 3,000 USDC now has a cost basis of $3,000 plus fees.
Use it when: any DEX or exchange trade, coin to coin.
🪙 Coin Buy
You received a coin, but the payment is not in this transaction (for example, you paid by card or bank).
Tax: No gain/loss. The coin you received needs a cost basis. Set it to what you actually paid (in USD), plus any fee.
Example: received: 1 ETH from MoonPay. You paid $2,050 by card. Edit the cost basis of the ETH to $2,050.
Use it when: on-ramps, or when only one half of a trade is imported.
🪙 Coin Sell
You sent a coin, but the payment you got is not in this transaction.
Tax: Capital gain/loss on the coin you sent, at market price.
Example: sent: 1 ETH. You received $3,000 to your bank. We record a sale of 1 ETH at $3,000.
Use it when: off-ramps, or when only one half of a trade is imported.
🖼️ NFT Swap
You sent an NFT and received an NFT in the same transaction. This includes burn-and-mint upgrades.
Tax: Capital gain/loss on the NFT you sent. Fees are added to the cost basis of the NFT you received.
Example: sent: NFT A → received: NFT B.
🖼️ NFT Buy / Mint
You bought or minted an NFT with a regular token.
Tax: Capital gain/loss on the token you sent. Token value plus fees becomes the cost basis of the NFT.
Example: sent: 2 ETH → received: 1 NFT. If your ETH cost $1,500 each and is now $2,000 each, you have a $1,000 gain. The NFT has a $4,000 cost basis (plus fees).
🖼️ NFT Sell / Burn
You sold an NFT for a regular token, or burned it.
Tax: Capital gain/loss on the NFT. Fees are added to the cost basis of what you received.
Example: sent: 1 NFT → received: 3 ETH.
🖼️ NFT Bid, 🖼️ NFT List, 🖼️ NFT List/Bid Cancel
Placing a bid, listing an NFT, or cancelling either.
Tax: None. These are bookkeeping labels. Nothing is sold or earned.
Important: Only use NFT Bid if you later cancelled the bid. If the bid won, the escrow payment is a purchase. Label it NFT Buy / Mint (or Coin Sell if the NFT arrives in a separate transaction).
Example: sent: 10 ETH to a bid escrow (NFT Bid) … later received: 10 ETH back (NFT List/Bid Cancel).
🔄 Wrapping / Unwrapping
You used a wrapping contract directly (ETH ↔ WETH, HYPE ↔ WHYPE).
Tax: By default this is a swap and realizes gain/loss. Turn on Settings → Advanced Tax Features → Wrapping Non-Taxable to carry your cost basis over instead.
Example: sent: 10 ETH → received: 10 WETH.
Do not use it for: trading ETH for WETH on a DEX. That is a normal Trade / Swap.
🤝 OTC Trade
You bought or sold a token off-exchange, directly with another party.
Tax: Same as Trade / Swap. Gain/loss on what you sent.
Example: sent: 1,000 HYPE → received: 10,000 USDC.
STAKING
🥩 Staking Deposit
You put a token into a protocol and did not get a token back.
Tax: Not a sale. Your cost basis waits in the protocol. Any fee goes to Rewards Expenses, which offsets staking income later.
Example: sent: 100 SOL to a validator. Nothing received.
Also use it for: liquidity deposits that do not give you an LP token (some Uniswap V3 pools, Meteora, and similar).
Do not use it when: there are many sends and receives. Pick a Swap label instead.
🥩 Unstaking Withdraw
You took back a token you had deposited. No token was sent.
Tax: The amount you originally deposited comes back with its old cost basis. Anything extra is income at that day's price. Fees go to Rewards Expenses.
Example: you deposited 500 LOOKS. You withdraw 1,000 LOOKS at $10. The first 500 keep their old basis. The other 500 are $5,000 of income.
Also use it for: liquidity withdrawals that did not give you an LP token.
🥩 Claim Rewards
You claimed staking rewards.
Tax: Income at the USD value on that day. Fees go to Rewards Expenses.
Example: received: 50 LOOKS at $10 = $500 of income.
Setting: turn on Automated Staking Rewards Non-Taxable to give the rewards a $0 basis and no income instead.
🥩 Staking Swap / 🥩 Unstaking Swap
You deposited a token and got a different token back that represents the position, or you returned that token.
Tax: By default a full sale of the token you sent. Turn on Staking Swaps Non-Taxable in Advanced Tax Features to carry basis over.
Example: sent: 1 ETH → received: 1 cbETH (Staking Swap). Later, sent: 1 cbETH → received: 1.05 ETH (Unstaking Swap).
Compare with LST Mint: if you minted directly through the LST's own contract, use LST Mint instead.
⚗️ LST Mint / ⚗️ LST Redeem
You minted a liquid staking token by depositing the native asset directly through the LST's contract, or you redeemed it back. Examples: SOL ↔ jitoSOL, mSOL; ETH ↔ stETH, rETH.
Tax: By default a sale. Turn on LSTs Non-Taxable in Advanced Tax Features to carry basis from SOL into jitoSOL and back.
Example: sent: 100 SOL → received: 92 jitoSOL (LST Mint). Later, sent: 92 jitoSOL → received: 105 SOL (LST Redeem).
Do not use it for: buying jitoSOL on Jupiter or another DEX. That is a Trade / Swap.
🔓 Position Release
A system label. Awaken creates it when you use Release virtual account on a protocol position (staking, lending, LP) that was closed without a transaction from your wallet, for example a liquidator or keeper closed it.
Tax: Non-taxable. It moves what the position still held back into your wallet, keeping the cost basis.
You cannot pick this label by hand. Use the release flow on the position instead.
LIQUIDITY PROVIDING
🧬 Add Liquidity Swap
You added tokens to a pool and received an LP token that represents your share.
Tax: By default a sale of every token you sent. Turn on Liquidity Non-Taxable in Advanced Tax Features to carry basis into the LP token instead.
Example: sent: 1 ETH + 3,000 USDC → received: 1 UNI-V2 ETH/USDC.
🧬 Remove Liquidity Swap
You returned your LP token and got the underlying tokens back.
Tax: Sale of the LP token. Gain = value of tokens received − cost basis of the LP token.
Example: sent: 1 UNI-V2 → received: 1 ETH + 3,200 USDC. If the LP token's basis was $6,000 and you received $6,400 of tokens, you have a $400 gain.
🧬 Deposit Liquidity / 🧬 Withdraw Liquidity
You added or removed liquidity but there was no LP token.
Tax: Same as Staking Deposit / Unstaking Withdraw. Not a sale. Basis waits in the pool. Extra tokens on withdrawal are income.
Example: sent: 1 ETH + 3,000 USDC (Deposit Liquidity). Later received: 0.9 ETH + 3,400 USDC (Withdraw Liquidity).
Use it when: Uniswap V3 NFTs, Meteora DLMM, Raydium CLMM, and other pools that track your position without a fungible token.
LOANS
🤝 Lend Deposit
You lent a token and received nothing back (or only a small reward).
Tax: Not a sale. It is collateral. Basis returns to you on withdrawal. Any reward received is income.
Example: sent: 1,000 USDC to Morpho. Nothing received.
🤝 Lend Swap
You lent a token and received a receipt token.
Tax: Sale of the token you sent.
Example: sent: 1,000 USDC → received: 1,000 aUSDC.
🤝 Lend & Borrow
You deposited collateral and borrowed in the same transaction.
Tax: Collateral is not sold. Borrowed tokens are not income. We record a loan liability.
Example: sent: 1 ETH → received: 1 aETH and 1,500 DAI (borrowed).
🤝 Borrow
You borrowed tokens against collateral.
Tax: No gain, no income. The tokens come in at market value and we record a Loan Liability for that amount.
Example: received: 1,500 DAI after posting an NFT as collateral.
🤝 Repay
You paid back a loan.
Tax: No gain/loss on the tokens you sent. Awaken does not calculate interest. If you paid interest, note the amount on the transaction and ask your tax advisor.
Example: sent: 1,500 DAI.
🤝 Repay & Withdraw
You paid back a loan and got your collateral back in the same transaction.
Tax: No gain/loss on the repayment. Collateral returns with its original basis.
Example: sent: 1,500 DAI → received: 1 ETH (your collateral).
🤝 Withdraw
You took your lent tokens back. No receipt token was sent.
Tax: Original basis comes back. Any extra (interest) is income.
Example: received: 1,013 USDC after lending 1,000 USDC. The 13 USDC is income.
🤝 Withdraw Swap
You returned a receipt token and got the underlying back.
Tax: Sale of the receipt token.
Example: sent: 1,000 aUSDC → received: 1,013 USDC.
PAYMENTS & TRANSFERS
🔁 Wallet Transfer
You moved tokens between your own wallets or exchanges.
Tax: None. Cost basis moves with the tokens.
Only use it when you cannot import the other account. If both accounts are in Awaken, we match the transfer for you.
Rule: the transaction must have only a send or only a receive, not both.
Example: sent: 1 ETH from MetaMask to Coinbase.
🌉 Bridging
You sent tokens to a bridge, or received them on the other chain.
Tax: Non-taxable by default. Basis carries across chains.
If both sides are imported they sync automatically. If not, select both transactions and click Bridge. See how to edit bridging transactions: https://help.awaken.tax/en/articles/13393399
Example: sent: 1 ETH on Arbitrum … received: 0.999 ETH on Base.
⬇️ Receive
Someone sent you tokens that are not income. A refund, a repayment from a friend, or a move between your business and personal wallet.
Tax: None.
Example: received: 0.05 ETH from a friend who owed you for dinner.
Do not use it for: payment for work. That is Income.
💳 Payment
You paid for goods or services with crypto.
Tax: Sale of the tokens you sent at market value.
Example: sent: 0.01 BTC for a laptop. If you bought that BTC for $300 and it is worth $600 today, you have a $300 gain.
🤲 Donation
You donated to a qualified non-profit.
Tax: No gain/loss. We record a Donation Expense for the USD value on that day.
Example: sent: 1 ETH worth $2,000 to Gitcoin Grants = $2,000 donation expense.
🎁 Gift
You gave crypto to a friend or family member.
Tax: Not a sale. Check with a tax advisor. There are yearly gift limits.
Example: sent: 0.5 ETH to your sibling.
German users: also use this for gifts you received, including unsolicited airdrops.
🌱 Investment Delivery
You sent funds to a private investment (for example a startup round through Echo).
Tax: Not a sale. Basis moves into the investment.
Example: sent: 50,000 USDC to an Echo deal. See Echo investments: https://help.awaken.tax/en/articles/11004519-echo-investments
⏭️ Token Migration
A token was replaced by a new one (contract upgrade, rebrand, redenomination).
Tax: None. All tax lots of the old token move to the new token.
Example: sent: 100 OLD … received: 100 NEW.
Compare with Trade / Swap: a normal swap sells the old token. A migration keeps every lot and its purchase date.
INCOME
All labels in this section record ordinary income at the USD value on the day you received the tokens. That value also becomes the cost basis.
🪂 Airdrop
Tokens dropped into your wallet by a protocol.
Example: received: 500 LOOKS at $5 = $2,500 income.
Setting: turn on Airdrops Non-Taxable to receive them at $0 basis with no income.
Worthless token you did not ask for? Use Spam instead.
💸 Income
You were paid in crypto for work, goods, or services.
Example: received: 1,000 USDC for a contract job = $1,000 income.
💸 Rewards
Rewards that are not from staking. Protocol incentives, exchange rewards, referral bonuses.
Example: received: 100 LDO from a liquidity incentive program.
Compare with Claim Rewards: use Claim Rewards when the tokens come from staking. Use Rewards for everything else.
⛏ Mining Income
Tokens you received from mining.
Example: received: 0.1 ETH from a mining pool.
👑 NFT Royalties
Royalty income from a collection you created.
Example: received: 0.5 ETH royalty on a secondary sale.
✍️ Income Expense
An expense that reduces your income. Electricity for mining, contractor payments for your business, fees paid to claim income.
Tax: The USD value you sent is recorded as an expense against income. The tokens sent are also treated as sold.
Example: sent: 100 USDC to a contractor.
PERPETUALS / FUTURES
These labels are only for perpetual and futures trading. Do not use them for spot DCA or limit orders.
🚀 Open Position
You opened a position or added collateral.
Tax: Not a sale. Collateral basis is held.
Example: sent: 1,000 USDC to Hyperliquid.
🚀 Close Position
You closed a position, fully or partly, or removed collateral.
Tax: The difference from what you deposited is a futures gain or loss.
Example: received: 1,200 USDC after depositing 1,000 = $200 gain.
🏦 Funding Payment
You received (or paid) a funding payment.
Tax: Income by default. Ask us to enable funding payments as perps gains to book positive funding as futures gains instead.
Example: received: 12 USDC funding.
💧 Liquidation
Your position was liquidated.
Tax: The asset is treated as sold. The loss is recorded under Liquidation Expenses.
Example: sent: 1 ETH (collateral taken by the protocol).
OTHER
🗑 Spam
A worthless token you did not ask for.
Tax: Cost basis $0, no income. The transaction is hidden from your history.
Example: received: 1,000,000 FREE_MONEY_TOKEN.
🔥 Burn
You sent tokens to a burn address or they became unrecoverable.
Tax: Each token you send is treated as disposed of at its market value at that moment. Your gain or loss is that value minus your cost basis. A token with no market price is disposed of at $0, so you realize a capital loss equal to your cost basis.
Example: you send 500 RUGGED that you paid $1,000 for. If it has no price, you realize a $1,000 loss. If it was still worth $200, you realize an $800 loss.
Do not use it for: tokens you sold or swapped for something. Use Coin Sell or Swap.
NOTE: if you want it to write off the asset completely, edit the sell price to $0. Or you can label it as a "Fee Expense Deduction" will will write-off the full value against your capital gains.
🦹 Theft
Crypto was stolen from you.
Tax: Awaken records no gain, no loss, and no income. The tokens leave your balance and their basis is removed. Theft losses are usually not deductible for individuals, so talk to a CPA. See the Tax Help page.
Example: sent: 5 ETH to a drainer contract.
❓ Save for later
You do not know what this is yet.
Tax: None for now. The transaction stays in Needs Review so you can come back to it.
🙌 Non-Taxable
You want zero gain, zero loss, and zero income on this transaction.
Tax: Tokens received get a $0 basis. Tokens sent leave without a sale.
Use with care. This is a manual override. It is not the same as Wallet Transfer, which carries basis.
✍️ Fee Expense Deduction
Advanced. A cost that should reduce your capital gains directly. Token approvals, failed transactions, protocol fees paid separately.
Tax: Everything you sent is recorded as a deductible fee against capital gains.
Example: sent: 0.002 ETH for a token approval.
📈 Investment Capital Gain
Tokens you received are a capital gain in full, with no cost basis to subtract.
Tax: The full USD value is added to short-term capital gains.
Example: received: 500 USDC profit share from a trading vault.
💳 Credit Card Rewards
Crypto cashback from a card.
Tax: Non-taxable. The tokens come in at market value with no income.
Example: received: 15 USDC from Coinbase Card.
MISCELLANEOUS
🎰 Gambling Winnings
You won crypto from a game or casino.
Tax: Income. Fees are recorded as an expense against that income.
Example: received: 1 SOL from a coin flip.
🎰 Gambling Losses
You lost a bet.
Tax: The tokens sent are treated as sold at market value, and the same amount is recorded as a gambling loss. Deductible up to your winnings.
Example: sent: 1 SOL on a coin flip.
FUND (FUND ACCOUNTS ONLY)
These labels are shown only to fund clients. They track private investments that do not live on-chain.
🏦 Capital Deployment
Cash sent into a fund investment.
Tax: Not a sale. Creates the investment's cost-basis lot.
Example: sent: 250,000 USD to a portfolio company.
🏦 In-Kind Contribution
Tokens contributed to a fund interest instead of cash.
Tax: Not a sale. The tokens' basis carries into the fund interest.
Example: sent: 50,000,000 W → received: fund interest.
🏦 Distribution
Money your fund received from a portfolio company or fund interest.
Tax: Reduces cost basis dollar-for-dollar. Once basis is $0, the rest is gain. A final (liquidating) distribution closes the position.
Example: received: 25,000 USD.
🏦 Return of Capital
An investment gave capital back.
Tax: Same as Distribution. Reduces basis first, then gain. A final payment realizes any remaining loss.
Example: received: 100,000 USD.
🏦 Exit
An investment was sold for cash or other consideration.
Tax: Gain/loss = proceeds − remaining cost basis.
Example: received: 1,000,000 USD.
🏦 Write-off
An investment is worthless.
Tax: The full remaining cost basis is realized as a loss. Position closed.
Example: no proceeds.
CHOOSING BETWEEN SIMILAR LABELS
You did this | Received a token back? | Use |
Staked a coin | No | Staking Deposit |
Staked a coin | Yes, a receipt token (cbETH, aUSDC) | Staking Swap / Lend Swap |
Minted an LST through its own contract | Yes (jitoSOL, stETH) | LST Mint |
Bought an LST on a DEX | Yes | Trade / Swap |
Added liquidity | Yes, an LP token | Add Liquidity Swap |
Added liquidity | No LP token (V3 NFT, DLMM) | Deposit Liquidity or Staking Deposit |
Moved coins to your own other wallet |
| Wallet Transfer (or let Awaken match it) |
Moved coins to another chain |
| Bridging |
Got a worthless token |
| Spam |
Sent a worthless token away |
| Burn |
Got tokens from staking |
| Claim Rewards |
Got tokens from a promo, not staking |
| Rewards |
Wrapped ETH → WETH via the contract |
| Wrapping / Unwrapping |
Old token → new token migration |
| Token Migration |
How do the advanced tax setting work?
Go to Account Settings → Advanced Tax Features. Each toggle makes that label carry cost basis instead of realizing gain/loss or income:
Wrapping Non-Taxable (Wrapping / Unwrapping)
Staking Swaps Non-Taxable (Staking Swap / Unstaking Swap)
LSTs Non-Taxable (LST Mint / LST Redeem)
Airdrops Non-Taxable
Automated Staking Rewards Non-Taxable (Claim Rewards)
Bridging Non-Taxable (on by default)
Liquidity Non-Taxable (Add / Remove Liquidity Swap)
After you change a toggle, Awaken recalculates your transactions with the new treatment.
How do I add labels to CSVs I upload?
When you upload a CSV, you can pre-label a row by putting one of these values in the tag column. Use the exact text on the right (lowercase, underscores). Rows with an unknown tag import as unlabeled.
Label | CSV Tag |
Trade / Swap | swap |
Coin Buy | coin_buy |
Coin Sell | coin_sell |
NFT Swap | nft_swap |
NFT Buy / Mint | nft_buy |
NFT Sell / Burn | nft_sell |
NFT Bid | nft_bid |
NFT List | nft_list |
NFT List/Bid Cancel | nft_cancel |
Wrapping / Unwrapping | wrapping |
OTC Trade | otc_trade |
Staking Deposit | staking |
Unstaking Withdraw | unstaking |
Claim Rewards | claim_rewards |
Staking Swap | staking_swap |
Unstaking Swap | unstaking_swap |
LST Mint | lst_mint |
LST Redeem | lst_redeem |
Add Liquidity Swap | add_liquidity |
Remove Liquidity Swap | remove_liquidity |
Deposit Liquidity | liquidity_deposit |
Withdraw Liquidity | liquidity_withdraw |
Lend Deposit | lend |
Lend Swap | lend_swap |
Lend & Borrow | lend_borrow |
Borrow | borrow |
Repay | repay |
Repay & Withdraw | repay_withdraw |
Withdraw | withdraw |
Withdraw Swap | withdraw_swap |
Wallet Transfer | internal_transfer |
External Transfer | external_transfer |
Bridging | bridging |
Receive | receive |
Payment | payment |
Donation | donation |
Gift | gift |
Investment Delivery | investment |
Token Migration | transfer_cost_basis |
Airdrop | airdrop |
Income | income |
Rewards | rewards_income |
Mining Income | mining_income |
NFT Royalties | nft_royalty_income |
Income Expense | income_expense |
Gambling Winnings | gambling_winnings |
Gambling Losses | gambling_losses |
Open Position | open_position |
Close Position | close_position |
Funding Payment | funding_payment |
Liquidation | liquidation |
Spam | spam |
Burn | burn |
Theft | theft |
Save for later | save_for_later |
Non-Taxable | non_taxable |
Fee Expense Deduction | fee_expense_deduction |
Investment Capital Gain | investment_capital_gain |
Credit Card Rewards | credit_card_rewards |
Fund labels (Exit, Return of Capital, Write-off, Distribution, Capital Deployment, In-Kind Contribution) and the system label Position Release cannot be set from a CSV.
