Home › Canonical Examples
Reference

Canonical classification examples

Fifty-three verbatim request/response captures from the live CryptoTaxEdge engine: real transactions, independently sourced, saved exactly as the API returned them. Each file is stamped with its capture date and policy version, and the whole pack is replayed against the live engine daily: if the engine's answer for any capture drifts, the site build fails rather than publishing a stale claim.

The composition: forty-four identified classifications spanning transfers, swaps, wrapping, liquid staking, restaking, reward claims, liquidity add/remove, lending (collateral, borrow, repay), an NFT mint, and bridging (eight of those carry a review flag on the treatment with the reason stated in the response), plus nine annotated deferrals where the engine declines to guess.

Read the needs_review rows first. 17 of the 53 captures return treatment: needs_review with taxable: null: nine where the evidence does not support even naming the category, and eight where the category is identified but the treatment is routed to a human. That is the engine declining to guess when the evidence does not support a confident treatment. Each one is annotated below with why it defers. A sample pack of nothing but high-confidence wins would be marketing; deferrals-with-reasons are the product.

The pack

Captures 01 to 17 taken 2026-08-12, with three re-captured 2026-08-18; captures 18 to 53 taken 2026-08-21; captures 29 and 34 re-captured 2026-09-01 after the daily replay caught both drifting to a review deferral (the annotations below say why); capture 09 re-captured 2026-09-01 with its verdict unchanged (the note under the flagged-treatment rows says why). All under policy version us-default-2026-08. Every row links to the raw JSON, which validates against the published cte-classification-v1 schema. Wire values are documented in the classification taxonomy and enumerated in the Classification Standard v1.1. Confidence is a corroboration signal, not an accuracy percentage: it reflects how well the available evidence agreed on the classification, and it gates one decision, whether the record is served as a treatment or routed to a human. Scores are not comparable across transactions and are not a probability that the treatment is correct.

CaptureChainCategoryTreatmenttaxableConfidenceProtocol
01-transfer.jsonethereumtransferneeds_reviewnull60ERC-20 Transfer
02-transfer.jsonethereumtransferneeds_reviewnull60Native ETH transfer (no protocol)
03-swap.jsonethereumswapdisposaltrue95(none)
04-swap.jsonsolanaswapdisposaltrue80Jupiter
05-swap.jsonsolanaswapdisposaltrue80Pump amm
06-wrap.jsonethereumwrapnon_taxablefalse95WETH Deposit
07-unwrap.jsonethereumunwrapnon_taxablefalse85WETH
08-collateral_supply.jsonethereumliquid_staking_mintnon_taxablefalse95Lido
09-reward.jsonethereumrewardneeds_reviewnull70(none)
10-liquidity_add.jsonethereumliquidity_adddisposaltrue95Curve Finance
11-liquidity_remove.jsonethereumliquidity_removeneeds_reviewnull95Curve Finance
12-collateral_supply.jsonethereumcollateral_supplynon_taxablefalse99Aave V3
13-collateral_withdraw.jsonethereumcollateral_withdrawnon_taxablefalse85Aave V3
14-bridge_transfer.jsonethereumbridge_transfernon_taxablefalse85Across Protocol
15-needs_review.jsonethereumneeds_reviewneeds_reviewnull0AlloXCheck (unidentified protocol)
16-needs_review.jsonethereumneeds_reviewneeds_reviewnull0Uniswap V4
17-needs_review.jsonethereumneeds_reviewneeds_reviewnull0ERC-4337 EntryPoint v0.7
18-repay.jsonethereumrepaynon_taxablefalse95Aave V3
19-collateral_supply.jsonethereumcollateral_supplynon_taxablefalse99Aave V3
20-borrow.jsonethereumborrownon_taxablefalse80(none)
21-collateral_withdraw.jsonethereumcollateral_withdrawnon_taxablefalse85Aave V3
22-needs_review.jsonethereumneeds_reviewneeds_reviewnull0Morpho Blue
23-collateral_supply.jsonethereumcollateral_supplynon_taxablefalse95Morpho Blue
24-collateral_supply.jsonethereumcollateral_supplynon_taxablefalse80(none)
25-collateral_withdraw.jsonethereumcollateral_withdrawnon_taxablefalse85Compound V3
26-collateral_supply.jsonethereumcollateral_supplyneeds_reviewnull70(none)
27-collateral_withdraw.jsonethereumcollateral_withdrawneeds_reviewnull70(none)
28-collateral_supply.jsonethereumcollateral_supplyneeds_reviewnull70Morpho MetaMorpho (Steakhouse USDC)
29-needs_review.jsonethereumneeds_reviewneeds_reviewnull0Sky Savings Rate (sUSDS)
30-liquid_staking_mint.jsonethereumliquid_staking_mintnon_taxablefalse95Lido
31-unwrap.jsonethereumcollateral_supplynon_taxablefalse80(none)
32-wrap.jsonethereumneeds_reviewneeds_reviewnull0Lido
33-wrap.jsonethereumwrapnon_taxablefalse70(none)
34-needs_review.jsonethereumneeds_reviewneeds_reviewnull0Renzo RestakeManager (EigenLayer)
35-restaking_deposit.jsonethereumrestaking_depositnon_taxablefalse95EigenLayer: StrategyManager
36-swap.jsonethereumswapdisposaltrue95Pendle
37-swap.jsonethereumswapdisposaltrue80(none)
38-swap.jsonethereumswapdisposaltrue671inch AggregationRouterV6
39-swap.jsonethereumswapdisposaltrue661inch AggregationRouterV6
40-swap.jsonethereumswapdisposaltrue80(none)
41-swap.jsonethereumswapdisposaltrue80(none)
42-swap.jsonethereumswapdisposaltrue80(none)
43-bridge_transfer.jsonethereumbridge_transfernon_taxablefalse80(none)
44-bridge_transfer.jsonethereumbridge_transfernon_taxablefalse80(none)
45-bridge_transfer.jsonethereumbridge_transfernon_taxablefalse85Across Protocol
46-transfer.jsonethereumtransferneeds_reviewnull60Circle CCTP
47-bridge_transfer.jsonethereumbridge_transfernon_taxablefalse80(none)
48-bridge_transfer.jsonethereumbridge_transfernon_taxablefalse85Stargate V2 (LayerZero)
49-nft_mint.jsonethereumnft_mintdisposaltrue65OpenSea Seaport
50-liquidity_remove.jsonethereumliquidity_removedisposaltrue95Pendle
51-needs_review.jsonarbitrumneeds_reviewneeds_reviewnull0GMX V2
52-needs_review.jsonarbitrumneeds_reviewneeds_reviewnull0GMX V2
53-wrap.jsonethereumwrapnon_taxablefalse70(none)

Why the engine defers

The nine captures whose category is needs_review are not failures to compute; they are cases where asserting a treatment would require information the transaction hash alone cannot provide, or where the evidence did not corroborate a verdict strongly enough to serve it.

Eight further rows identify the category but flag the treatment for review, with the reason stated in the response itself. 01-transfer.json and 02-transfer.json are one-way sends whose recipient could not be verified as the taxpayer's own wallet. From a hash alone the engine holds no evidence about who the recipient is, so booking either as a non-taxable self-transfer would silently drop a possible IRC §1001 disposal (a payment, a sale, or a gift) out of the books. Unverified one-way transfers route to review in both directions: an unflagged outgoing send would leave no trace of a possible disposal at all, and an unverified receipt can be income, a gift, or a self-transfer, which the engine holds no ownership evidence to tell apart. Confirming that the recipient is the client's own wallet is what settles the treatment. 09-reward.json and 11-liquidity_remove.json flag for different reasons: a reward claim where the income amount needs confirming, and a liquidity withdrawal whose harvest component should be split from principal before booking. The remove defers because of that withdraw-and-harvest income-split check (a possible reward leg received alongside the pool principal), not because the exit policy differs: the principal's exit follows the same house disposal default as the add. Among the newer captures, 26, 27, and 28 are vault deposits and withdrawals booked non-taxable in form but flagged because vault-share tax character depends on the specific vault and on how the position was acquired; and 46-transfer.json is a cross-chain send through a burn-and-mint bridge to a recipient the engine cannot verify as the taxpayer's own wallet, the same one-way-send rule as captures 01 and 02. (Captures 29 and 34, which sat in this group until 2026-09-01, now defer on the category itself; their entries are in the list above.) Capture 09 was re-captured on 2026-09-01 after one replay run, minutes after an engine deploy, served this transaction as income at confidence 77 with no review flag: that run did not re-derive the token legs the review check depends on, so the older cached verdict went out unflagged. The fresh capture, and every run since, returns the review-routed verdict at 70 again; that is what is published, and the only change in the file is punctuation in the response text. The replay guard exists to catch exactly that kind of one-run divergence, and this note is the record of it. Flagged, not guessed.

What to do with these

Use them as fixtures for an integration before you mint a key, as ground truth for what the classification API actually returns (including the shape of a deferral), or as a check against the OpenAPI 3.1 spec. An illustrative named sample of the same wire contract is at /examples/sample. To reproduce any row live, enter its transaction hash in the Classification Explorer.

Not tax advice. CryptoTaxEdge is software, not a licensed tax advisor. These captures are engine output for specific public transactions, informational only. Verify results and consult a qualified tax professional before filing.