Name the lot. BasisFix consumes that lot and refuses to guess past it.

Not tax advice · reviewed 25 October 2026

Specific identification for bitcoin

Bitcoin held as property is disposed of in units. Specific identification means those units are the ones you can point to, rather than “the oldest” or “the most expensive.” BasisFix will consume only the lots you name. The output is still a review with a tax pro.

What you hand the worksheet

The browser reconciler takes a JSON object. The command-line tool reads the same shape from --specific. Keys are disposal event ids. Values are the lots and the quantities, as strings so a round trip does not change a decimal.

{
  "river:SAMPLE-RIVER-SELL-1": [
    {"lot_id": "lot-river:SAMPLE-RIVER-BUY-2", "quantity": "0.15"}
  ]
}

What the matcher will not do

On the invented classic sample, the specific-ID file names the higher-basis lots and the net gain on included rows is 8409.50. The Kraken ETH sale in that sample stays unresolved because the deposit has no USD basis. Naming a lot does not create a price. See missing basis.

Records, separate from the toggle

Notice 2014-21 is the IRS statement that convertible virtual currency is property. Identifying which units of property you sold is an old capital-gain question, and the records have to support the identification. This JSON is a calculation input. It does not store proof that you identified the coins before the sale, and it does not talk to a broker. If the only reason a lot was chosen is that HIFO produced a smaller number after the fact, read HIFO and FIFO and decide with a tax pro whether the record is adequate. BasisFix will not make that decision.

Questions

What happens if I name more coins than the lot holds?

BasisFix rejects that allocation and does not consume the lot. It will not silently fall back to FIFO for the overflow.

Does the JSON file prove I identified the units at the time of sale?

No. It only tells this worksheet which lot to consume. Adequate identification is a records question for a tax pro. BasisFix does not timestamp when you chose the lot.

What is a lot id after a transfer?

A lot opened by a purchase or income event is lot-{event id}. A lot that moved with a matched transfer is xfer-{outgoing event id}-{source lot id}. Event ids look like source:external_id.

Related drafts