Skip to main content
All CollectionsCrypto Specific GuidesComplex Crypto Tax Category
Initial Coin Offerings (ICOs), Initial DEX Offerings (IDOs) and Presales
Initial Coin Offerings (ICOs), Initial DEX Offerings (IDOs) and Presales

How to manage ICOs, IDOs and Presales within the Crypto Tax Calculator platform

David Melbourne avatar
Written by David Melbourne
Updated over 9 months ago

Initial Coin Offerings (ICOs), Initial DEX Offerings (IDOs) and Presales have become popular methods to bootstrap new projects by allowing investors to access the token before it is launched to market. This is similar to an Initial Public Offering (IPO) in the stock market when compared to traditional markets; however, there are some differences.

When we consider a trade of one token for another (as is the case for ICOs, IDOs or presale), most tax jurisdictions view the process as a disposal of the original token
(a ‘sell’) and a purchase (a ‘buy’) of the new token using the proceeds. For example, if you were to trade some ETH for USDC, this would consist of an ETH ‘sell’ and a USDC ‘buy’. The USDC would have the cost base equivalent to the value of the ETH sold to acquire the new asset. If I traded $1000 worth of ETH for 1000 USDC tokens, the cost base of the USDC would be $1000 (plus any fees paid for the transaction, depending on the tax jurisdiction). This would appear within the platform as similar to the image below;

For individuals who have participated in an ICO, IDO or Presale, the most common issue you will face is that the ‘sell’ and ‘buy’ transactions will not happen within a short timeframe. The ‘sell’ could potentially be months or years before the other asset is acquired into the wallet. This will leave an ‘outgoing’ transaction (the ‘sell’ component) by itself on the platform and potentially multiple ‘incoming’ transactions (the ‘buy’ component) when the ICO/IDO or presale tokens are received later. Due to the significant time difference between the two components, they will not automatically link within the app, and some manual intervention will be required. Each ICO/IDO/Presale is different, with some tokens released immediately, whereas others have complex vesting/unlock schedules which can make it very difficult for Crypto Tax Calculator to auto-categorize.

Note 🚨 - please keep in mind that the examples below are provided as general guidance on managing your ICO/IDO or presale -related transactions using Crypto Tax Calculator, and are not to be taken as direct tax advice. Please always speak with your accountant or local tax professional if unsure or have a more complex issue at hand.


Using the following ICO Example, three reconciliation methods will be shared for handling these types of transactions;

ICO Example

"Hi, I traded 0.2 ETH for 200 XYZ tokens in an upcoming ICO. I sent 0.2 ETH to an ICO address on April 1st, 2023. However, I didn't receive my tokens immediately. Instead, they were sent to my wallet in two batches of 100 XYZ tokens on May 1st, 2023 and June 1st, 2023.

On CTC, these have appeared as three separate transactions;

1) 1 x ‘Outgoing’ of 0.2 ETH to an ICO Address
2) 2 x ‘Incoming’ Transactions of 100 XYZ (On May 1st, 2023, and another on June 1st, 2023) both from the ICO Address

How should something like this be handled?"


Method 1️⃣ - Treating Acquisition Date/s as Buys + Sells

The first method will be exactly the same as Method 2 but is a guide for users who prefer to view their transactions as 'singular' rather than 'grouped'. With this method, you're treating each token unlock event as their own separate 'acquisitions'. This means you could treat each incoming token unlock (XYZ) as their own respective 'acquisition' by proportionally breaking up the total disposed amount (ETH). In other words, you would be telling Crypto Tax Calculator that you disposed of (sell) 0.1 ETH (0.2 ETH ÷ 2) and received (buy) 100 XYZ on May 1st, 2023 (again, repeated for June 1st, 2023). Please always discuss this option with an accountant before going ahead.

1) Initially, you would see something similar to the below image where you have an Outgoing Disposal Transaction (sent to an ICO address), along with a handful of Incoming Acquisition Transactions (coming from the ICO address into your wallet). You want to categorise the disposal as a SELL and the incoming ICO tokens as BUY;

Sending/Disposing 0.2 ETH to the ICO Address (Sell)
100 XYZ Tokens Sent to Own Wallet from ICO Address (Buy)

100 XYZ Tokens Sent to Own Wallet from ICO Address (Buy)


2) As we are proportionally breaking up the total disposed amount (ETH) to work out the value for these ICO tokens, you would divide the total disposed amount ÷ amount of incoming token unlocks. In this case, it would be the value of $548.53 ÷ 2 token unlocks to give the value of $274.265 for each incoming token value. You can enter the value by clicking on the pink highlighted area to bring up the editing table;


3) For record-keeping purposes, it may be nice to throw in a small note within the transaction along the lines of "100 XYZ Tokens Received 1 of 2" (notes left on transactions will be displayed on your final reports for easy reference/tracking);


Method 2️⃣ - Treating Acquisition Date/s as Trades

The second method is exactly the same as Method 1, however is a guide for users who would prefer to see their transactions as grouped 'trades'. This means you could treat each incoming token unlock (XYZ) as their own respective 'trade' by proportionally breaking up the total disposed amount (ETH). In other words, you would be telling Crypto Tax Calculator that you disposed of 0.1 ETH (0.2 ETH ÷ 2) and received 100 XYZ on May 1st, 2023 (repeated for June 1st, 2023). Again, please always discuss this option with an accountant before going ahead.

1) Same with Method 1, you would see something similar to the below image where you have an Outgoing Disposal Transaction (sent to an ICO address), along with a handful of Incoming Acquisition Transactions (coming from the ICO address into your wallet);

Sending/Disposing 0.2 ETH to the ICO Address
100 XYZ Tokens Sent to Own Wallet from ICO Address

100 XYZ Tokens Sent to Own Wallet from ICO Address


2) Again, you would navigate to your 'Transactions' tab and select the ‘+ Add Transaction’ feature. You would then select ‘Trade’ > then 'Next' in the first step;


3) Make sure you fill in all fields - as you're disposing of a proportion of the total disposed of amount (in this case, 0.2 ETH total ÷ 2 incoming token unlocks);

- Enter the Timestamp in YYYY-MM-DD HH:MM:SS format
- Enter Sell Currency + Amount as ETH and 0.1
- Enter Buy Currency + Amount as XYZ and 100

You would repeat this process for all other token unlocks;

4) You will then come across the 'Exchange' name - in which this case, you would enter the ICO address/contract where the trade took place;

5) If you encountered any fees, then you would select the currency in which the fee was taken, along with the amount;

6) Again, for record-keeping purposes, it may be nice to throw in a small note within the transaction along the lines of "100 XYZ Tokens Received 1 of 2" (notes left on transactions will be displayed on your final reports for easy reference/tracking);

7) Finally, don't forget to categorize the singular outgoing (disposal) transaction, along with the individual incoming token transactions, as 'ignore' to ensure the balance of the ICO tokens doesn't increase. Once done, this would look similar to the image below, leaving you with 2 x 'Trade' transactions, treating it so that each token unlock is their own 'trade' by proportionally breaking up the total disposed amount;


Method 3️⃣ - Treating Disposal Date as Single Trade

The final method treats the initial ‘sell’ of the disposed asset (0.2 ETH) used to participate in the ICO/IDO, as the time when the purchased tokens were beneficially owned from this point onwards. In other words, you're telling Crypto Tax Calculator that you purchased 200 XYZ tokens with 0.2 ETH on April 1st, 2023. This means that those incoming token transactions being transferred to your wallet at later dates could be categorized as 'ignore' to keep the balance from increasing. Again, please always discuss this option with an accountant before going ahead.

1) Again, you would see something similar to the below image where you have an Outgoing Disposal Transaction (sent to an ICO address), along with a handful of Incoming Acquisition Transactions (coming from the ICO address into your wallet);

Sending/Disposing 0.2 ETH to the ICO Address
100 XYZ Tokens Sent to Own Wallet from ICO Address

100 XYZ Tokens Sent to Own Wallet from ICO Address

2) Firstly, navigate to your 'Transactions' tab and select the ‘+ Add Transaction’ feature. You would then select ‘Trade’ > then 'Next' in the first step;

3) Make sure you fill in all fields - as you're disposing of 0.2 ETH to acquire 200 XYZ tokens on April 1st, 2023;

- Enter the Timestamp in YYYY-MM-DD HH:MM:SS format
- Enter Sell Currency + Amount as ETH and 0.2
- Enter Buy Currency + Amount as XYZ and 200

4) You will then come across the 'Exchange' name - in which this case you would enter the ICO address/contract where the trade took place;

5) If you encounter any fees, then you would select the currency in which the fee was taken, along with the amount;

6) Finally, don't forget to categorize the singular outgoing (disposal) transaction, along with the individual incoming token transactions as 'ignore' to ensure the balance of the ICO tokens doesn't increase. Once done, this would look similar to the image below, leaving you with a singular 'Trade' transaction treating it as the time when the purchased tokens were beneficially owned from this point onwards;


Still Need Further Support?

As always, if you encounter any further troubles, please don't hesitate to reach out In-App via the chat box found at the bottom right of your screen to chat with our support specialists 😊







Did this answer your question?