Skip to main content
Last updated July 2026

ChainTax methodology and coverage reference

The detailed reference for supported classification, UK matching, price evidence, calculations, report outputs, and known boundaries.

The product journey

Calculation and assurance are separate steps.

ChainTax can calculate supported activity while still blocking the report from a positive accountant-review state. That distinction prevents a technically finished sync from being presented as evidence-complete.

  1. 1

    Import

    Bring supported exchange CSVs and public wallet history into one account-wide dataset.

  2. 2

    Classify

    Protocol rules and transfer patterns create tax events with provenance and confidence.

  3. 3

    Resolve

    Material history gaps, low confidence, missing prices, stale matching, and filing inputs remain blocking checks.

  4. 4

    Review

    When those checks pass, inspect the totals, Show Working, frozen share link, PDF, and CSV evidence pack.

Positive readiness is a hard gate, not a confidence badge

A material low-confidence classification, incomplete source evidence, missing taxable price, required rematch, or unconfirmed filing input prevents “Ready for accountant review” from appearing.

Supported classification coverage

Supported on-chain transactions run through a deterministic priority chain of protocol-specific and pattern-based classifiers. Recognised rules produce repeatable output from the same normalised input. An optional AI suggestion can help a user investigate activity the rules did not match, but it is explicitly low-confidence, remains a review item, and cannot unlock positive readiness.

CSV imports

Protocol or activityCoverageClassificationConfidence
CoinbaseBuy, sell, convert, earn, send and receive rows; missing GBP values lower confidence.Automatic route availableVaries by rowNot stated
BinanceMulti-row trade reconstruction; missing GBP values lower confidence.Automatic route availableVaries by rowNot stated
KrakenPaired trade rows and asset normalisation; missing GBP values lower confidence.Automatic route availableVaries by rowNot stated
Crypto.com App (beta)Parser-tested App format; current real-export validation is still pending, so imported rows need review.Automatic route with reviewVaries by rowNot stated
Koinly universal CSVCompatible universal format; on-chain hashes enter the wallet pipeline.Automatic route availableVaries by rowNot stated

DEX / Swaps

Protocol or activityCoverageClassificationConfidence
Uniswap V2 & V3Swaps, liquidity adds and removes, and fee collection. Unfamiliar methods or incomplete legs still need review.Automatic route availableDisposal
Uniswap V1Automatic route availableDisposal
1inch V2-V6Automatic route availableDisposal
CurveSwaps plus CRV reward claims, which are treated as income when the evidence matches.Automatic route availableDisposal
MooniswapDirect 1inch AMM pool swaps.Automatic route availableDisposal
CoW ProtocolBatch-settled swaps on Ethereum and Base.Automatic route availableDisposal
Rhino.fiRecognised OTC trading calls.Automatic route availableDisposal
Rage TradeArbitrum perpetual-position and margin calls. Recognition does not settle the tax treatment of every derivative fact.Automatic route with reviewTransfer
Generic swap detectionExactly one token out and one token in can be detected. A recognised pattern is not protocol-level evidence.Automatic route with reviewDisposal

Staking / Yield

Protocol or activityCoverageClassificationConfidence
LidostETH deposits, rebase income and wstETH wraps. Missing snapshots or incomplete wrap legs remain review items.Automatic route with reviewDisposal
Rocket PoolrETH deposits and burns when the expected economic legs are present.Automatic route availableDisposal
Coinbase cbETHAutomatic route availableDisposal
ether.fi, Renzo and KelpETH deposits, LST deposits, eETH rebases and eETH to weETH wraps. Incomplete legs and some basis carries need review.Automatic route with reviewDisposal
EigenLayerLST strategy activity can carry basis when both legs are proved. Native ETH and incomplete receipt-token evidence need review.Automatic route with reviewTransfer
StakeStoneRequest and settlement can occur in separate transactions, so ChainTax does not invent an automatic treatment.Automatic route with reviewNeeds review
SynthetixFee claims, vesting and synth exchanges when the expected evidence is present.Automatic route availableIncome
Atlas MineMAGIC staking rewards and Bridgeworld Harvester activity.Automatic route availableIncome
ConvexIncomplete deposit or withdrawal legs remain visible instead of receiving an automatic basis carry.Automatic route with reviewTransfer
YearnBasis carries only when both the underlying and vault-share legs are proved.Automatic route with reviewTransfer
EthenaStaking, sUSDe vault activity and sENA rewards. The exact economic legs determine whether basis can be carried.Automatic route with reviewTransfer

Lending

Protocol or activityCoverageClassificationConfidence
Aave V1-V3Decoded supply and withdrawal legs can carry basis; missing legs or unknown methods need review. Pre-6 April 2027 treatment is marked for professional review.Automatic route with reviewTransfer
Compound V2Basis carries only when both the supplied asset and cToken share legs are proved. Legal treatment remains fact-specific.Automatic route with reviewTransfer

NFT Marketplaces

Protocol or activityCoverageClassificationConfidence
OpenSea Seaport 1.5/1.6NFT buys and sales on supported chains when order and payment evidence is complete.Automatic route availableDisposal
BlurEthereum marketplace fills with the expected order and transfer evidence.Automatic route availableDisposal
Treasure TroveArbitrum NFT marketplace trades paid in MAGIC.Automatic route availableDisposal

Bridges / Transfers

Protocol or activityCoverageClassificationConfidence
Transfers between your own sourcesAdd every owned source and confirm ownership. A selector or label alone is not enough to infer a non-taxable transfer.Automatic route with reviewTransfer
Supported same-owner bridgesDifferent assets, different owners or incomplete legs remain review items.Automatic route with reviewTransfer
WETH wrap and unwrapAutomatic route availableTransfer
Fren PetBase game staking, minting and accessory interactions.Automatic route availableTransfer
RealmTreasure DAO game interactions on Arbitrum.Automatic route availableTransfer
Treasure CraftingLegion summoning and related NFT game mechanics on Arbitrum.Automatic route availableTransfer
ETH2 Beacon depositAutomatic route with reviewTransfer

Other

Protocol or activityCoverageClassificationConfidence
PaxosNarrowly scoped to registered treasuries and Paxos-issued assets.Automatic route availableTransfer
Nexus MutualAutomatic route availableDisposal
Balancer V1 & V2Swaps and exits; joins are shown as liquidity events.Automatic route availableDisposal
GMXArbitrum swaps and positions. Recognition does not settle every derivative tax question.Automatic route with reviewDisposal
GitcoinDonations are treated as disposals at market value.Automatic route availableDisposal
HolonymA proved free, non-transferable credential is treated as non-economic. Other movement is not guessed.Automatic route with reviewTransfer
Named airdrop claimsRecognition identifies the receipt; eligibility work, services and other facts may still need review.Automatic route with reviewIncome

Fallbacks

Protocol or activityCoverageClassificationConfidence
Pattern matchingApprovals, contract deployments, token transfers and other exact patterns. Pattern output can still require review.Automatic route with reviewTransfer
Spam and unsolicited tokensThe label is evidence-scoped. Unfamiliar inbound activity is not silently assumed to be harmless.Automatic route availableTransfer
Optional AI suggestionA review aid for unmatched activity. It cannot unlock positive readiness.Automatic route with reviewNeeds review
EthereumArbitrumOptimismBasePolygon

Exchange CSV imports

Centralised exchange transactions bypass the on-chain classification engine entirely. Upload a recognised CSV, then review the imported rows and any missing-price or history checks.

Auto-detection

ChainTax sniffs the first 10 lines of your CSV to identify Coinbase, Binance and Kraken; Crypto.com App (beta); plus Koinly universal CSV (compatible format). The Crypto.com App importer is in beta. It is parser-tested but has not yet been validated end to end against a current real export, so review the imported rows before relying on them.

Pre-classified by parser

Each exchange parser understands the source format: buys, sells, converts, rewards and fees. Recognised rows are created without the on-chain engine; unsupported or incomplete rows still need review.

Shared S104 pools

Exchange trades feed into the same Section 104 cost basis pools as your on-chain activity. A Coinbase buy and a Uniswap swap of the same token share one account-wide pool under HMRC's asset-identification rules.

Deduplication

Three layers of dedup (within a CSV, across imports, and against existing data) prevent double-counting if you upload the same file twice or import overlapping date ranges.

Manual entries & overrides

You can review and correct classifications. Anything ChainTax got wrong can be edited, and activity the automatic engine missed can be added by hand with its provenance retained.

No chain pill on manual rows

Transactions imported from a CSV (or added by hand) have no blockchain, so the chain slot shows a short exchange tag instead: CB for Coinbase, BN for Binance, KR for Kraken, and CSV for Koinly.

The M marker

A teal M next to a type badge means you've edited the classification on that row. It's orthogonal to the confidence chip, so a high-confidence row you've overridden still shows its original chip.

Overrides win on re-sync

When you re-run auto-classification, any event you've edited is preserved, and ChainTax never overwrites your work. Reset an override from the row's edit panel if you want the automatic result back.

Tax event types

Each classified transaction produces one of five event types. These labels describe how the event enters the calculation; the correct legal treatment still depends on the facts, HMRC guidance, and the disclosed product choices below.

TypeTax treatmentExamples
DisposalCapital Gains Tax at 18% basic / 24% higher (from 30 Oct 2024)Token swaps, sells, LP removals, liquid staking burns, NFT sales
IncomeIncome Tax at 20% / 40% / 45%Staking rewards, LP fee collection, vesting claims, CRV rewards
TransferNon-taxable in the calculation, as no disposal is recordedSame-owner bridges, WETH wrap/unwrap, decoded Aave basis carries, game interactions
LiquidityDisposal of the deposited tokens, so gains count toward Capital Gains Tax; the LP token enters your pool at market valueLP deposits (tokens leave your pool, LP token enters)
Needs reviewFlagged for you to checkUnrecognised contracts, which you can edit the classification of manually

HMRC matching rules

When you sell or swap a crypto asset, HMRC has strict rules for calculating your profit or loss. ChainTax applies all three rules automatically in the required order and exposes the selected match on each disposal. See them applied to your own transactions in the UK crypto tax calculator.

1. Same-day rule

CRYPTO22252

Acquisitions and disposals on the same calendar day are matched first. This prevents buying and selling the same asset on the same day to manipulate cost basis.

2. 30-day B&B rule

CRYPTO22253

If you dispose of an asset and re-acquire the same asset within 30 days, the disposal is matched against that re-acquisition, not the Section 104 pool.

3. Section 104 pool

CRYPTO22251

Remaining disposals draw from the Section 104 pool, an average cost basis across all acquisitions of that asset. HMRC does not permit FIFO or LIFO.

All dates use UK time (Europe/London) to correctly handle BST boundaries near tax year ends. Losses are carried forward and offset against future gains down to the annual exempt amount only (TCGA 1992).

Capital gains tax rates

PeriodBasic rateHigher rateHMRC ref
From 30 Oct 202418%24%Autumn Budget 2024
Before 30 Oct 202410%20%CRYPTO22100

Tax year 2024/25 is a split year, so each disposal is taxed at the rate applicable on its disposal date. ChainTax checks every disposal against the 30 October 2024 boundary automatically. For 2025/26 and 2026/27 the 18%/24% rates apply to the whole year, and only 2024/25 needed a split-year (Box 51) adjustment.

Annual exempt amount

2024/25, 2025/26 & 2026/27: £3,000

2023/24: £6,000

2022/23: £12,300

Gas fees (including L2 base fees on Optimism and Base) are treated as an HMRC allowable cost (CRYPTO22150), reducing your taxable gain per disposal.

How prices are sourced

ChainTax attempts to price each supported asset in GBP at its transaction date. The oracle follows this waterfall, and a missing taxable price remains visible rather than being written as zero.

  1. 1Price cache: Previously fetched prices are stored to avoid redundant API calls.
  2. 2Kraken: GBP-native daily closes for supported major assets, avoiding an FX conversion step where possible.
  3. 3DefiLlama: Free historical token prices in USD, converted to GBP using Frankfurter.app with ECB fallback. FX rates are validated within a 0.6–1.6 sanity range.
  4. 4CoinGecko: Fallback when DefiLlama has no data for a token. Uses the CoinGecko historical API.
  5. 5Visible gap: If no price is available from any source, the event is flagged for review. Other priced events can still calculate, but a material taxable gap blocks positive review.

Confidence levels

Classified events carry a confidence level so you can see which results deserve closer review.

High confidence

All amounts decoded from on-chain logs and priced from cache or primary source.

Medium confidence

Partial decoding or fallback price source used. Worth a quick check.

Low confidence

Unable to fully decode amounts. Oracle pricing may be skipped to avoid guessing.

DeFi income treatment

Staking rewards (Lido stETH rebases, Synthetix fee claims) and LP fee collections (Uniswap V3) are classified as miscellaneous income at fair market value on the date received (CRYPTO21200). Income tax is applied progressively when you provide your salary: 20% basic / 40% higher / 45% additional. Without salary data, a flat rate is applied at your selected band.

When your salary plus DeFi income crosses a band boundary, the calculation splits the income across both bands automatically. Verify the band breakdown if you're close to a boundary.

Income events also enter the Section 104 acquisition pool at FMV, which means staking rewards you receive today affect your cost basis when you eventually sell that asset. DeFi income goes on SA100 (main return), not SA108.

SA108 mapping

From 2024/25, HMRC's SA108 form has dedicated crypto boxes (13.1–13.8) for the first time. ChainTax calculates the applicable crypto box values, including the Box 51 split-year CGT rate adjustment, for review.

BoxContentChainTax source
13.1Number of crypto disposalsCount of Disposal events
13.2Total disposal proceedsSum of proceeds
13.3Total allowable costsProceeds minus gain (HMRC-matched)
13.4Total gainsSum of positive gains
13.5Total lossesSum of negative gains (absolute)
13.6Net gains or losses13.4 minus 13.5 (after loss offset)
13.7Gains via real-time serviceUsually zero
13.8Tax paid on 13.7Usually zero
Box 51Split-year CGT rate adjustmentGains split by 30 Oct 2024 boundary

Unpriced disposals (where no market price was available) are excluded from all SA108 boxes and tracked separately. Read the full SA108 guide →

Your reconstructed tax pools

A report is a snapshot of one tax year. Alongside it, ChainTax values the balances implied by your imported transaction history against the same Section 104 cost basis your report uses, so the two reconcile. Sign in and open Holdings to see your own.

Market value vs. cost basis

Where a current GBP price is available, the reconstructed token pool is valued against its Section 104 pooled cost. Holdings without a supported current price remain visibly unpriced.

Tokens and NFTs together

Fungible tokens are valued live; NFTs are listed at their recorded cost basis only. ChainTax does not invent a floor price it can’t verify. A holding with no current market price is shown honestly as unpriced, not counted as a loss.

History builds forward

A daily snapshot records your portfolio value and cost basis from the day you start, and there is no invented back-history. The chart is honest about having little to show on day one and fills in as the days pass.

Export and share

Export your holdings to CSV, or hand your accountant a read-only, frozen snapshot via a revocable share link, the same sharing model as your report.

This is a tax-pool view, not an independent wallet-balance reconciliation, tax advice, or a filing.

Simulating a disposal

From your Holdings page you can model a hypothetical “what-if” disposal and see how selling some of a holding today would change your Capital Gains Tax position for the current tax year. It is a calculator you choose to run. Nothing is saved, nothing is filed, and ChainTax never tells you whether to buy or sell.

What it does

You pick an amount of a token you still hold. ChainTax estimates the proceeds at today’s price, works out the gain or loss, and shows the marginal effect on your current-year CGT and how much of your tax-free allowance it would use.

How the number is produced

The hypothetical sale is appended to your real Section 104 pools and run through the same HMRC matching your report uses: same-day, then the 30-day bed & breakfast rule, then the Section 104 pool. Because a today-dated disposal is chronologically last, it slots in after everything you have already done rather than reshuffling how your existing transactions were matched.

Where the data comes from

Units come from your synced holdings; the price is the latest available GBP price from the same oracle used across ChainTax (cache → Kraken → DefiLlama → CoinGecko). If a token has no current price it can’t be simulated.

What it is not

It is not advice, and it is not a filing. Figures are estimates that assume the disposal happens now at the shown price. Actual results depend on the real disposal date, price, and fees. Modelling the current tax year uses figures from an unlocked report for that year.

Before you act on a simulation

A simulation is a calculation tool, not tax or financial advice. Whether to dispose of an asset, and any timing around the 30-day bed & breakfast rule, is a decision for you and a qualified tax adviser. ChainTax does not recommend disposals and does not receive anything if you make one.

Important boundaries and manual checks

These are calculation boundaries, current-law choices, and coverage gaps to review before relying on a report.

  • stETH rebases: ChainTax estimates rebase income from periodic wallet-balance snapshots (monthly and at tax-year boundaries), net of transfers, then values the increase on the snapshot date. This covers every fully synced Ethereum wallet on the account, but it is not a daily receipt-by-receipt reconstruction.
  • Receipt-token deposits: For supported Aave, Compound V2, Yearn, and Convex actions, ChainTax currently treats decoded deposits and withdrawals as transfers and carries Section 104 basis when both economic legs are present. Missing required legs are sent to Needs review. EigenLayer automation covers StrategyManager LST restaking, not native-ETH EigenPod restaking. HMRC's current CRYPTO61620 treatment depends on beneficial ownership and can treat a token exchange as a disposal. Draft NGNL rules were published on 13 July 2026 for qualifying arrangements from 6 April 2027, but are not yet law. Ask a tax adviser before changing current-period treatment.
  • Internal ETH returns: Known Rocket Pool and cbETH methods use trace data to recover ETH returned through internal calls; if that data is unavailable, the event stays in Needs review. Nexus Mutual sales can instead use the NXM market value as a fallback, and the event note says when that happened.
  • Chain coverage: Automatic on-chain sync supports Ethereum, Arbitrum, Optimism, Base, and Polygon. Other networks, including Solana and Avalanche, need a supported CSV import or manual records.

Disclaimer

ChainTax is a tax calculation tool and does not provide financial, legal, or tax advice. The figures generated are estimates based on imported and on-chain data, published HMRC guidance, and the evidence available in the account.

Always verify your figures with a qualified tax adviser before filing your Self Assessment return. Every calculated disposal shows its working so they can check each number line by line.

Reference: HMRC Cryptoassets Manual (CRYPTO10000–CRYPTO100000)

Want the shorter product journey?

See how ChainTax moves from imported history to reviewable working, or test it on up to 200 transactions without paying.