basis // cost basis, reconstructed
Basis reconstructs cost basis across 41 chains and 120 exchanges and shows the working for every number. If we cannot determine a basis we tell you, rather than quietly filling in zero.
reconciliation // 2024-25
chains indexed
41
exchange connectors
120
lines with a source
100%
basis we could not determine
flagged
numbers quietly guessed
0
Every figure above expands into the transactions behind it. Nothing on this page is an estimate we hid from you.
the nine
Not opinions. Each one is a decision the software made on your behalf, without telling you, that changes what you owe.
01
Most tools silently set an unknown cost basis to zero, which turns a break-even trade into a taxable gain. We flag it, quantify it, and make you decide.
02
Moving the same asset across a bridge is not always a disposal. We track wrapped and bridged representations as one position and show the trail.
03
We decompose liquidity positions into their underlying tokens at entry and exit, including impermanent loss and accrued fees, per block.
04
Tools price an airdrop at the block you claimed it, not the block it became yours. We record both, apply the rule your jurisdiction actually uses, and show which one moved the number.
05
Rewards accrue per epoch and each accrual carries its own basis. We keep every one at its own timestamp and price, then let you collapse the view without losing the rows underneath it.
06
A fee paid in the asset you are disposing of is itself a disposal, and a fee on an acquisition belongs in the basis. We allocate every unit of gas to the event that caused it.
07
A move between two wallets you control is not a taxable event, but a tool that only sees one side of it books a disposal. We match both sides across chains and label the internal transfer.
08
A reverted transaction still burns gas but moves no asset. Most tools either drop the fee or book a phantom trade. We keep the fee, discard the trade, and say so on the line.
09
A token on an L2 at 03:14 is not the same print as the same token on mainnet. We source prices per venue, record which feed we used, and mark any figure that fell back to another.
02 // hard cases
LP positions, wrapped assets and bridges are where every other reconstruction quietly gives up. They are the first thing Basis was built to get right.
lp
them
One opaque LP token in, one opaque LP token out, and a gain invented from the difference.
basis
We resolve the position into its underlying tokens at entry and at exit, separate impermanent loss from accrued fees, and carry a basis for each leg at the block it moved.
wrap
them
wETH is booked as a different asset from ETH, so wrapping triggers a disposal you never made.
basis
Wrapped representations inherit the position and the basis of the asset they represent. The wrap appears in the trail as a wrap, not as a trade.
bridge
them
The asset leaves one chain and arrives on another as a brand-new acquisition with no history.
basis
We match the outbound and inbound legs, keep the acquisition date and basis intact, and show both transaction hashes on the same line.
03 // missing data
A gap in the data is a fact about your history, not a hole to be filled with a convenient number. Every gap in Basis is typed, visible and yours to resolve.
unknown basis
We mark the lot as undetermined and show what the figure would be under each assumption you could reasonably make. Nothing is filed until you pick one.
missing price
We use the nearest verifiable print from a named venue, record the gap in minutes, and label the line as sourced by proximity rather than exact match.
unknown counterparty
An address we cannot classify stays unclassified. We will not guess that it is your own wallet in order to make a transfer non-taxable.
incomplete history
We state the date range we can stand behind and the range we cannot, per chain and per account, before you ever see a total.
04 // audit trail
Every figure on the report expands into the transaction hashes, the price source, the timestamp and the rule applied. Print it and hand it to an accountant or an auditor without a covering explanation.
disposal 0.4211 eth
gain 233.71
tx in
0x9f3c 41ab e7d2 a12b · base · block 12,884,901
tx out
0x41de 9b02 cc17 5f80 · mainnet · block 19,441,207
timestamp
2024-03-14 09:41:07 utc (venue clock, not ours)
price
3,412.08 · coinbase spot · exact match, 0s drift
rule
uk s.104 pooling · 30-day window checked, no match
basis
1,203.44 · acquired 2021-11-08 · carried through 1 bridge
fees
gas 4.19 allocated to this disposal, not written off
This is one line of one report, expanded. Every other line expands the same way, including the ones that net to nothing.
05 // jurisdictions
UK share pooling with the 30-day rule, US FIFO/LIFO/HIFO and wash sale treatment, plus Germany, Australia, Canada and Ireland. Method locked per jurisdiction, not per user preference.
uk · s.104 pool + 30 day
us · fifo / lifo / hifo
de · 1 year holding
au · cgt discount
ca · adjusted cost base
ie · fifo + 4 week
Locking the method to the jurisdiction is deliberate. A dropdown that lets you pick the method with the smallest number is not a feature, it is a liability with a nice interface.
06 // keys and data
Read-only API keys and public addresses only. We never ask for a seed phrase or a withdrawal permission, and the key form rejects any key with trading scope.
what basis can see
+
Public addresses you paste in, and their on-chain history.
+
Read-only exchange keys, scoped to trade and transfer history.
+
The reports you generate, until you delete them.
what basis never asks for
-
A seed phrase or private key. There is no field for one.
-
Withdrawal or trading permission on any exchange key.
-
Custody of anything. Basis reads; it never moves an asset.
07 // pricing
Free under 100 transactions. 89 to 10,000. 249 to 100,000. 599 above that, including a call with a human who has actually filed one of these.
free
under 100 transactions
Full reconstruction, full audit trail. Not a trial.
89
per tax year
to 10,000 transactions
Every chain and exchange connector included.
249
per tax year
to 100,000 transactions
LP decomposition and bridge matching at volume.
599
per tax year
above 100,000 transactions
Includes a call with a human who has actually filed one of these.
One price per tax year, per person. No per-chain surcharge, no paywall on the audit trail, and no upsell standing between you and a number you can defend.
08 // start
Paste one address. Basis reconstructs what it can, tells you plainly what it cannot, and shows the working for both. Under 100 transactions it stays free, permanently.
read-only · no seed phrase · deadline in view
basis
Crypto tax software that shows its working. Not tax advice; the audit trail is so your adviser does not have to take our word for it either.