Forget about marketing hype; we take a hard look at the top 5 Crypto Tax Software based on real world testing and compare their results.

The best way to work out which Crypto Tax Software to choose is to put it through its paces using real world data and see how each stack up. We compare the top 5 crypto tax software using identical inputs and a broad range of criteria and see what their strengths and weaknesses are.

There's really no better way to compare how these offerings really work. You can look at their websites and get a list of features, but until you see them in action there's no way of knowing how well they work. And the best part is you don't have to take our word for it, you can test it yourself. Each of these products offer free imports, and you can see how they work without buying a tax report (just like we did). We even give you the input testing data, so you can see these results for yourself.

Introduction

If you're reading this you are no-doubt in a country that requires you to declare your crypto assets and show the gains or losses from trading those assets. If you are an investor or trader then you are in the right place deciding on the best tool for tracking and reporting your activities.

The great thing is that there are a few options available to you in the marketplace for making this process easier. From popular choices like Koinly, Blockpit, ZenLedger, CryptoTaxCalculator and CHAINOMETRY. CHAINOMETRY is the new kid on the block but not new in terms of development, in-fact development started in 2017 making it one of the early starters in the crypto space.

So where do you start? All crypto software is designed to track your balances and movements and will gather data from one or more places. For example, if you trade on Binance then the software will be configured to capture Binance data such as trade, deposit and withdrawal transactions and download them to the software's database. There are two main ways of doing this:

  1. Using files you have downloaded directly from the exchange (e.g. Binance) that you have saved on your computer and then uploaded to the crypto tax software.
  2. A direct connection to the exchange using the Exchange's API and your API Keys which allows access to your particular data

Cost Basis, Cost Basis, Cost Basis

Above all else, the number #1 concern of any crypto tax software is cost basis or in other words, how much did you pay for your asset that you just sold.

Without proper attention to cost basis, everything will fall apart. No matter how many bells, whistles, or features the software has, if it doesn't work out exactly how much you paid for something, the end result will be wrong.

I know what you're thinking; 1. Isn't that obvious and 2. It can't be that hard, right?

Cost basis is easy when you're buying stocks, a car or a house. You bought it at a fixed currency and when you sell it, you most likely will use the same currency. Other than that, you wouldn't trade it for something else (without first selling it) and you generally don't move it around like you can with crypto from one wallet to another (in the case of an exchange, you move it out of the exchange and on to your private wallet).

Cost Basis

You do all of that and much more with crypto, in-fact, that is its greatest gift. You can stake it and earn interest, put it on DEFI protocol where you earn rewards for collateral, and you can buy something else with it like an NFT. None of this is done with stocks, houses, cars or other assets that earn a capital gain or loss.

What makes cost basis difficult to track with crypto?

  1. Often, you gather it over time and each time you add to your collection it is purchased at different prices, thereby changing it's cost basis. When you move it from one place to a new place such as from an exchange to a wallet, the wallet balance doesn't include all the history of all the purchases made. Unless this data is captured and recorded against the deposit then you are in no man's land when it comes to cost basis.
  2. It doesn't need to be sold with the same currency that was used to purchase it. Buying Bitcoin with USD and then trading your Bitcoin for Ethereum? Great, but you've just bought an asset with another asset. In other words, You purchased it in one currency and then traded it for another currency. The original currency, USD, was not used at all in the second transaction.

    The tax software needs to recognise that there was a gain or loss realisation in second transaction. You have effectively sold it at the time of purchase and this 'sale' needs to be recorded. What looks like a single buy, is effectively two transactions, sell and a buy.

  3. It's cost must always be valued in relation to a fiat currency to determine gains and losses. The challenge here is that many cryptocurrencies are traded in limited fiat pairs, for example you will find it easy to trade Dogecoin with USD or USDT but will not find many exchanges trading it for AUD or NZD or even GBP.

    It gets even more difficult with less popular coins not in the top 100. You may find that you can easily transfer some Binance Coin (BNB) for your meme coin PEPE but BNB does not convert directly to your currency. At the time of writing, Binance BNB can be traded against US currencies, Turkish Lira, Brazilian Real, Euro, Japanese Yen and Ukrainian dollar. In this case, if you don't belong to a country that uses one of these currencies, you will need a two-step process for valuing your purchase of PEPE in Binance Coin; first, BNB to USD and then USD to your currency.

Cost basis calculation on multiple crypto accounts.

This is a complex subject and is out of the scope of this article. We will provide a summary here as it applies to comparing crypto tax software, but for more information see this excellent article published by Miles Fuller from TaxBit: FIFO or Specific Identification: Choosing the Best Way to Calculate Cost Basis on Crypto

If you trade on multiple exchanges; a good idea if you want to reduce your risk of an exchange running away with your assets (damn you FTX!), how do you work out your cost basis for the same asset purchased on different exchanges?

One method is to pool all the transactions together, regardless of the exchange, into one single ledger (single ledger method). When you sell an item it uses the cost basis from any exchange based on the inventory valuation method (FIFO, HIFO, LIFO etc.). For example, using this method you could have bought Bitcoin on both the Kraken and Coinbase exchanges. Even though you eventually sell your Kraken bitcoin on Kraken it will use the cost on the purchase from Coinbase if it was purchased there first (when using the first-in-first-out method of accounting).

Harder for you, easier for the crypto tax software (Single Ledger Method).

This method makes life much easier for the crypto tax calculator because it just uses its own ledger and history (not a specific exchange) to determine which asset should be used to determine the cost when selling.

But it makes your life harder:

  1. You can't be sure of the cost of the asset until you sell it. This is because the cost basis for an asset is determined on the sale transaction where it can query purchases from all exchanges in the system.

    Say you are trading your bitcoin on the Kraken exchange, Kraken is showing you on their trading platform that you are up by 10%, and you think it's a good time to sell. But when you sell, you notice that you've made a loss as reported by your crypto tax software. What happened? Kraken was showing your profit based on the purchase you made on the Kraken exchange 2 months ago but your tax software was using the purchase you made on Coinbase 10 months ago.

    This is pretty hard to figure out while you are trading on Kraken and furthermore, you most likely will only realise this on your crypto tax software after you sell. This makes controlling your financial position harder (especially tax-loss harvesting).

  2. When it comes to auditing and reconciling data between the crypto tax software and the exchange, it's virtually impossible to accomplish. You can't compare the profits/losses from the exchange with the profits/losses from the tax software because the cost basis most likely used on the exchange will not be the same as the cost basis used on the tax software given that the tax software will use the cost basis from any exchange you hold in their system.
  3. If your exchange provides tax statements and forms like Form 1099 you will not be able to use these as they will conflict with the results you get from the crtypo tax software. Miles Fuller suggests using a 'by-exchange' approach for this reason:
    You can weigh your options, but if the exchange issued a Form 1099 to you, then it probably used a by-exchange approach. The same approach is likely easiest when completing your personal tax forms and could also reduce the chance of an audit because your return will match the information that the exchange provided to the IRS.
  4. You lose the ability to assess how well you traded (profits) on each exchange including sub accounts. If you use different trading strategies on different exchanges or sub accounts and you want to compare profitability based on exchange, this is not an option.
  5. It's much harder to troubleshoot missing data. In this case, the double entry accounting system requires that a previous balance of an asset is available before it is sold. If there is missing data (for example, a missing record relating to an airdrop, where free crypto was deposited to your account and later sold), it makes it difficult to locate the exchange where the missing data is expected. If you are using the by-exchange method, you can easily see where the hole is as you are only processing records from this exchange.
  6. You can't specify cost basis on your deposits

    If you look at transaction editing and compare CHAINOMETRY with the other services you will notice that CHAINOMETRY gives you the ability to specify the cost basis on a deposit. Why is this important?

    Crypto is different from other assets in that you may (and very often do) received deposits to your wallet that did not come from a purchase, or you did not transfer yourself. A common example is staking rewards but other examples include gifts and airdrops.

    When this happens while using a 'Single-Ledger' type crypto tax service, you are obligated to add a manual purchase transaction with the same quantity and a zero cost basis (as you did not pay for it). If you can specify the cost basis on your deposit you only need to set the deposit cost to zero and furthermore if, the crypto tax software recognises the type of transaction as one that qualifies (such as a staking reward) it will automatically add a zero cost basis to that deposit so you don't have to. This makes it clean and simple to track the costs and profits of these transactions.

    It is also possible for the 'Single-Ledger' type crypto tax service to automatically add this zero-cost purchase transaction, but we found no evidence that his was happening with any of the services we tested. For auditing purposes we feel this should always be done.

The IRS and other jurisdictions allow for both the pooling of transactions from all exchanges (single ledger method above) and separate, isolated calculations for each exchange or wallet. This also leads to another, more powerful, inventory valuation system called 'Specific Identification'.

How does this relate to testing Top Crypto Tax Software?

It is important to understand these differences because crypto tax calculators will use two general methods of calculating cost basis when it comes to multiple exchanges. Either they pool all transactions together from all exchanges (single ledger method) or prepare separate calculations for each exchange or wallet (by-exchange method).

Easier for you, harder for the crypto tax software (By-Exchange Method).

The second method makes life much harder for the crypto tax software for one major reason: when transferring your crypto (such as moving it to your own wallet) it must carry with it all the relevant transactions that make up the cost basis of the transfer. For example say you purchased many lots of Bitcoin on Kraken over a year at different costs, all of this information needs to be recorded when the asset is moved around (and it can move many times from account to account). When the asset is finally sold, it must use this cost basis information and apply the correct inventory valuation system (FIFO, LIFO etc) to the sale.

Adding this power to the system is hard, yes, but the benefits make it worthwhile:

  1. You can see all the details of the cost basis of an asset before you sell it, this includes assets that have been transferred from one place to another.
  2. You can audit and reconcile crypto tax software reports with exchange reports.
  3. You can use your exchange's tax statements and forms like Form 1099 and, where other exchanges don't have these reports, you can use the crpto tax software reports.
  4. You can assess how well you traded on each exchange.
  5. It's much easier to troubleshoot missing data. Data errors are reported per exchange and you can investigate the issue at the right spot.
  6. You can hold off on sales of assets in a particular account to take advantage of long term capital gains tax.
  7. In jurisdictions that support it you can apply a different inventory valuation system (FIFI, LIFO etc.) on different accounts to minimise tax.
  8. You can specify cost basis on your deposits so that you have control over how your crypto is used when calculating sales. This gives you the ability to automatically flag gifts, airdrops and staking rewards and set a cost basis of zero. Otherwise, you will need to add a purchase record with a zero cost basis value.

The major drawbacks of this method:

  1. If transfers between accounts (withdrawal and deposits) get missed, the cost basis information will also be missed.
  2. It may not be supported in your jurisdiction.
Methods used by the top crypto tax software reviewed here.

CHAINOMETRY always uses the 'by-exchange' method of calculating cost basis whereas Koinly and CryptoTaxCalculator have options to switch between the two depending on your preference. Given the use of different systems, the two tests that relate to this feature specifically (tests 2 & 3) were not compared 'head-to-head' with the other software that does not support the 'by-exchange' method.

Both methods of deriving cost basis are valid, and it's up to you which you find more convenient for your purposes. Also consult your tax agent for the preferred method of your country.

Top Crypto Tax Software

Top Crypto Tax Software

Let's evaluate some popular Crypto Tax Calculators not it terms of their advertised features but in terms of how well they perform. We look at Koinly, CryptoTaxCalculator Blockpit, Zenledger and yours Truly CHAINOMETRY.

How we tested

In light of getting the #1 feature right, we looked at the ability for the software to accurately determine the cost basis which would in-turn reflect how well profits or losses were calculated. These tests were concentrated around wallet imports and moving your funds from an exchange to a wallet, which is something we frequently do. This needs special attention and you can find out more details about it here.

From there we looked at three other categories;

  1. Exchange imports and their ability to connect to the exchange and gather all the transactions; this was simply a transaction count returned from the import.
  2. Wallet imports and features relating to different types of transfers and transactions e.g. staking rewards and NFTs
  3. General features, ones that make life easier.

Each test contains a challenge that has a pre-calculated outcome. For example, testing the number of transactions imported from an exchange like Binance. For this test we downloaded all the transactions from the exchange in csv files and counted all the transactions.

A challenge result can have a full pass, partial pass or a fail depending on the outcome of the test. A partial pass is one that shows the correct data but is incomplete. Each result is highlighted on the table under the column with the exchange name.

N.B: If you click on a row on the testing table it will expand to show more details of the results and any screenshots supporting the evidence for the test. In many cases this can guide you when you do your own testing to verify the results. For example, you can plug in the same wallet address and verify the returned data on the exchange you are testing. Another way would be using your own wallet address and test that across the services. This can be a good approach because you know your wallet better than anyone else, and you can confirm whether the transactions look right.

Cost Basis Features

Analysis and results of the crpto tax software's ability to accurately determine the cost basis of various transaction tests.
Test Network Challenge
CHAINOMETRY CHAINOMETRY
Koinly Koinly
Crypto Tax Calculator CryptoTaxCalc
Blockpit Blockpit
Zenledger Zenledger
1
Network
All
Basic Cost Basis Calculation pass pass pass fail fail
2
Network
Cardano
Network
Ethereum
Cost Basis On Transfer Between Accounts (By-Exchange method) pass pass pass n/a n/a
3
Network
Cardano
Network
Ethereum
Full Calculation of Cost Basis on Withdrawals (By-Exchange method) pass unknown unknown n/a n/a
4
All
Calculates cost basis on transfer fees pass fail pass fail fail
5
Network
All
Price conversion accuracy; minute-to-minute price look-ups pass fail pass pass pass

Wallet Import Features

Analysis and results of various wallet importing scenarios including, Staking Rewards, NFTs, DEX Transactions, and related Tokens and Addresses.
Test Network Challenge
CHAINOMETRY CHAINOMETRY
Koinly Koinly
Crypto Tax Calculator CryptoTaxCalc
Blockpit Blockpit
Zenledger Zenledger
6
Network
Cardano
Finds Related Crypto Addresses (ADA) pass fail pass fail fail
7
Network
Cardano
Finds Staking Rewards (ADA) pass partial partial fail fail
8
Network
Ethereum
Finds Related Tokens pass pass pass pass pass
9
Network
Ethereum
Finds NFT Transactions pass pass fail pass pass
10
Network
Ethereum
Finds NFT Picture fail pass fail pass fail
11
Network
Ethereum
Finds NFT Price pass fail fail pass fail
12
Network
Ethereum
Finds NFT Name pass fail fail fail fail
13
Network
Ethereum
Finds Liquidity Pool Transactions (DEX) pass pass pass pass pass
14
Network
Ethereum
Finds Liquidity Pool Interest Earned pass pass pass pass unknown

Exchange Imports

Analysis and results of how the crypto tax software performs when importing data from crypto exchanges.
Test Exchange Challenge
CHAINOMETRY CHAINOMETRY
Koinly Koinly
Crypto Tax Calculator CryptoTaxCalc
Blockpit Blockpit
Zenledger Zenledger
15
Network
Binance
API import finds all transactions (expected from CSV files: 10,302) pass
(10,438)
fail
(4,389)
fail
(4,365)
pass
(10,467)
pass
(10,304)
16
Network
Bitfinex
API import finds all transactions (expected from CSV files: 6,653) pass
(6,632)
pass
(7,465)
fail
(14,130)
pass
(6,752)
fail
(0)
17
Network
Coinbase Pro
API import finds all transactions (expected from CSV files: 3,802) pass
(3,796)
fail
(8)
fail
(8)
pass
(3,797)
fail
(0)

Conclusions and Thoughts

As far as we know this is the first comprehensive test of available software that uses real world testing to determine how it performs. There are many more tests across many other wallets, tokens and exchanges that need to be done to get a better picture of their capabilities.

Cost Basis

Several of the crypto tax software tested got simple cost basis calculations wrong. From working out the correct realisation on buy transactions to calculating the correct application of fees. This is the 'bread-and-butter' of crypto tax software and all packages should have passed these easy tests with flying colors.

In general the software provided excellent viewing abilities on their transaction list which showed powerful user interface capabilities and a clear list of transactional related data and their tax implications. For those that were able to accurately calculate the capital gains, your preference will come down to which user interface suits you best and which gives you the data you need.

Given the benefits of using the more difficult 'by-exchange' method of cost basis calculation, our preference is to use one of the services that offer this option; Koinly, CryptoTaxCalculator and CHAINOMETRY are all good options here.

  1. Track the transfer of your asset from an exchange to a wallet or from one wallet to another wallet.
  2. Record all the transactions, their time and unit cost, that make up the cost basis of the transfer and apply this to the accounts inventory valuation system (FiFO, LIFO, HIFO etc.) when the sale finally happens.

If you come across another crypto tax software that uses the 'by-exchange' method of cost basis calculation, make sure these features are supported before taking the plunge.

The key here is that without such capabilities moving funds from an exchange to your wallet will almost definitely result in a miscalculation of the cost basis when selling the asset. You will either pay too much tax or not enough tax, one resulting in a lighter wallet the other resulting in fines or worse.

The alternative here is to do this manually. You will need to be diligent with your withdrawals, making sure that you record each purchase that make up the value of the withdrawal, sum the total amount of funds used, sum the total units and then divide the total amount by your total units. This will give you a new unit price based on the total outlay by the total units (unit value).

This is a major pain. But the next problem is that none of the tax calculator software except CHAINOMETRY allows you to record this unit value against the deposit when you eventually transfer these funds back to the exchange. So even if you recorded it manually it still wouldn't help you arrive at the correct profit or loss on your transaction.

Wallet Import Features

Setting aside cost basis, all products were able to find staking rewards, NFTs and related tokens on the Ethereum networks. More work needs to be done on the Cardano network to find related addresses on the wallet as, by default, many Cardano wallets use a different address for each transaction. Without automatically finding these addresses you will need to add them one-by-one manually.

Exchange Import Features

This category also showed mixed results. Many of the software were either not able to download all the transactions or, for some reason, downloaded double the number of expected transactions.

Final Thoughts

Before deciding on the crypto tax software of your choice, we suggest that you put it through its paces with some simple tests to make sure it can perform as required (we suggest using the tests this guide as a starting point). After all, we are talking about your financial outlay and government tax compliance, so it is pretty important that you get it right. Not only that, it can result in serious consequences if you get it wrong, and that's what the crypto tax software is here to stop.

Yes, we are biased, but we were only able to get here by fairly testing all software using equal measures to arrive at our conclusion. The best crypto tax software evaluated here is CHAINOMETRY, not only did it pass almost all tests, but it did so with flying colors. Blockpit is also a worthy contender in this space and showed great results over most tests particularly importing transactions via API.

A Great Offer

If you are keen to move to CHAINOMETRY and if you have purchased any other crypto tax software, we will give you a free credit on your CHAINOMETRY account with the same number of transactions you purchased. This way, you can try our product for free and compare it with the one you purchased without risk. You can't get fairer than that.

An Even Better Offer

We will not be beaten on price. If you find a cheaper crypto tax calculator we will beat it by 25%, guaranteed.

CHAINOMETRY CHAINOMETRY: Other Features and Talents

If you found the results as interesting as we did, here are some of CHAINOMETRY's other features that should catch your attention.
Features
Best in class Analytics

Unparalleled visual representation of your trading performance and asset balances using superb graphs. Analytics, portfolio tracking, exchange performance and What-If analysis.

What is What-If Analysis in CHAINOMETRY? We place every dollar you traded on your choice of three distinct assets or classes - Bitcoin, Gold and Nasdaq to find out if you would have done better just buying one of these. Just press a button to see how your trades compare with one of these options on a beautiful graph.

NFT Support

Great support for NFTs on the following wallets:

Bitcoin Bitcoin
Ethereum Ethereum
BNB BNB
Arbitrum Arbitrum
Solana Solana
Blast Blast
Polygon Polygon
Cronos Cronos
Avalanche Avalanche
Viction Viction
Fantom Fantom
Toncoin Toncoin
ZKsync ZKsync
Sei Sei
PlatON Network PlatON Network
Optimism Optimism
Starknet Starknet
Aptos Aptos
Mantle Mantle
Moonbeam Moonbeam
Inventory Valuation Options
  1. Average Cost
  2. First In, First Out (FIFO)
  3. Highest In, First Out (HIFO)
  1. Last In, First Out (LIFO)
  2. Lowest In, First Out (LOFO)
  3. Shared Pool
FREE Tax Loss Harvesting Report

Get a detailed report of all best candidates on each exchange that you can use to realise losses. Done by exchange so that you can be sure you are harvesting correctly.

Business Packages

Need to manage different entities? Personal, businesses, trust and super accounts? No problem, easily migrate to a business customer and control all your entities from one login. And the best part? You get extra saving on plans.

De-duplication

All data is sanitised and checked to make sure duplicates are avoided. No duplicate file imports, never import an API or Wallet transaction twice.

Double Entry Accounting & Missing Transactions Tracker

Easily find missing transactions and correct them with one click.

Get your crypto tax report now!
SIMPLE, FASTER, SMARTER
No Credit Card Required