Home › Encyclopedia › Transaction types › Liquidity add / remove
Classification encyclopedia

Liquidity pool deposits and withdrawals: tax classification and treatment Grey area

Adding liquidity exchanges tokens for a pool position; removing it exchanges the position back. The house default classifies both as disposal, a disposition of what was given up, with the continuity alternative exposed because the treatment is genuinely contested.

Example last verified 2026-08-06 against the live engine. CryptoTaxEdge Team.

9628 verified rules8 chains13 protocols

Tax treatment

House default: disposal Grey area

House default: adding or removing liquidity is treated as a disposition (disposal) of the assets exchanged for the pool position. The alternative, a continuity-of-position view in which no disposition occurs and basis carries into and out of the position, is exposed alongside it. The position is configurable per firm and applied consistently across the book.

Both positions are defensible when documented and applied uniformly; the engine labels the house default and shows the alternative rather than hiding the choice. Wire responses carry an explicit grey_area field.

How the engine reads this shape

The disposition view says depositing two tokens for an LP token (or an NFT position) is an exchange of property for different property under §1001, so gain or loss is recognized on entry and again on exit. The continuity view says the depositor retains the same economic exposure through the pool, so nothing is realized until the underlying assets are actually sold. Concentrated-liquidity positions, fee accrual inside the position, and impermanent loss all complicate the accounting either way, which is why the engine surfaces the grey-area flag on every LP verdict instead of hiding the choice.

A real classification

Real transaction, replayed against the live engine
POST /v1/classify { "chain": "polygon", "hash": "0x00084e19ef6018ec2e70d6ae293353cb0a184d421230f438aedfa506d9a5032f" }
{
  "api_version": "v1",
  "hash": "0x00084e19ef6018ec2e70d6ae293353cb0a184d421230f438aedfa506d9a5032f",
  "chain": "polygon",
  "category": "liquidity_add",
  "treatment": "disposal",
  "taxable": true,
  "confidence": 85,
  "needs_review": false,
  "ledger_action": "Liquidity In",
  "protocol": "Uniswap V3",
  "description": "Liquidity provided via Uniswap V3; treated as a taxable disposition of the contributed assets (house policy, IRC §1001).",
  "review_note": null,
  "grey_area": {
    "note": "LP contribution/withdrawal: no LP-specific IRS guidance; general property/realization principle governs.",
    "alternate": {
      "treatment": "non_taxable",
      "taxable": false,
      "label": "Non-recognition view (LP contribution/withdrawal as a deposit)"
    }
  },
  "assets": {
    "sent": [
      {
        "symbol": "DAI",
        "amount": "0.1",
        "decimals": 18,
        "action": "transferred",
        "token_address": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",
        "to": "0x07964f135f276412b3182a3b2407b8dd45000000"
      }
    ],
    "received": [
      {
        "symbol": "A",
        "amount": "0.023682",
        "decimals": 18,
        "action": "received",
        "token_address": "0x6631ee651da438db2be611b5a44dfe2ca04590c5",
        "token_name": "A",
        "from": "0xfb608080df01aca0c7cd9433d8253172bba32fbc"
      }
    ],
    "gas": null
  }
}

Verbatim wire response from the live engine. Last verified 2026-08-06 by live replay. Check any transaction yourself in the Classification Explorer.

Verified rules behind this category

The engine backs this category with 9628 verified contract-level rules across 8 chains, each earned from repeated on-chain observation and cross-source agreement rather than a heuristic guess. A small illustrative sample:

ProtocolChainCategoryConfidence
multipleavalancheliquidity_removehigh
multipleavalancheliquidity_addhigh
multipleethereumliquidity_removehigh
multipleethereumliquidity_addhigh
multiplepolygonliquidity_addhigh

Illustrative sample of the 9628 verified rules behind this page: the full mappings are served through the API.

Limitations

What this page does not decide. LP verdicts identify entry and exit legs, not the running P&L of a position. Fees collected while in range, range adjustments, and gauge or farm staking of the LP token itself are separate events with their own classifications. Confidence is a corroboration signal, not an accuracy percentage: when independent parses of a transaction disagree, the engine returns needs_review with taxable: null rather than guessing.

Classify a transaction

Frequently asked questions

What tax treatment does this page document?

House treatment follows the CryptoTaxEdge Classification Standard. Categories with no fixed mapping (GAP-3) tell you to read the treatment field on the record rather than infer it from the category name.

Where is the closed vocabulary published?

The versioned Classification Standard at https://cryptotaxedge.com/standard/ enumerates emitted categories and the five-treatment enum. This encyclopedia page is a worked example on top of that Standard.

Are the wire examples still current?

Yes. Each example is verbatim engine output, re-verified on a daily replay against the live engine.

Not tax advice. CryptoTaxEdge is software, not a licensed tax advisor. Classifications and the treatments described here are informational only; verify results and consult a qualified tax professional before filing. IRC section references are general framing.