|9 min read

Wrapped Tokens and UK Tax — WETH, wstETH, rETH, cbETH Explained

Is wrapping ETH to WETH taxable? What about stETH to wstETH, or swapping for rETH? The answer depends on whether it's a representation change or a token swap. Here's exactly how HMRC treats each one.

Wrapping tokens is one of those operations that sounds like it should be straightforward from a tax perspective. You had ETH, now you have WETH. Same thing, different wrapper. Not taxable, right?

Sometimes. But not always. And the distinction matters more than most people realise, because getting it wrong doesn't just affect one transaction — it corrupts your entire Section 104 pool for that asset. Every subsequent disposal uses the wrong cost basis.

The wrapping question is one of the genuinely unsettled areas of crypto tax — and most tools just guess. Some treat every wrap as a swap, generating phantom gains on large ETH positions. Others treat everything as a transfer, missing genuine disposals when you acquire yield-bearing tokens like rETH or cbETH. Both approaches are wrong.

The actual answer depends on what the wrapped token does.

WETH: wrapping ETH is not a disposal

ETH and WETH are economically identical. WETH is simply ETH inside an ERC-20 wrapper — redeemable 1:1, at any time, with no fee beyond gas. The wrapper exists because many DeFi protocols and smart contracts require ERC-20 tokens and can't handle native ETH directly.

You probably wrap ETH more often than you think. Many DEX routers do it automatically inside swaps — if you trade native ETH for USDC on Uniswap, the router wraps your ETH to WETH as the first step, then routes the swap. You never see the WETH. It happens inside the transaction.

Under HMRC rules, a disposal occurs when you sell, exchange, or gift a cryptoasset (CRYPTO22100). Wrapping ETH to WETH doesn't meet that threshold. No asset changed hands. You still own the same ETH — it's just in a different technical container. The same logic applies to unwrapping WETH back to ETH.

We classify both directions as TRANSFER — non-taxable, cost basis preserved. Your Section 104 pool continues uninterrupted.

The common mistake here is tools that see "ETH out, WETH in" and record a swap. If you wrapped 50 ETH when the price was £2,500, that's a £125,000 "disposal" creating a phantom gain against your original cost basis. At 24% CGT, the consequences are severe.

wstETH: still not a disposal, but the nuance matters

Lido's wstETH (wrapped staked ETH) is more interesting. When you wrap stETH into wstETH, the exchange rate is not 1:1. One wstETH is worth more than one stETH, and the ratio increases over time as staking rewards accrue. This is by design — wstETH is a non-rebasing wrapper around stETH that captures yield through price appreciation rather than balance changes.

Despite the non-1:1 ratio, wrapping stETH to wstETH is still not a disposal. You haven't exchanged one asset for a different asset. wstETH is a representation of your stETH position — the same underlying staked ETH, in a different format. It's analogous to converting between accumulation and income units of the same fund.

We treat stETH → wstETH wrapping as TRANSFER. Cost basis carries over.

But here's where people get confused: the step before the wrap has completely different tax treatment.

ETH → stETH is a disposal. stETH → wstETH is not.

This catches people out constantly. When you deposit ETH into Lido and receive stETH, you're disposing of ETH and acquiring a new token. stETH is a liquid staking derivative with different properties to ETH — it rebases daily, accrues staking yield, and trades on its own market. That's a disposal of ETH for CGT purposes.

But when you then wrap that stETH into wstETH? Not a disposal. Just a representation change of the same underlying position.

Two steps, two different tax treatments. Most tools either classify both as disposals (overtaxing) or both as transfers (undertaxing). ChainTax handles them separately: CAPITAL_GAIN for the ETH → stETH deposit, TRANSFER for the stETH → wstETH wrap.

rETH and cbETH: these are disposals

Rocket Pool's rETH and Coinbase's cbETH look similar to wstETH on the surface — they're all liquid staking tokens that appreciate against ETH. But the tax treatment when you acquire them is different, because you're swapping ETH for a fundamentally different token in a single step.

When you swap ETH for rETH on Rocket Pool, you're disposing of ETH and acquiring rETH at the current exchange rate. rETH is its own token with its own market price. It appreciates over time as the Rocket Pool protocol earns staking rewards, but it's not a wrapped version of your ETH — it's a claim on the Rocket Pool staking pool.

Same for cbETH. You deposit ETH with Coinbase, they give you cbETH. Different token, different price, different market. That's a disposal.

We classify ETH → rETH and ETH → cbETH as CAPITAL_GAIN. The reverse — selling rETH or cbETH back to ETH — is also a disposal.

The rule: representation change vs token swap

The distinction that matters

If the wrapped token is a 1:1 technical representation of the underlying asset (WETH, wstETH), wrapping is a non-taxable transfer. If it's an appreciating derivative that you acquire in exchange for your ETH (rETH, cbETH), that's a disposal — a capital gains event.

This maps cleanly to what's actually happening on-chain. WETH wrapping is a deposit into a contract that holds your ETH and gives you a receipt token. You can withdraw 1:1. stETH → wstETH is similar — a non-destructive format conversion. But ETH → rETH is a swap through a pool. The exchange rate fluctuates. You're acquiring a different asset.

Appreciation in rETH/cbETH isn't taxed until you sell

One more thing that trips people up. If you bought rETH at 1.05 ETH/rETH and it's now worth 1.12 ETH/rETH, that appreciation is not a taxable event in itself. There's no disposal, no crystallisation of gain. It's unrealised.

The gain is only realised when you sell or swap the rETH. At that point, the difference between your disposal proceeds and your original cost basis (what you paid in ETH terms, converted to GBP at acquisition date) is your chargeable gain. This is different from stETH, where the daily rebase could be argued as income received on each rebase event. See our guide on reporting staking rewards to HMRC for how that works.

Quick reference: wrapped token tax treatment

OperationTaxable?ChainTax classification
ETH ↔ WETHNoTRANSFER
stETH → wstETHNoTRANSFER
wstETH → stETHNoTRANSFER
ETH → stETH (Lido deposit)YesCAPITAL_GAIN
ETH ↔ rETH (Rocket Pool)YesCAPITAL_GAIN
ETH ↔ cbETH (Coinbase)YesCAPITAL_GAIN
rETH/cbETH appreciationNo (until sold)Unrealised — no event

The pattern is consistent. If you can redeem 1:1 without relying on a market or exchange rate, it's a representation change. If there's a floating exchange rate and you're acquiring a distinct token, it's a disposal.

Why most tools get wrapped tokens wrong

The fundamental problem is the same one that causes bridge misclassification: generic tax tools look at token flows, not transaction intent. They see tokens leave your wallet and different tokens arrive. That pattern looks identical whether you're wrapping ETH (not taxable) or swapping ETH for rETH (taxable).

Without understanding which contracts are involved and what the method signatures mean, a tool cannot distinguish between these operations. So it guesses. And for someone with a large ETH position who wraps and unwraps regularly as part of DeFi activity, those guesses compound into significant errors across a tax year.

How ChainTax handles this

ChainTax's classifier reads the contract address and method signature of every transaction. WETH deposit/withdrawal calls are identified and classified as TRANSFER. Lido's wstETH wrap contract is recognised separately from the stETH staking contract. Rocket Pool and cbETH interactions are routed to dedicated protocol handlers that correctly classify them as CAPITAL_GAIN. Each protocol has its own handler — no guessing.

Check how your wrapping transactions are classified

If you've been wrapping and unwrapping ETH, staking with Lido, or holding rETH or cbETH, it's worth checking how your current tax tool handles these. Look for phantom disposals on WETH wraps and missing disposals on rETH/cbETH acquisitions — both create errors that propagate through your Section 104 pool.

You can paste any transaction hash into the free transaction explainer to see exactly how ChainTax classifies it — the protocol, the classification, and the reasoning behind it.

Stop phantom gains on wrapped tokens

ChainTax handles WETH, wstETH, rETH, and cbETH with dedicated protocol handlers — not guesswork. Correct classification, correct cost basis, correct Section 104 pool. Free for up to 75 transactions.

This article is for informational purposes only and does not constitute tax, legal, or financial advice. Tax rules can change, and individual circumstances vary. Always consult a qualified tax adviser before filing your Self Assessment return. HMRC guidance referenced: CRYPTO10100, CRYPTO22100, CRYPTO22200.

Related articles