Guide How Cosmos taxes actually work
Everything from why a staking reward is taxable the day you get it, to the exact forms you'll hand your accountant.
The 75-second version. The full walkthrough is below.
Short videos
Each one is recorded from the live site and comes with captions and a transcript. They are also on YouTube.
Deciding flagged tokens
1:33 · recorded 2026-10-16Why some receipts are held for review, what Valueless and Override do to your income and cost basis, and how to clear the whole list in one step.
Transcript
Not every token that lands in a Cosmos wallet is what it claims to be. Some are airdropped spam, and some are IBC vouchers whose name does not match the chain they came from. Here is how BryanLabs Tax handles them. Paste a wallet address and generate the report. The report is ready straight away, but any receipt the engine cannot trust is held for review. This bar counts the receipts waiting on a decision. Until they are decided they carry no value and the exports stay locked, so spam never turns into taxable income by accident. If you are not ready, choose Decide later and keep reading the report. Open the review and each card is one token, with the evidence behind the flag: the memo it arrived with, the chain it came from, and whether its name matches its on-chain identity. One decision covers every receipt of that token. Valueless means no income now and a zero cost basis later. Override lets you name the token and set its real value, which is counted as income on the day it arrived. If the list is all spam, one click marks every suspected spam receipt valueless. Every receipt is now decided, the exports unlock, and each row in the report shows the choice you made. Sign in, and your decisions are saved with the report and can apply as standing rules next time. Agents can make the same decisions through the API, and the review guide covers what to check in your jurisdiction.
Your first report
1:14 · recorded 2026-10-16Paste a Cosmos Hub address, pick a tax year and read the report: the totals, the filters and how each row is treated.
Transcript
Here is the quickest way to see your Cosmos Hub taxes. One address, one report, no account needed. Paste a wallet address and add it. You can add several wallets, or import them straight from Keplr. Pick the tax period, then generate the report. This wallet received some tokens that look like spam, so a bar holds them for review. Choose Decide later and keep reading. The review has a guide of its own. At the top are the totals for the period: recorded events, staking rewards, taxable income in US dollars, and fees paid. The reporting view follows your country, and you can change it. These chips filter the table, each with a count: staking rewards, delegations, sends and receives, IBC transfers, NFTs, and anything that needs review. Every row shows its treatment in the Tag column, and hovering a date shows the exact time in UTC. From here you can tag rows, decide flagged tokens, and export for your tax software or your books. The other guides walk through each one.
Tagging rows for your books
0:48 · recorded 2026-10-16Most rows are classified for you. Tag what the chain cannot know, one row at a time or every row in a view, with a confirmation and an undo.
Transcript
Most rows in a report already have a treatment. Tags are for what the chain cannot know, like a send between two of your own wallets. Start by filtering to sends and receives. The tag bar works on every row in this view, or only on the rows you tick. Choose Internal transfer, then Apply. It asks first, and says how many transactions will change. Confirm, and the report recalculates. Undo is right there if you change your mind. You can also tag a single row from its Tag menu. A payment, for example, is income when you receive it and a disposal when you send it. Sign in to save your tags with the report. Agents can tag every matching row with one call to the bulk tagging API.
Exports and tax documents
0:55 · recorded 2026-10-16Import files for Koinly, Crypto Tax Calculator, CoinTracker, CoinLedger, Cryptio and Bitwave, a double-entry journal, filled IRS forms and an evidence bundle, all from the same rows.
Transcript
Once every flagged token is decided, everything downstream comes from the same rows you see in the report. Export CSV has ready-made files for Koinly, Crypto Tax Calculator, CoinTracker, CoinLedger, Cryptio and Bitwave, plus a generic file with every field. For your books, there is a double-entry general ledger journal, and a list of open positions with their cost basis. Tax documents builds filled PDFs: Form eighty-nine forty-nine, Schedule D, an income report, a period statement, and a nine-ninety-T worksheet for retirement accounts. The evidence bundle zips every CSV together with the coverage attestation and the methodology, so an auditor can see how each number was made. Exports stay locked while tokens wait for review, so nothing unreviewed ends up in a filing.
Validator statements
0:50 · recorded 2026-10-16Monthly commission and delegator rewards for any validator, priced in USD at receipt, with a CSV and an on-chain jurisdiction attestation.
Transcript
If you run a validator, your books need two numbers each month: the commission you earned, and the rewards your delegators withdrew. Paste the operator address, pick a period, and open the statement. Each month shows commission in ATOM and in US dollars at receipt, the rewards paid to delegators, the number of reward events, and how many delegators were paid. Download CSV gives the same figures for your accountant or your ledger. Some delegators are taxed differently depending on where a validator is established. You can attest your country on chain, from your operator account, and your delegators' reports subtotal by it. For your own wallets, the self-delegation and the account your commission lands in, run a normal report on the Reports page.
The tax API
0:42 · recorded 2026-10-16Every number on the site is also an API: events, balances, pricing, validator statements, the journal and saved-report tagging, documented in one OpenAPI reference.
Transcript
Everything on this site is also an API, so an agent or your own tools can pull the same numbers you see. The reference lists every endpoint by group: events, balances, pricing, validators, books, and reference data such as what the indexer tracks. Open one to see its parameters. This is the events call, the same rows as a report. Signed-in endpoints save reports, set tags one at a time or on every matching row, and read the tokens waiting for review. The whole reference is one OpenAPI document, so an agent can read it in a single request and get to work.
Rewards are income the day you receive them
The IRS treats a staking reward as ordinary income at fair market value the moment you gain dominion and control over it (Rev. Rul. 2023-14), the same way bank interest works. It doesn't matter whether you ever sell it, swap it, or move it. A validator commission works the same way for the operator. Selling later is a separate event: capital gain or loss against the basis you set on the day you received it.
Cost basis is tracked wallet by wallet
Starting in 2025, the IRS requires wallet-by-wallet cost basis tracking (Rev. Proc. 2024-28), not a single pool averaged across every address you own. If you hold ATOM in three wallets, each one keeps its own lots and its own basis. Cosmos Tax builds every report this way by default, so you don't have to reconstruct it by hand later.
Generating a report, step by step
- 1
Paste one or more addresses and a date range
Any Cosmos Hub address works, delegator or validator. Add more than one if you're scoping a whole entity (see below).
- 2
It syncs in the background
The first pull through a wallet's full history takes real work: every reward, transfer, IBC hop, and fee, priced at the moment it happened. A syncing banner tracks progress so you can read the rest of this guide, or leave the tab entirely, while it finishes.
- 3
Come back and it's already there
Once computed, a report is cached. Reopening the same address is instant. If you've made new transactions since your last visit, hit resync and only the new activity gets pulled in.
- 4
Download the forms you actually need
Not just a CSV: a filled Form 8949, Schedule D, an income report, and a 990-T worksheet if you're staking through a retirement account.
What comes out of a report
Income report
Every staking reward and validator commission, priced in USD at receipt. This is the ordinary income figure for your Schedule 1.
Form 8949 + Schedule D
Every disposal, transfers out, swaps, and Stargaze NFT sales, matched against the wallet-by-wallet basis from the day it was received. Rows with genuinely unknown basis are flagged rather than silently guessed at.
990-T worksheet
For Solo 401(k), IRA, or HSA accounts staking on-chain: unrelated business taxable income (UBTI), the specific deduction, and whether you're over the filing threshold.
Entity statements + evidence bundle
A combined statement across every wallet you've grouped under one entity, plus a bundle of the underlying transactions for when an accountant or auditor wants to see the work.
Exporting into other tax software
Capital gains that span other exchanges or other chains need your whole financial picture, which is exactly what dedicated aggregators are built for. Export straight into Koinly, CoinTracker, CoinLedger, or CryptoTaxCalculator, or use the enterprise formats (Cryptio, Bitwave, a generic all-fields CSV) if you're feeding a larger accounting pipeline. BryanLabs owns the on-chain income side; everything downstream is your existing tools, not a rebuild of them.
Everything here is also an API
Events, balances, the ATOM price series, and the pricing methodology are all public, documented endpoints. Useful if you're a validator embedding a delegator report, or pulling data into your own systems.
Read the API referenceThis is a record for tax preparation, not tax advice. Read the full pricing methodology.