Tax exports
Five files, and every figure in them can be traced back to a block
What you get
Positions, activity, multipliers, gains, Koinly
Positions
One row per position: tokens held, the multiplier now and at acquisition, effective shares, cost basis, value, and the dividend income accrued with no transaction behind it.
Activity
One row per on-chain event, with the transaction hash it came from and whether it is a taxable disposal — including “unknown”, which is a real answer and not a blank.
Multiplier ledger
Every recorded change to the hidden multiplier, with the block and the transaction that declared it. This is the file no other tool can produce, because nobody else kept the history.
Realised gains
One row per disposal, matched back to the purchases it consumed under the rule you chose, converted at the rate published on the day of that disposal.
Koinly import
The same events in the shape Koinly reads, so the work lands in the tool your accountant already uses instead of asking them to learn a new one.
Matching rules
Four rules for matching a sale back to a purchase, and you pick
Converted on the day, not today
Every disposal is converted at the rate published for the date of that disposal, from European Central Bank reference rates recorded when they were read. Twenty quote currencies.
A gap stays a gap
Where a rate was never published — a weekend, a holiday — the export says so rather than carrying a neighbouring day forward and calling it the rate.
Unknown is a value
A movement whose counterparty you have not identified is exported as unknown, not as a disposal and not as nothing. Guessing either way is how a return becomes indefensible.
Accrued income is separated out
Dividend income that arrived through the multiplier has no transaction to attach to, so it is its own column rather than being folded into a gain it is not part of.