When calculating your crypto taxes with TokenTax, the most important part of the process is importing every cryptocurrency transaction you’ve made.
Even if you’re only calculating a single year of taxes, you need to upload your entire trading history, for all years, in order to have accurate crypto tax calculations.
In this guide, we outline exactly how to import your full transaction history into TokenTax, to ensure accurate crypto tax calculations, including:
Your cryptocurrency exchange trade history
Wallets (only needed for DeFi or mining / staking wallets, not storage wallets)
ICO purchases or OTC trades
Crypto you spent on goods / services
Staking or mining
This guide also explains various aspects of handling data in TokenTax, such as:
Removing data imports or individual transactions
Changing transaction types, i.e. setting a deposit as income
For returning clients, please make sure your previous years are unlocked before importing new historical data. If locked, no data will import for a locked year or the years prior. You may go to you Settings>Tax Details in order to check or update this. Please keep in mind that unlocking a previous year may change the numbers on that year's, or prior years', dashboard and tax report. This action may not be reversible.
Importing your transaction history from exchanges
TokenTax supports every exchange. For the most popular exchanges, like Coinbase and Binance, you can import automatically with an API connection.
For all exchanges, you can upload a CSV — a transaction history spreadsheet — to import to TokenTax.
You can see specific instructions to get your API key or CSV file from your exchange either in the TokenTax app.
How to import a wallet
You can import transactions to/from a wallet address into TokenTax. For tax purposes, a wallet connection is only necessary for taxable transactions like spending and mining income.
If you only used a wallet for storage, then you don’t need to add it to TokenTax.
To import a wallet, go to the API import page and scroll down to the wallets section. Click your preferred currency and enter your wallet information to import transactions.
Resyncing, Editing, and Deleting an API or wallet integration
You can resync, edit, or delete an API or wallet on your All Imports page. Each API/wallet will have three icons in the righthand side of the row.
To resync an API or wallet, click the first icon that appears in the righthand side of the row for that particular integration:
This will resync your API or wallet to pull any new transactions that occurred since your last sync/resync. Wallets and APIs need to be resynced from time to time - they will not pull your data automatically for new transactions after just the first sync. Please note that anytime you resync a wallet or API, deleted transactions will reappear, but edits will persist.
To edit an API or wallet, click the second icon that appears in the righthand side of the row for that particular integration:
This will pull up the Edit Integration page where you can perform various edits to the API or wallet - your options will vary depending on the integration. You can resync from this page as well. This page will also have instructions for properly importing data for that particular wallet or exchange, in case you have run into issues with the process. You can also make use of the Advanced Options button to edit the transaction start date or name the API or wallet. This is useful if you have multiple accounts or wallets with the same platform and need to be able to differentiate.
To delete an API or wallet, click the third icon that appears in the righthand side of the row for that particular integration. This icon will actually appear in rows for CSVs and manual imports as well - it is available to use to delete any import:
***IMPORTANT NOTE: deleting synced data will completely remove any transactions from that particular import. This includes any manual edits you may have done to the transactions while in the software - this should especially be kept in mind if you need to delete and re-add a DeFi wallet with transactions that required several manual edits.
What it means if your CSV is “In Review”
If your file upload went into “in review,” and it shows with a yellow dot in your import data screen, that means that our system doesn't automatically support the file yet.
Unlike other services where you may need to format the CSV / spreadsheet to a template, we take care of it ourselves.
How to import a CSV file
We handle your CSVs for you
Our team formats your file manually and uploads it to your account. This means that, if your exchange’s CSV file is not already supported, you don’t need to worry about filling the data into a spreadsheet template.
If you uploaded the wrong CSV and thus it went into review, feel free to contact our support team so that we can remove the CSV from the review queue.
***IMPORTANT NOTE: this service applies to CSVs from centralized exchanges. If you interacted with any unsupported DeFi platforms and have transactions that will not be pulled in a wallet import, you will need to import those transactions by filling in our manual CSV spreadsheet template and uploading that into TokenTax. If it's just a few transactions, you may enter them on the manual entry tab.
Be sure to check our CSV instructions
If you uploaded a CSV from a common exchange like Coinbase or Kraken and it went into review, chances are that you just uploaded the wrong type of CSV and the right one will be automatically accepted. Be sure to check your exchange’s CSV upload instructions.
How to import ICO and OTC trades
If you purchased coins via an ICO, presale, OTC service, or any other off-exchange transaction, then these are taxable events that you will need to manually import into our platform. We’ve made it easier to import trades with the manual entry screen, or you can also fill out and upload via our spreadsheet template if you have many transactions.
For these transactions, you will use the “trade” type.
For buy amount and buy currency fields, enter the crypto that you purchased.
In the sell amount and sell currency fields, enter in what you paid for the asset, whether it was ETH, BTC, or USD.
It’s important that, if you paid in crypto, you enter in the correct amount of crypto paid so as to reconcile your crypto balances history correctly. The fee fields can be left blank, unless you paid a fee, and for exchange, you can put in whatever helps you identify the transaction most (many users opt for “ICO” or OTC”).
Here's an example of what the transaction should look like for fictional token EXMPL bought with ETH:
How to account for ICOs where you received the tokens later
Your holding period begins once you have possession of an asset. If you participated in an ICO and received the tokens later, you can accurately represent this series of events.
First, put in a “spend” type transaction of the crypto paid, with just the crypto amount and currency in the sell fields, on the date that you sent the crypto in to the ICO.
Next, add in a “trade” type transaction with the amount of tokens you later received in the buy fields and the USD equivalent amount in the sell fields, with the date received in the date field.
This will establish when you received the tokens as well as the cost basis for those tokens. You can look at the USD amounts in the buy amount column of the initial “spend” transaction in your All Transactions page to find what the USD equivalent paid for the asset was.
Here's an example of said transaction, again using fictional token EXMPL bought with ETH:
In short, you’re telling our system that you A. disposed of the coin used to pay for the ICO at an earlier date and B. received at a later date the tokens, with a cost basis of that coin spent.
How to Import Mining or Staking
Crypto mining and DeFi staking are considered taxable income in the eyes of the IRS. Therefore, it must be reported and included in your crypto reconciliation. The quickest way to get staking transactions into TokenTax from CSVs is to copy and paste them into our template.
Importing a mining / staking wallet
If you are importing a wallet that was used for mining or staking, it may be advantageous to go about this in the reverse fashion. On the import page for the wallet, you can set all incoming transactions as income; then, you can sort by that wallet in All Transactions and set transactions that were actually deposits to “deposit.”
Importing mining / staking via spreadsheet
To place mining or staking transactions into our template for upload, do the following: Download the manual spreadsheet template.
Open the template. Each row represents a transaction. Here's how to fill out those rows. It's okay to leave unneeded columns blank.
Type: Use staking for staking transactions, mining for mining transactions, deposit or withdrawal for non-staking wallet movements (deposits / withdrawals are not usually required).
BuyAmount: The amount of tokens received in the staking/mining reward.
BuyCurrency: The currency of token received.
Exchange: The source of the transaction (could be any name such as XTZ staking, BTC mining, etc)
Date: When you received the staking or mining reward (formatted MM/DD/YY HH:MM)
Upload the template CSV via CSV upload in the Import Data screen.
Below, see the image of what your manual template spreadsheet should look like. In this case, it’s staking, but it would be the same for mining as well, but with the type column set to mining.
How to set imported transactions as mining, income, or spending
It's important to properly categorize any deposits / withdrawals that are actually income, mining, or spending crypto on goods or services. Income and spending have different tax implications compared to normal deposits and withdrawals between your own exchanges and wallets.
Let's say we have three withdrawals that synced into your account from Gemini. But you know all three of those withdrawals were actually sending crypto to pay for goods / services, so it's spending.
We want to set these transactions as spending. First, we check the boxes next to the transactions. Then, at the top of the table, click "Edit Transaction Type."
This screen lets you change what kind of transaction your deposits / withdrawals are, so you can make deposits income, or, in this example, make withdrawals into spends.
Et Voilà. Your withdrawals are now properly calculated as spends of crypto. Our platform automatically pulls the USD equivalent amounts of these spends, as you can see in the newly updated transactions.
Situations where you might change transactions
This is most useful for setting deposits as income or mining transactions and setting withdrawals to spend, lost, or stolen transactions. For example, you may know that a number of withdrawals on your Coinbase account were actually spends. Or maybe some deposits to a wallet were a payment received, so it should be income.
Uploading your income / spends manually
If you've been recording your spending / income / mining manually, or would otherwise prefer to upload the data manually or as a spreadsheet rather than to specify individual transactions, you may want to use our manual entry screen or manual CSV upload template instead.
In many cases, this will be easier if you know what your specific transactions are, rather than having to go through your deposit/withdrawal records as a whole.
Deleting individual transactions
Sometimes you may need to delete transactions from your account. It's easy to do so from the All Transactions page.
On your dashboard, click All Transactions at the top.
If need be, use the search bar to filter transactions, such as by a certain exchange.
Click the checkboxes next to the transactions you'd like to delete. Select the top left box to select all transactions on a page, at the top right selecting more rows at a time to display if you want to delete more.
Click Delete Selected at the top right of the table.
How to fix duplicate transactions
If you believe you’ve imported all data, but your numbers look off, you may have duplicate transactions. This can happen if you’ve uploaded the same data via CSV multiple times, or if you’ve uploaded both an API and a CSV connection for an exchange.
To identify duplicates, go to your All Transactions page, optionally filter by exchange, and then sort by buy quantity or sell quantity. If you see doubled up transactions, you may have duplicates.
The #1 best way to handle duplicate transactions is to delete all data imports for an exchange, and then re-add a single API or CSV.