BryanLabsBryanLabs
Tax

What we track

Every kind of Cosmos Hub activity the indexer watches, how each one is treated for tax, and what you can do about the ones that need your judgment.

Cosmos Tax indexes every block of Cosmos Hub, replays every message that moves value, and classifies the result into the categories below. A report is the subset of those records that belong to your addresses in your period. Nothing is sampled and nothing is skipped: a contract call we do not recognize is still recorded and flagged, never dropped.

Two kinds of records appear in a report. Taxable records are income, a disposal, or an acquisition that sets cost basis. Record-only rows (a delegation principal, an internal transfer you tagged, a protocol deposit) are kept so your books reconcile to the chain, but they never reach a tax-software import or Form 8949.

This page is generated from the same catalog the API serves. Agents and integrations should read the JSON form at /api/tax/v1/catalog.

Chain
cosmoshub-4
Methodology
v8 ยท 2026-10-14
Categories
22 (10 taxable)
Protocols and contracts
24
Message types replayed
24
Node
v28.3.0 at block 33,415,576

Event categories

Transfers, IBC and fees

Bank sends and receives, IBC in and out, and the network fee on every transaction you signed.

  • transfer taxable

    A bank send or receive between two addresses. A send is a disposal at fair market value unless you tag it as an internal transfer or a gift; a receive is an acquisition whose cost basis we cannot see.

  • ibc_out taxable

    Coins sent to another chain over IBC. Treated as a send unless the memo shows a Skip Go swap, in which case the row carries the swap intent so you can match the receipt on the destination chain.

  • ibc_in taxable

    Coins received from another chain over IBC, including the Hub hop of a Skip Go route.

Staking

Delegator rewards however they were withdrawn (an explicit claim, or the auto-withdrawal that happens on delegate, undelegate and redelegate), validator commission, liquid staking, and the principal movements kept as records.

  • reward taxable

    Staking rewards actually withdrawn from the distribution module: an explicit claim, the auto-withdrawal that happens on delegate, undelegate and redelegate, or an LSM tokenize or redeem. Ordinary income at the USD price that day, split by validator.

  • commission taxable

    Validator commission withdrawn by the operator. Ordinary income at the USD price that day.

NFTs

Stargaze marketplace and launchpad activity on the Hub: mints, buys, sells, bids and auctions, with per-NFT cost basis, names and images.

  • nft_sale taxable

    An NFT sold through a marketplace, auction or offer. A disposal of the NFT for the seller and an acquisition for the buyer, priced in the coin that changed hands.

  • nft_mint taxable

    An NFT minted for a price. The mint cost is the NFT's cost basis.

  • nft_transfer record only

    An NFT moved without a payment: a gift, a listing moved into marketplace escrow, a raffle entry or prize, a bridge transfer over ICS721. Review and tag if it was actually a sale off chain.

  • nft_burn record only

    An NFT destroyed by its owner.

DeFi and contracts

Swaps through Skip Go and the DEX routers it reaches, contract deposits and withdrawals, and any other CosmWasm execution that moved coins.

  • swap taxable

    One leg of a swap or vault movement: the coin given up is a disposal, the coin received is an acquisition. Vault deposits and withdrawals on Inflow are recorded as swaps between ATOM and vault shares.

Other income

Airdrops, payments and other receipts that are income at receipt.

  • income taxable

    Protocol income that is not a staking reward: Hydro tributes, DAO reward distributions, governance-score rewards, raffle and game prizes paid in coins. Ordinary income at the USD price that day; the source is named on the row.

  • expense taxable

    A payment to a protocol for a service with nothing coming back: a name registration, an upload fee, a game entry fee, a tribute paid into Hydro. A disposal of the coins paid.

Records

Governance deposits and refunds, authz grants, and other activity that moves coins without a tax effect of its own. Kept so your books reconcile.

  • protocol_deposit record only

    Coins you still own moved into a contract: a Hydro lock, DAO staking, an auction bid held in escrow. Not a disposal. Kept out of tax-software imports so it is never read as a sale.

  • protocol_withdrawal record only

    The same coins coming back out of a contract: an unlock, an unstake, a refunded bid. Not income.

  • delegate record only

    Staking principal bonded to a validator. Not a disposal; the wallet still owns the ATOM.

  • undelegate record only

    Staking principal entering the 21-day unbonding queue, with the completion time.

  • redelegate record only

    Staking principal moved between validators.

  • cancel_unbonding record only

    Unbonding principal re-bonded before the unbonding period finished.

  • tokenize_shares record only

    A delegation converted into transferable liquid staking share tokens. The tokens represent the same stake.

  • redeem_shares record only

    Liquid staking share tokens converted back into a native delegation.

  • share_record record only

    Ownership of a tokenize-share record transferred to another address.

  • gov_deposit record only

    A refundable governance proposal deposit. Not a disposal while the deposit can still be returned.

What produces each record

Every reward row names the trigger that paid it, so an auditor can see that a reward recognized on a redelegation day was paid by the chain, not claimed by you. The same triggers appear in the Source column of a report and the rewardTrigger field of the API.

TriggerCategoriesWhat it means
claimreward, commissionAn explicit MsgWithdrawDelegatorReward or MsgWithdrawValidatorCommission.
delegaterewardReward auto-withdrawn when the delegator added stake to the same validator.
undelegaterewardReward auto-withdrawn when the delegator started unbonding.
redelegaterewardReward auto-withdrawn from both validators when stake moved between them.
authzrewardReward withdrawn by a grantee on the delegator's behalf, typically REStake auto-compounding.
tokenizerewardReward auto-withdrawn when a delegation was tokenized into liquid staking shares.
redeemrewardReward paid out when liquid staking shares were redeemed, including the tokenize-share-record reward.
tributeincomeA Hydro tribute claimed by a voter.
tribute_paidexpenseA tribute added to a Hydro proposal by its sponsor.
dao_rewardsincomeA DAO DAO rewards distributor payout.
governance_scoreincomeA Governance Score reward claim.
prizeincome, nft_transferA raffle, pack or game prize.
name_registrationexpenseAn atom.names registration or renewal fee.
upload_feeexpenseA payment to the Hub upload payment contract.
game_feeexpenseA Mad Gumball play fee.
auction_bidprotocol_depositA bid placed into a reserve auction's escrow.
auction_refundprotocol_withdrawalAn outbid bidder's escrow returned.
hydro_lockprotocol_depositATOM or liquid staking tokens locked in Hydro.
hydro_unlockprotocol_withdrawalA Hydro lock released.
dao_stakeprotocol_depositTokens staked in a DAO voting module.
dao_unstakeprotocol_withdrawalTokens claimed back from a DAO voting module.
vault_depositswapAn Inflow vault deposit: ATOM out, vault shares in.
vault_withdrawswapAn Inflow vault withdrawal: vault shares out, ATOM in.
skip_swapibc_outAn IBC transfer whose memo instructs a Skip Go swap on the destination chain. Detail carries the venue, destination asset, minimum amount and final receiver.
skip_actionibc_outAn IBC transfer whose memo runs another Skip Go action on arrival.
skip_forwardibc_in, ibc_outA Skip Go route that passed through the Hub: the adapter received the coins and forwarded them on.
ibc_hookibc_outAn IBC transfer that calls a contract on arrival (ibc-hooks).
pfm_forwardibc_outAn IBC transfer forwarded onward by packet-forward middleware.
ibc_callbackibc_outAn IBC transfer with a callback contract.
ics721_outnft_transferAn NFT sent to another chain over the ICS721 bridge.
ics721_innft_transferAn NFT received from another chain over the ICS721 bridge.

Protocols and contracts we classify

CosmWasm went live on Cosmos Hub at the end of 2025. These are the contracts whose events we decode into the categories above. Every other contract execution that moved coins is still recorded as a generic contract transfer and flagged, and you can check any contract or ask us to add it. The first-seen height is the block from which that contract's activity is replayed.

Skip Go

  • Skip Go entry pointrouter
    cosmos1clswlqlfm8gpn7n5wu0ypu0ugaj36urlhj7yz30hn7v7mkcm2tuqy9f8s5since block 29,102,288
  • Skip Go IBC callback adapterrouter
    cosmos1lqu9662kd4my6dww4gzp3730vew0gkwe0nl9ztjh0n5da0a8zc4swsvd22since block 29,102,288

atom.names

  • atom.names registrynames
    cosmos16nff0lmuegn2zr6ca3dp8jnqltpq2c9ayhmqn3avjq0wne95h2xqkhn9qesince block 30,288,946
  • atom.names TLD managernames
    cosmos12sseygvx4ykhp0df70ndg82l7p9a7ld7l0n0pptwj7c2h726cc9sahh4hzsince block 30,289,440
  • atom.names marketplacemarketplace
    cosmos1m962xzr0teztzlp39y7leefhqadxwxv4vg4jyzq6jxh64e93v9hsmg62rcsince block 30,289,504

Stargaze

  • Stargaze marketplacemarketplace
    cosmos1tl0ptdmlz422z5pj20zujzyt3c96qp2g9vp83uj9pyj8q994tzhsl77adrsince block 29,099,858
  • Stargaze reserve auctionauction
    cosmos1jyx8zpvjxq2vdmquvrw6cwl2qp9slmnyy8dnpj3cgyvava2x7lmqhj3mmysince block 31,608,661

Starburst

  • Starburst raffleraffle
    cosmos1qppyer6cu36kd4dchxqmcfa9u4rk2zgpc9vpmpd7eplhn8ghhyzs8najdvsince block 30,379,639
  • Starburst multi-pool raffleraffle
    cosmos1mjfkfegaywg6xsqr87uytsld9l7kaldj7sf7q593jdch8cascm6scnswx0since block 30,981,928

DAO DAO

  • DAO rewards distributorrewards
    cosmos1r9695xq7y0fd2nk06rv6llykay7ny27jrpq4de2w6eqja5p2mlvqfv8aa9since block 30,442,266
  • DAO rewards distributorrewards
    cosmos19fprlcmzt2axrukx3xacsdpykv40nrdsv9l7jgnfrpwukgteu3zq3t2q9fsince block 30,466,450
  • DAO token-staked voting moduledao_staking
    cosmos15nafa2hazwmjs8yz844h5ry5yrzvz6q96a0300ge26vm8hcsrd4s7zxhyjsince block 30,442,266

Upload payment

  • Upload paymentpayment
    cosmos1vuyxx6tl3j5wqkyhknvx6jzf8r53arhkpt565wqwsgdhz9dxx4sqyf4y9nsince block 31,398,417

Inflow

  • Inflow ATOM vaultvault
    cosmos1690hpscut3ltfkcm997fw2jws3tk0wkh7tnlntlavqkpg56hpdzsrjhy5rsince block 31,588,586
  • Inflow vaultvault
    cosmos1d2hrvjvrvqvzdcffy2cy0p2gnytj48e2yg0lvnxk6knhmnt7cqvqetf09usince block 31,737,292
  • Inflow withdrawal routervault
    cosmos12zktht39lk57zf8pqg287u6r8vu8zy6vkh7zfy0f5fn3zsddmx6sk9ru6ysince block 31,737,292

Governance Score

  • Governance score rewardsrewards
    cosmos1nhu3aqrlf3adlffvx3z5pyxntgulgj9dhfskwlp8fksx5mf7v9qqfjpgpdsince block 31,905,560

Hydro

  • Hydrohydro
    cosmos1tj45y3729uu07pv8hq50pfx9u790rh6e0qssucs3yusxaag32t8svhlxgwsince block 32,538,570
  • Hydro tributetribute
    cosmos15pnu29h8gqpsfwhv2l8t2uv3n4fc6cv5k00tq0uk6c78h5ysql4sja3f3dsince block 32,538,598
  • Hydro tributetribute
    cosmos17ryrjncgq8rrmxy0x8wrq0pcessp28xna4pw5sv506mfg3fhwj4qn89chnsince block 32,538,598

Inscriptions

  • Inscriptions auction and offersinscriptions
    cosmos16qh8ly7zkae754a84tkv2hauee3z3u4mpcpsw0lchps03a72wrkske49nssince block 29,099,858

ICS721

  • ICS721 NFT bridgebridge
    cosmos17kzlqt4e0ncuwvluzfpuxed7trqw8wzk42kwnh3r6fwdnlzx8p6q0w69jssince block 29,099,858
  • ICS721 outgoing proxybridge_helper
    cosmos1hcewh45u5e66wkuzm90t832qyxurng8l8r5kwjmzs2zn7cfau7gq96kdtasince block 29,099,858

Mad Gumball

  • Mad Gumball machinegame
    cosmos1t0regae0m9tfylw6rjpwrcuytgn7u7pu2mnc0xtqgmauzlw6t4yqw64uyssince block 29,099,858

Tags you can apply

The chain cannot tell whether a transfer was a payment, a gift, or a move between your own wallets. You can, so every row in a report accepts a tag. Tags travel with your report (and are saved with it when you are signed in); they are never written to the chain record. Each tag changes how the row is written to tax software, Form 8949 and the journal as follows.

Internal transferinternal_transfer

Not a disposal or acquisition. Sent to tax software as a transfer so it matches the other wallet. Left out of Form 8949.

Paymentpayment

Sent coins are a disposal at fair market value. Received coins are income at receipt and that value is their cost basis.

Incomeincome

Ordinary income at the USD value on receipt; that value is the cost basis.

Giftgift

A gift sent is not a sale. A gift received carries the giver's basis, which we cannot see, so a later disposal shows basis unknown.

Airdropairdrop

Ordinary income at the USD value on receipt.

Protocol depositprotocol_deposit

Still owned. Kept out of tax-software imports and Form 8949, shown in the Generic CSV and journal.

Expenseexpense

A disposal at fair market value, labelled as a cost or expense for tax software.

Spamspam

Excluded from tax-software imports and Form 8949. Kept in the Generic CSV for the audit trail.

Lost or stolenlost

Labelled lost for tax software. Whether a loss is deductible depends on jurisdiction.

Exports and reports

Tax software and bookkeeping exports

  • koinlytaxable rows

    Label column carries staking, income, cost, gift, lost, airdrop.

  • cointrackertaxable rows

    Fixed eight columns; Tag carries staked, payment, airdrop, gift, lost. No description field.

  • coinledgertaxable rows

    Universal manual import; Type uses Deposit, Withdrawal, Staking, Income, Airdrop, Gift, Lost.

  • cryptotaxcalculatortaxable rows plus staking-deposit and staking-withdrawal records

    Also accepted by Summ. Carries the reference price per unit.

  • cryptiotaxable rows

    Enterprise sub-ledger custom CSV.

  • bitwavetaxable rows

    Enterprise accounting import.

  • genericevery row

    Audit CSV: category, taxable flag, detail JSON, user tag, implied price flag, validator attribution, asset review decisions.

  • journalevery row

    Double-entry general ledger in USD for a controller's books.

Reports and documents

  • /income

    Income report: staking rewards, commission, protocol income and tagged receipts, with validator jurisdiction subtotals.

  • /8949

    IRS Form 8949 disposals, FIFO per asset, per wallet.

  • /schedule-d

    Schedule D short and long term totals.

  • /990t

    Form 990-T unrelated business taxable income estimate for retirement account wallets.

  • /journal

    Double-entry general ledger journal in USD for a controller's books.

  • /positions

    Open lots and unrealized gain or loss per asset as of a date.

  • /validator-statement

    A validator operator's statement: commission earned, rewards paid to delegators, unique delegators, by month.

  • /balance

    Reconstructed balances as of a date.

  • /delegator-report

    Embeddable per-delegator summary for a validator's website.

US filers get filled Form 8949, Schedule D, an income report and a 990-T worksheet from the Reports page. Everyone gets the period statement, the journal, open positions and the evidence bundle, which are jurisdiction-neutral.

Validator jurisdictions

Some delegators are taxed differently depending on where the validator that paid the reward is established. Where an operator has publicly disclosed its country (its own website or company registration) we record it and subtotal reward income by validator country in the income report and the statement. Validators that chose to stay anonymous are reported as undisclosed, never guessed, and this is a record of disclosure, not a verification of tax residence.

25 of 647 validators on chain currently match a disclosure.

ValidatorCountryEntitySourceNodes
Chorus OneCHChorus One AG, Zugchorus.one0
Swiss StakingCHSwiss Stakingswiss-staking.ch1
SwissBorgCHSwissBorg SA, Lausanneswissborg.com0
LuganodesCHLuganodes, Luganoluganodes.com1
Validation CloudCHValidation Cloud AG, Zugvalidationcloud.io0
FigmentCAFigment Inc., Torontofigment.io1
Informal SystemsCAInformal Systems Inc., Torontoinformal.systems1
CoinbaseUSCoinbase, Inc.coinbase.com/staking6
KrakenUSPayward, Inc.kraken.com4
AllnodesUSAllnodes Inc.allnodes.com1
BlockdaemonUSBlockdaemon Inc., Los Angelesblockdaemon.com1
StrangeloveUSStrangelove Venturesstrange.love1
PolkachuUSPolkachupolkachu.com1
Lavender.Five NodesUSLavender.Five Nodeslavenderfive.com1
StakinFRStakin SAS, Parisstakin.com1
Imperator.coFRImperatorimperator.co1
StakeLabFRStakeLabstakelab.zone1
KilnFRKiln SAS, Pariskiln.fi3
MeriaFRMeria SAS, Parismeria.com1
Staking FacilitiesDEStaking Facilities GmbH, Munichstakingfacilities.com1
TwinstakeGBTwinstake Ltd, Londontwinstake.io1
Simply StakingMTSimply VC Ltdsimply-vc.com.mt2
StakelyESStakely S.L., Spainstakely.io1
CosmostationKRCosmostation, Seoulcosmostation.io1
DSRVKRDSRV Labs, Seouldsrvlabs.com1
B-HarvestKRB-Harvest, Seoulbharvest.io1
Upbit StakingKRDunamu Inc., Seoulupbit.com1
ForboleHKForbole Limitedforbole.com1
Crypto.comSGCrypto.comcrypto.com0

Open a wasm or validator submission on the site with the public source; entries are reviewed against the source before they change.

Asked about, not on the Hub

Perpetual futures

Not available on Cosmos Hub. No perpetuals venue runs on the Hub; if you trade perpetuals on another chain or an exchange, export that venue's history into your tax software alongside this report.

Options

Not available on Cosmos Hub. There is no options protocol on the Hub today.

Lending and borrowing

Not available on Cosmos Hub. No lending market runs on the Hub; a loan taken elsewhere against ATOM moved by IBC shows here only as the IBC transfer.

Margin trading

Not available on Cosmos Hub. Spot swaps through Skip Go and the routers it reaches are covered under DeFi above.

Interchain Security provider rewards

Consumer-chain rewards paid to Hub delegators arrive through the distribution module and are recorded as rewards with their denom, so they are covered; they are listed here because they are often asked about separately.

Chain releases we have reviewed

Every Gaia release changes something, and some of them change the event shapes the tax layer reads. We review each release for its effect on classification and record the result here. A watcher checks GitHub, the node and the upgrade module every day and flags any release we have not reviewed yet.

Last check 2026-10-15 04:32 UTC: node v28.3.0 (Cosmos SDK v0.53.4), upstream latest v28.3.1, prerelease v29.0.0-rc0, no upgrade scheduled. Everything released has been reviewed.

Announced upstream, not released

  • Cosmos SDK 0.54 or 0.55 is planned for the Hub within weeks of v29. The tax layer depends on event shapes (coin_spent, coin_received, transfer, withdraw_rewards, delegate, unbond, redelegate, wasm) that have been stable since SDK 0.47; the release watcher flags the first release on a new SDK line for review of event attribute names.
ReleaseDateSDKWhat changedEffect on the tax layer
v29.0.02026-10-090.53.8Removes x/params and the legacy ParameterChangeProposal governance route; deletes the deprecated provider store; CometBFT 0.38.25.None. The tax layer never read legacy governance parameters. Gov deposits and proposals are parsed from gov v1 and v1beta1 messages, both unchanged.
v28.3.12026-10-010.53.4One-time bank balance migration on cosmoshub-4 at height 33,086,741 after the 24.8 hour halt.The migration changed balances without transactions. Balance reconstruction treats the halt block as a boundary; no taxable rows are affected.
v28.2.12026-10-010.53.4Re-enables CosmWasm upload and instantiation (Prop 1055). Adds the v28.2.0 upgrade handler.None.
v28.1.12026-09-300.53.4CWA-2026-006 response: CosmWasm code upload and instantiation disabled.None. Existing contracts kept executing; coverage of execute events is unchanged.
v28.0.02026-08-070.53.4Interchain Security provider module removed.Provider (ICS) queries return stubs. No tax rows came from the provider module.
v27.6.02026-07-170.53.4Max wasm contract size 1.6 MiB; contracts can query validators and proposals.None.
v27.5.02026-06-190.53.4ibc-go 10.7.None.
v27.4.02026-05-210.53.4Dependency release.None.
v27.3.02026-04-300.53.4ibc-go 10.6, packet-forward-middleware 10.6, 08-wasm 10.5.None. PFM forwards are tagged from the memo.
v27.2.02026-04-060.53.4Dependency release.None.
v27.1.02026-03-130.53.4Go 1.25, wasmd 0.60.5.None.
v27.0.02026-02-200.53.4Gas surcharge on multi-send, stake validation for ICA votes, no new consumer chains.None. Multi-send rows unchanged.
v26.0.02026-02-090.53.4Adds x/tokenfactory. Stake validation on wasm vote messages.Token factory denoms (factory/<creator>/<subdenom>) appear as bank coins and are priced through the oracle when known; token factory message types are registered.
v25.3.22026-01-230.53.4CometBFT 0.38.21.None.
v25.3.12026-01-150.53.4Binary-only security fix.None.
v25.3.02025-12-190.53.4Dependency release.None.
v25.2.02025-11-060.53.3Dependency release, wasmd 0.60.2.None.
v25.1.02025-07-080.53.3Dependency release.None.
v25.0.02025-06-200.53.2Cosmos SDK 0.53, wasmd 0.60.1. Liquid staking module (x/liquid) carries tokenize shares.Liquid staking message types (/gaia.liquid.v1beta1.*) are parsed for rewards and share records.

Message types replayed

The protobuf message types the indexer decodes. A transaction built from any of these is replayed from its emitted events, so a reward auto-withdrawn by a delegation is recorded even though no claim message was sent.

/cosmos.bank.v1beta1.MsgSend/cosmos.bank.v1beta1.MsgMultiSend/cosmos.staking.v1beta1.MsgDelegate/cosmos.staking.v1beta1.MsgUndelegate/cosmos.staking.v1beta1.MsgBeginRedelegate/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation/cosmos.gov.v1.MsgDeposit/cosmos.gov.v1.MsgSubmitProposal/cosmos.gov.v1beta1.MsgDeposit/cosmos.gov.v1beta1.MsgSubmitProposal/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission/cosmos.authz.v1beta1.MsgExec/ibc.applications.transfer.v1.MsgTransfer/ibc.core.channel.v1.MsgRecvPacket/cosmwasm.wasm.v1.MsgExecuteContract/gaia.liquid.v1beta1.MsgWithdrawTokenizeShareRecordReward/gaia.liquid.v1beta1.MsgWithdrawAllTokenizeShareRecordReward/gaia.liquid.v1beta1.MsgTokenizeShares/gaia.liquid.v1beta1.MsgRedeemTokensForShares/gaia.liquid.v1beta1.MsgTransferTokenizeShareRecord/ibc.core.channel.v2.MsgRecvPacket/osmosis.tokenfactory.v1beta1.MsgMint/osmosis.tokenfactory.v1beta1.MsgForceTransfer

Machine-readable: /api/tax/v1/catalog, /api/tax/v1/chain/releases, /api/tax/v1/openapi.json, /llms.txt.

What we track | Cosmos Tax