Bitledger · Comparison
Bitledger vs. Koinly: the same DeFi wallets, two results
Four wallets with liquidity pools, lending, cross-chain and liquid staking, imported into both tools under the same conditions. Here is what came out without manual work, which transactions were classified wrongly, and where Koinly is the better choice. Bitledger was measured again after fixes; how it did on the same day as Koinly is under the first table.
At a glance
| Bitledger | Koinly | |
|---|---|---|
| Measured on | 29 October 2026 | 25 October 2026 |
| Test wallets imported | 4 of 4 | 4 of 4 |
| Correct in the sample (15 transactions per wallet) | 98.3% (59 of 60) | 20% (12 of 60) |
| Transactions recognised | 99% | not measured |
| Holdings match the chain | 2 of 4 wallets checked | 0 of 3 wallets checked |
Rates cover the wallets whose chain the provider offers; a failed import counts as 0 of 15. Recognised transactions and holdings could only be counted where the free plan offers an export or its own holdings check; otherwise the cell says “not measured”. Bitledger on 25 October 2026, measured on the same day as the others: 61.7% (37 of 60) in the sample.
What Koinly classified differently
| Transaction | Koinly | Correct would be | Effect |
|---|---|---|---|
| Stablecoin holdings (EURe) (wallet C) | Computes holdings of 13,362.39 EURe and values them at CHF 12,354.56; shows the gap to the chain as a warning | 0 EURe on chain | CHF 12'355 |
| Token inflow (RAIN) (wallet B) | Inflow counted twice: 240,000 instead of 120,000 RAIN | 120,000 RAIN | – |
| ZETA holdings (wallet D) | Negative holdings (−0.21429 ZETA), one inflow is missing | 0 ZETA on chain | – |
| Swap via 1inch (USDT for WETH) (wallet B) | Booked as a separate outflow and inflow, not linked as an exchange | An exchange; the WETH takes the value of the USDT as its cost basis | CHF 42 |
Per wallet
Wallet A: Lending and borrowing on Aave, liquidity in and out, bridges to the holder's own address
| Bitledger | Koinly | |
|---|---|---|
| Correct in the sample (of 15) | 15 | 2 |
| Transactions recognised | 100% | not measured |
| Holdings match the chain | yes | not measured |
Wallet B: Lending and borrowing on Aave with WETH, WBTC and stablecoins, swaps
| Bitledger | Koinly | |
|---|---|---|
| Correct in the sample (of 15) | 14 | 7 |
| Transactions recognised | 99.5% | not measured |
| Holdings match the chain | no | no |
Bitledger: Holdings: ETH dust differs by USD 0.004; wrong in the sample: a spam airdrop booked as income (CHF 0).
Wallet C: Aave with a euro stablecoin, liquid staking (osGNO), cross-chain swaps
| Bitledger | Koinly | |
|---|---|---|
| Correct in the sample (of 15) | 15 | 2 |
| Transactions recognised | 96.6% | not measured |
| Holdings match the chain | yes | no |
Wallet D: Cross-chain assets from Bitcoin, Ethereum and BNB Chain, LP tokens, liquid staking
| Bitledger | Koinly | |
|---|---|---|
| Correct in the sample (of 15) | 15 | 1 |
| Transactions recognised | 100% | not measured |
| Holdings match the chain | no | no |
Bitledger: Holdings: −0.21 ZETA, one credit from the protocol is missing.
Features
| Bitledger | Koinly | |
|---|---|---|
| Report for the Swiss tax return (CHF) | yes | CHF selectable, report not checked |
| Tax value at 31 December shown | yes | not measured |
| Price list of the Federal Tax Administration (ESTV) | Noted in the report, prices from CoinGecko | not measured |
| Note on professional trading (circular 36) | yes | not measured |
| Reason shown for every classification | yes | not measured |
| Holdings checked against the chain | yes | built-in holdings check |
| Price for up to 1,000 transactions a year | not measured | not measured |
Where Koinly is better
- Recognises loans on Aave as “Loan” and “Loan repay”; on 25 October Bitledger still booked the repayments as outflows.
- A built-in holdings check that flags gaps to the chain itself.
All five tools side by side, and how we tested: The full comparison