How every transaction is classified.
Grubless sorts each transaction into one of 68 categories, and each category carries a default tax treatment: 22 capital gain/loss, 10 income, 26 not taxable, 10 ignored. This page is generated from the same list the engine itself uses, so it cannot drift from what your figures are actually built on.
A disposal. Proceeds are the market value at the time; the gain or loss is that less the cost base of the parcels consumed.
Assessable as ordinary income at market value on the day you received it. That value also becomes the cost base, so a later sale is taxed only on the movement since.
Recorded and reportable, but no tax consequence of its own. It still shapes your figures: an inbound leg creates a parcel with a cost base for later.
Excluded from the ledger entirely. No parcel, no disposal, no effect on any figure.
Common
| Category | Default treatment | Notes |
|---|---|---|
Buybuy |
Not taxable | — |
Sellsell |
Capital gain/loss | — |
Cross-Chain Buycross_chain_buy |
Not taxable | The receiving half of a bridge. Behind a per-entity setting that defaults to NOT a disposal, since the same value simply moved chains. |
Cross-Chain Sellcross_chain_sell |
Capital gain/loss | The sending half of a bridge — see the receiving half. |
Sendsend |
Not taxable | — |
Receivereceive |
Not taxable | — |
Transfertransfer |
Not taxable | A confirmed move between your own wallets. Never a disposal in any jurisdiction, so this one isn't configurable — but the cost base travels with the coins rather than resetting. |
Ignored
| Category | Default treatment | Notes |
|---|---|---|
Failed (In)failed_in |
Ignored | — |
Failed (Out)failed_out |
Ignored | — |
Ignore (In)ignore_in |
Ignored | — |
Ignore (Out)ignore_out |
Ignored | — |
Spamspam |
Ignored | Unsolicited tokens sent to your address, usually to bait an interaction. Excluded so they can't inflate holdings or invent disposals. |
Dust (In)dust_in |
Ignored | — |
Dust (Out)dust_out |
Ignored | — |
DeFi (incoming)
| Category | Default treatment | Notes |
|---|---|---|
Collateral Withdrawalcollateral_withdrawal |
Capital gain/loss | Behind the same setting as posting collateral. |
Remove Liquidityremove_liquidity |
Capital gain/loss | Behind the same setting as supplying liquidity. |
Loanloan |
Not taxable | Borrowed principal is not income and not a disposal — it is a liability. Only what you do with the borrowed asset afterwards can be taxable. |
Receive Receipt Tokenreceive_receipt_token |
Not taxable | — |
Staking Rewardstaking_reward |
Income | Whether this is income on receipt depends on the entity — a business is assessed on it. Per-entity setting. |
Voting Rewardvoting_reward |
Income | — |
Staking Withdrawalstaking_withdrawal |
Not taxable | Rewards already recognised as they accrued are not counted a second time when the stake account closes and pays out as one lump sum. |
Staking Deactivationstaking_deactivation |
Not taxable | — |
Staking Splitstaking_split |
Not taxable | — |
Staking Mergestaking_merge |
Not taxable | — |
DeFi (outgoing)
| Category | Default treatment | Notes |
|---|---|---|
Collateral Depositcollateral_deposit |
Capital gain/loss | Behind its own per-entity setting, separate from liquidity. The weaker case for a disposal in either jurisdiction: you keep ownership and are entitled to the specific asset back. |
Add Liquidityadd_liquidity |
Capital gain/loss | Behind a per-entity setting. On by default: supplying a pool mixes your asset with other people's and hands back a receipt, so ownership plainly moves. |
Loan Repaymentloan_repayment |
Capital gain/loss | Repaying principal is not a disposal of the repaid asset's value to you; interest is an expense. |
Send Receipt Tokensend_receipt_token |
Not taxable | — |
Staking Depositstaking_deposit |
Not taxable | Delegating to a validator doesn't change who owns the coins, so it isn't a disposal — and the cost base is not reset on the way back out. |
Liquidationliquidation |
Capital gain/loss | — |
Other incoming
| Category | Default treatment | Notes |
|---|---|---|
Fiat Depositfiat_deposit |
Not taxable | — |
Airdropairdrop |
Income | Not income on receipt by default. What matters is the market value when you dispose of it. |
Chain Splitchain_split |
Not taxable | New coins from a fork start with a nil cost base under both rulesets, so the whole proceeds are a gain when sold. |
Giftgift |
Not taxable | — |
Salessales |
Income | — |
Incomeincome |
Income | — |
Interestinterest |
Income | — |
Miningmining |
Income | — |
Mintmint |
Not taxable | A token created into your wallet rather than sent to it. Behind a per-entity setting: on by default, the tokens are yours; off, tokens you mint against someone else's deposit and pass on were never your CGT assets, though anything you keep still is. |
Rebaterebate |
Not taxable | — |
Royaltiesroyalties |
Income | — |
Outgoing
| Category | Default treatment | Notes |
|---|---|---|
Fiat Withdrawalfiat_withdrawal |
Not taxable | — |
Burnburn |
Capital gain/loss | — |
Lostlost |
Capital gain/loss | A capital loss requires evidence the asset is genuinely unrecoverable, not merely fallen in value. |
Outgoing Giftoutgoing_gift |
Not taxable | — |
Personal Usepersonal_use |
Capital gain/loss | An Australian concession, available only in limited circumstances and never for something acquired as an investment. No US equivalent. |
Stolenstolen |
Capital gain/loss | Treated as a loss at the point of theft, on the same evidentiary footing. |
Expenses
| Category | Default treatment | Notes |
|---|---|---|
Approvalapproval |
Capital gain/loss | — |
Expenseexpense |
Capital gain/loss | — |
Feefee |
Capital gain/loss | Network and exchange fees are disposals of the coins spent, and a cost that reduces your net position. |
Staking Activationstaking_activation |
Capital gain/loss | — |
Wageswages |
Capital gain/loss | — |
Invoice Paymentinvoice_payment |
Capital gain/loss | — |
Derivatives (incoming)
| Category | Default treatment | Notes |
|---|---|---|
Decrease Positiondecrease_position |
Not taxable | — |
Receive Position Tokenreceive_position_token |
Not taxable | — |
Realized Profitrealized_profit |
Income | Derivatives settle in cash rather than by disposing of a holding, so profit and loss are recognised as they settle. |
Derivatives (outgoing)
| Category | Default treatment | Notes |
|---|---|---|
Increase Positionincrease_position |
Not taxable | — |
Send Position Tokensend_position_token |
Not taxable | — |
Realized Lossrealized_loss |
Income | The mirror of settled profit. |
Margin Feemargin_fee |
Capital gain/loss | — |
Other
| Category | Default treatment | Notes |
|---|---|---|
Incomingincoming |
Ignored | — |
Outgoingoutgoing |
Ignored | — |
Unknownunknown |
Ignored | — |
Tradetrade |
Capital gain/loss | — |
Wrapped Tokenswrapped_tokens |
Capital gain/loss | Behind a per-entity setting, defaulting to a disposal. Wrapping is a genuine grey area: you receive a different asset, but one that tracks the original exactly. |
Reflection Tokensreflection_tokens |
Not taxable | — |
Rebase Tokensrebase_tokens |
Not taxable | — |
Cross-Chain Tradecross_chain_trade |
Capital gain/loss | — |
Defaults, not verdicts
Several treatments above are genuinely contested, and the ones that are sit behind a per-entity setting rather than being decided for you — wrapping, bridging, supplying liquidity, posting collateral, and tokens you mint yourself. Each defaults to the position that needs no supporting paperwork, and each can be changed per entity, because two entities in one account can legitimately take different positions — and can sit in different countries.
Anything you categorise by hand is never overwritten by an automated pass.
Where a category isn't the whole answer
Your entity's jurisdiction, type and settings all feed the final numbers, and the treatments above are the shared starting point rather than the answer. Under Australian rules a parcel held over twelve months may attract the CGT discount, and an SMSF's rate depends on its phase; under US rules the same parcel is instead split into long-term and short-term, stacked on ordinary income, and a C-corp pays a flat rate with no preferential treatment at all. The category decides what KIND of event something is — the ruleset decides what that means for the entity holding it.
Grubless is a calculator, not a tax agent. Positions that depend on your circumstances or your paperwork are yours and your accountant's to take.