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.
transfertaxableA 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_outtaxableCoins 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_intaxableCoins 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.
rewardtaxableStaking 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.
commissiontaxableValidator 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_saletaxableAn 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_minttaxableAn NFT minted for a price. The mint cost is the NFT's cost basis.
nft_transferrecord onlyAn 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_burnrecord onlyAn 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.
swaptaxableOne 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.
incometaxableProtocol 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.
expensetaxableA 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_depositrecord onlyCoins 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_withdrawalrecord onlyThe same coins coming back out of a contract: an unlock, an unstake, a refunded bid. Not income.
delegaterecord onlyStaking principal bonded to a validator. Not a disposal; the wallet still owns the ATOM.
undelegaterecord onlyStaking principal entering the 21-day unbonding queue, with the completion time.
redelegaterecord onlyStaking principal moved between validators.
cancel_unbondingrecord onlyUnbonding principal re-bonded before the unbonding period finished.
tokenize_sharesrecord onlyA delegation converted into transferable liquid staking share tokens. The tokens represent the same stake.
redeem_sharesrecord onlyLiquid staking share tokens converted back into a native delegation.
share_recordrecord onlyOwnership of a tokenize-share record transferred to another address.
gov_depositrecord onlyA 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.
| Trigger | Categories | What it means |
|---|---|---|
claim | reward, commission | An explicit MsgWithdrawDelegatorReward or MsgWithdrawValidatorCommission. |
delegate | reward | Reward auto-withdrawn when the delegator added stake to the same validator. |
undelegate | reward | Reward auto-withdrawn when the delegator started unbonding. |
redelegate | reward | Reward auto-withdrawn from both validators when stake moved between them. |
authz | reward | Reward withdrawn by a grantee on the delegator's behalf, typically REStake auto-compounding. |
tokenize | reward | Reward auto-withdrawn when a delegation was tokenized into liquid staking shares. |
redeem | reward | Reward paid out when liquid staking shares were redeemed, including the tokenize-share-record reward. |
tribute | income | A Hydro tribute claimed by a voter. |
tribute_paid | expense | A tribute added to a Hydro proposal by its sponsor. |
dao_rewards | income | A DAO DAO rewards distributor payout. |
governance_score | income | A Governance Score reward claim. |
prize | income, nft_transfer | A raffle, pack or game prize. |
name_registration | expense | An atom.names registration or renewal fee. |
upload_fee | expense | A payment to the Hub upload payment contract. |
game_fee | expense | A Mad Gumball play fee. |
auction_bid | protocol_deposit | A bid placed into a reserve auction's escrow. |
auction_refund | protocol_withdrawal | An outbid bidder's escrow returned. |
hydro_lock | protocol_deposit | ATOM or liquid staking tokens locked in Hydro. |
hydro_unlock | protocol_withdrawal | A Hydro lock released. |
dao_stake | protocol_deposit | Tokens staked in a DAO voting module. |
dao_unstake | protocol_withdrawal | Tokens claimed back from a DAO voting module. |
vault_deposit | swap | An Inflow vault deposit: ATOM out, vault shares in. |
vault_withdraw | swap | An Inflow vault withdrawal: vault shares out, ATOM in. |
skip_swap | ibc_out | An 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_action | ibc_out | An IBC transfer whose memo runs another Skip Go action on arrival. |
skip_forward | ibc_in, ibc_out | A Skip Go route that passed through the Hub: the adapter received the coins and forwarded them on. |
ibc_hook | ibc_out | An IBC transfer that calls a contract on arrival (ibc-hooks). |
pfm_forward | ibc_out | An IBC transfer forwarded onward by packet-forward middleware. |
ibc_callback | ibc_out | An IBC transfer with a callback contract. |
ics721_out | nft_transfer | An NFT sent to another chain over the ICS721 bridge. |
ics721_in | nft_transfer | An 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
Exports and reports
Tax software and bookkeeping exports
koinlytaxable rowsLabel column carries staking, income, cost, gift, lost, airdrop.
cointrackertaxable rowsFixed eight columns; Tag carries staked, payment, airdrop, gift, lost. No description field.
coinledgertaxable rowsUniversal manual import; Type uses Deposit, Withdrawal, Staking, Income, Airdrop, Gift, Lost.
cryptotaxcalculatortaxable rows plus staking-deposit and staking-withdrawal recordsAlso accepted by Summ. Carries the reference price per unit.
cryptiotaxable rowsEnterprise sub-ledger custom CSV.
bitwavetaxable rowsEnterprise accounting import.
genericevery rowAudit CSV: category, taxable flag, detail JSON, user tag, implied price flag, validator attribution, asset review decisions.
journalevery rowDouble-entry general ledger in USD for a controller's books.
Reports and documents
/incomeIncome report: staking rewards, commission, protocol income and tagged receipts, with validator jurisdiction subtotals.
/8949IRS Form 8949 disposals, FIFO per asset, per wallet.
/schedule-dSchedule D short and long term totals.
/990tForm 990-T unrelated business taxable income estimate for retirement account wallets.
/journalDouble-entry general ledger journal in USD for a controller's books.
/positionsOpen lots and unrealized gain or loss per asset as of a date.
/validator-statementA validator operator's statement: commission earned, rewards paid to delegators, unique delegators, by month.
/balanceReconstructed balances as of a date.
/delegator-reportEmbeddable 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.
| Validator | Country | Entity | Source | Nodes |
|---|---|---|---|---|
| Chorus One | CH | Chorus One AG, Zug | chorus.one | 0 |
| Swiss Staking | CH | Swiss Staking | swiss-staking.ch | 1 |
| SwissBorg | CH | SwissBorg SA, Lausanne | swissborg.com | 0 |
| Luganodes | CH | Luganodes, Lugano | luganodes.com | 1 |
| Validation Cloud | CH | Validation Cloud AG, Zug | validationcloud.io | 0 |
| Figment | CA | Figment Inc., Toronto | figment.io | 1 |
| Informal Systems | CA | Informal Systems Inc., Toronto | informal.systems | 1 |
| Coinbase | US | Coinbase, Inc. | coinbase.com/staking | 6 |
| Kraken | US | Payward, Inc. | kraken.com | 4 |
| Allnodes | US | Allnodes Inc. | allnodes.com | 1 |
| Blockdaemon | US | Blockdaemon Inc., Los Angeles | blockdaemon.com | 1 |
| Strangelove | US | Strangelove Ventures | strange.love | 1 |
| Polkachu | US | Polkachu | polkachu.com | 1 |
| Lavender.Five Nodes | US | Lavender.Five Nodes | lavenderfive.com | 1 |
| Stakin | FR | Stakin SAS, Paris | stakin.com | 1 |
| Imperator.co | FR | Imperator | imperator.co | 1 |
| StakeLab | FR | StakeLab | stakelab.zone | 1 |
| Kiln | FR | Kiln SAS, Paris | kiln.fi | 3 |
| Meria | FR | Meria SAS, Paris | meria.com | 1 |
| Staking Facilities | DE | Staking Facilities GmbH, Munich | stakingfacilities.com | 1 |
| Twinstake | GB | Twinstake Ltd, London | twinstake.io | 1 |
| Simply Staking | MT | Simply VC Ltd | simply-vc.com.mt | 2 |
| Stakely | ES | Stakely S.L., Spain | stakely.io | 1 |
| Cosmostation | KR | Cosmostation, Seoul | cosmostation.io | 1 |
| DSRV | KR | DSRV Labs, Seoul | dsrvlabs.com | 1 |
| B-Harvest | KR | B-Harvest, Seoul | bharvest.io | 1 |
| Upbit Staking | KR | Dunamu Inc., Seoul | upbit.com | 1 |
| Forbole | HK | Forbole Limited | forbole.com | 1 |
| Crypto.com | SG | Crypto.com | crypto.com | 0 |
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.
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.
| Release | Date | SDK | What changed | Effect on the tax layer |
|---|---|---|---|---|
| v29.0.0 | 2026-10-09 | 0.53.8 | Removes 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.1 | 2026-10-01 | 0.53.4 | One-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.1 | 2026-10-01 | 0.53.4 | Re-enables CosmWasm upload and instantiation (Prop 1055). Adds the v28.2.0 upgrade handler. | None. |
| v28.1.1 | 2026-09-30 | 0.53.4 | CWA-2026-006 response: CosmWasm code upload and instantiation disabled. | None. Existing contracts kept executing; coverage of execute events is unchanged. |
| v28.0.0 | 2026-08-07 | 0.53.4 | Interchain Security provider module removed. | Provider (ICS) queries return stubs. No tax rows came from the provider module. |
| v27.6.0 | 2026-07-17 | 0.53.4 | Max wasm contract size 1.6 MiB; contracts can query validators and proposals. | None. |
| v27.5.0 | 2026-06-19 | 0.53.4 | ibc-go 10.7. | None. |
| v27.4.0 | 2026-05-21 | 0.53.4 | Dependency release. | None. |
| v27.3.0 | 2026-04-30 | 0.53.4 | ibc-go 10.6, packet-forward-middleware 10.6, 08-wasm 10.5. | None. PFM forwards are tagged from the memo. |
| v27.2.0 | 2026-04-06 | 0.53.4 | Dependency release. | None. |
| v27.1.0 | 2026-03-13 | 0.53.4 | Go 1.25, wasmd 0.60.5. | None. |
| v27.0.0 | 2026-02-20 | 0.53.4 | Gas surcharge on multi-send, stake validation for ICA votes, no new consumer chains. | None. Multi-send rows unchanged. |
| v26.0.0 | 2026-02-09 | 0.53.4 | Adds 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.2 | 2026-01-23 | 0.53.4 | CometBFT 0.38.21. | None. |
| v25.3.1 | 2026-01-15 | 0.53.4 | Binary-only security fix. | None. |
| v25.3.0 | 2025-12-19 | 0.53.4 | Dependency release. | None. |
| v25.2.0 | 2025-11-06 | 0.53.3 | Dependency release, wasmd 0.60.2. | None. |
| v25.1.0 | 2025-07-08 | 0.53.3 | Dependency release. | None. |
| v25.0.0 | 2025-06-20 | 0.53.2 | Cosmos 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.MsgForceTransferMachine-readable: /api/tax/v1/catalog, /api/tax/v1/chain/releases, /api/tax/v1/openapi.json, /llms.txt.