Skip to content

Cost basis types

Cost basis tracks what you paid for the tokens you hold, so that when you dispose of some, the gain or loss can be measured against what those tokens actually cost.

The cost basis type is the rule for deciding which acquisition a disposal draws its cost from. It is not a presentation choice: two entities with identical transactions and different types will report different realised gains.

Beta

Cost basis is marked Beta in the app. It is available in both portfolio and accounting entities.

The four types

TypeHow a disposal is costed
AVCOAverage cost. Every acquisition goes into one pool, and the pool carries a running average price. A disposal takes its cost at that average.
FIFOFirst in, first out. A disposal draws from the oldest acquisition still held.
LIFOLast in, first out. A disposal draws from the most recent acquisition.
HIFOHighest in, first out. A disposal draws from the most expensive acquisition still held.

The important split is not the four names but the two behaviours behind them:

  • AVCO is pooled. There are no lots. Quantity and cost are two running totals, and the average price is one divided by the other.
  • FIFO, LIFO and HIFO match lots. Each acquisition is a distinct lot with its own quantity and price, and every disposal is matched against specific lots.

That distinction is what drives the limitation below.

Lot types start from a nil position

An opening balance records a pooled quantity and a carrying amount: one number for how much, one for what it cost. Individual acquisition lots cannot be reconstructed from those two figures.

So while opening lots are unsupported, FIFO, LIFO and HIFO start from zero quantity and zero cost. Only acquisitions from the opening date onward are recognised. The app states this on the form itself, under Start from a nil opening position, and the Balance and Cost fields are replaced by that notice rather than left to be filled in.

This has a real consequence for what you pick:

  • Holding tokens acquired before your opening date and choosing a lot type means that earlier history is not carried in. Disposals will be costed only against acquisitions inside the window.
  • AVCO honours an opening position, so it is the type to use when your holdings pre-date the point you started tracking cost basis here.
  • Alternatively, set the opening date early enough that the acquisitions you care about fall inside the period, but that only works if the postings for them exist.

Choosing the type

The type is set per token, on that token's cost basis opening balance. Open Cost Basis, select the token, then Create opening balance.

FieldNotes
DateThe date the opening position is as at. Future dates are disabled.
Cost basis typeAVCO, FIFO, LIFO or HIFO. Defaults to AVCO.
PeriodMonthly or Yearly: how the token's period summaries are grouped.
BalanceThe opening quantity. AVCO only.
CostWhat that quantity cost. AVCO only.

For AVCO, the balance is suggested for you, summed from the token's token card closing balances on the day before the opening date. See opening balances for how that suggestion is built and what to check before accepting it.

Changing the type

There is no edit. To change a token's type, delete the opening balance and create a new one from the token's cost basis page.

Everything downstream is derived, so it all recomputes from the new opening position: running balance, running cost, average price, realised PnL per disposal, and the period summaries.

Check what has already been posted

If you have posted realised PnL for a period, changing the type changes the figures those postings were based on. The postings themselves are not rewritten. Reconcile the two deliberately rather than discovering the difference at year end.

Where the type shows up

Cost basis opening balances per token

The Cost Basis list has a row per token with a Set or Not set badge, the opening date, the type in uppercase, the period, and the opening balance and cost.

A token's own page uses the type for everything it derives: the running average price on each row of the timeline, the realised PnL on every disposal, and the acquisition cost of what was sold in each period summary. See transactions and summaries.

Uncategorised rows are not a type problem

A row is left out of the calculation when its category has no cost basis side set, so it is neither an acquisition nor a disposal. That is fixed under categories, not by changing the type.

Next

Opening balances is where the type is chosen, and where a token's cost basis timeline begins.

Crypto accounting, finally automated.