A reconciliation is only as good as the pair of documents behind it. These are the combinations we take in, and the difference pattern each one tends to produce. If your combination isn't listed, that is what the pilot request form is for — source coverage is decided by what the first three files actually contain.
| Software | Export shape | Typical difference driver | Detail |
|---|---|---|---|
| Koinly | Capital gains CSV, transactions CSV, per-wallet view | Wallet-transfer pairing, zero-basis reward lots, fee treatment | Koinly vs 1099-DA → |
| CoinTracker | Transactions CSV, gains CSV | Duplicate API + CSV imports, unpriced assets | Profile in progress |
| CoinLedger | Transactions CSV, income detail | Income classification, swap leg pricing | Profile in progress |
| TaxBit | Transaction history export | Enterprise lot method settings, partial-year coverage | Profile in progress |
| Spreadsheet / in-house | Whatever the client sends | Everything — usually no lot layer at all | Case by case |
| Source | What the form contains | What it usually lacks |
|---|---|---|
| Custodial brokers (1099-DA filers) | Gross proceeds per account; cost basis only for covered lots, and only from tax year 2026 | The non-covered history, and any lot detail behind the basis figure |
| Centralized exchanges | Annual statement, trade history, sometimes a 1099-MISC for rewards | Consistency between the statement total and the trade-level export |
| Self-custody wallets | On-chain history only | Cost basis and acquisition dates, unless the client tracked them |
| DeFi and staking | Reward events, sometimes only a claim/withdraw record | Fair-market value at receipt — the input that determines basis |
Every new combination is a small research task: what the export actually contains, and where it diverges from the tax document. We add combinations in the order the pilot requests arrive, so the list above reflects demand rather than ambition.
Tell us what you have. If the format is one we can read, the pilot is free.
Request the pilot