Buying tokens with delayed delivery (receipt of acquired assets) isn't uncommon in crypto. These types of transactions are usually called:
ICO (Initial Coin Offering)
IEO (Initial exchange Offering)
IDO (Initial DEX Offering)
Token presale, or fair launch
The general timeframe of such transactions is always similar:
↗️ Withdrawal of pledged tokens
You send your crypto (ETH, USDC, etc.) to a contract or custodianAt this point, you are usually promised a specific amount of presale tokens for your assets, e.g. "You will receive 500 $LIFE tokens for your 1 ETH")
⏳ Time passes
↘️ Deposit of presale tokens
You receive a previously agreed amount of presale tokens in your wallet
Accounting for time-delayed trades like that may be tricky as there's no way to "link" transactions that are days (often months) apart. This article provides steps on how to adjust such transactions to properly record the cost basis and capital gains.
Valuation of presale tokens
There are two ways of deciding what is the value of your presake tokens once you receive them and, in turn, what gain/loss you incurred by participating in this presale:
Presale tokens are worth as much as pledged tokens on the day they were sent
Presale tokens are worth as much as their market value on the day of receipt
The first approach seem to be more common, so this is the one we describe in more detail below.
Adjusting presale transactions
While you cannot "link" presale transactions in Koinly, you can easily ensure that the worth of the two transactions match and, by doing so, you effectively turn them into a trade.
🔍 Note the value of pledged tokens on the participation day
Find the transaction where you sent your pledged tokens
Note/copy the worth (market value) of this transaction
Adjust if you believe the worth set by Koinly is wrong
Depending on the cost basis of pledged tokens, Koinly may calculate a capital gain (or a loss) here
📝 Set this value as the worth of presale tokens on the day of receipt
Find the transaction where presale tokens were deposited to your wallet
Presale tokens will often be missing the price completely on this day (will show "Market prices for XYZ are missing" error)
Set the worth of those tokens to match the worth of pledged tokens
This will establish the cost basis of received tokens
📌 Example: XPL presale
You participate in XPL presale by sending 5k USDT on Jul 17th 1st 2025
You receive your XPL tokens on Sept 25th 2025
You sell XPL tokens on the same day for 20.5k USDT0
Status after importing
Without any adjustments, Koinly assumes the worth of $XPL tokens received is the same as their market value on the day. Because of that, when you sell the tokens right away, there is no gain/loss calculated.
Adjustments
🔍 Note the value of pledged tokens on the participation day
5k USDT worth 5k USD
📝 Set this value as the worth of presale tokens on the day of receipt
Change worth of deposited XPL to 5k USD - same as worth of pledged tokens
Status after adjustments
After matching the value of pledged and presale tokens, Koinly now calculates a gain when selling XPL tokens:
Common issues and questions
Which presale token valuation method should I use?
Which presale token valuation method should I use?
There's no clear guideline to say whether one method is better than the other. If in doubt, please confirm it with your tax advisor.
What if my tokens were vested?
What if my tokens were vested?
If your tokens were vested, you need to distribute the worth of pledged tokens proportionally between the deposits of vested tokens.
Continuing the example above - if the tokens were distributed in 4 equal tranches instead of one, you would assign the worth of $1250 (5000 / 4 =1250) to each:
I received a refund instead of tokens
I received a refund instead of tokens
If the presale didn't go through and you were refunded:
Find the participation transaction (withdrawal of pledged assets)
Tag it as "Add to Pool"
Find the refund transaction (deposit of pledged assets)
Tag it as "Remove from Pool"
Using the pool tags turns those transactions into non-taxable, so you receive the same tokens with the same cost basis as you pledged, and no capital gains are calculated at any point.
I never received anything back
I never received anything back
If you sent out your pledged tokens but never received any presale tokens nor got your pledged tokens refunded, you may be able to treat it as a loss. You'll need to confirm this with your tax advisor, as adjustments needed depend on when you can record such a loss:
Record a loss on the day you participated in the presale
Find the participation transaction (withdrawal of pledged assets)
Change the worth of the withdrawal to $0
Transaction will now calculate a capital loss equal to the cost basis of tokens pledged
Record a loss on a different day
Find the participation transaction (withdrawal of pledged assets)
Edit it and change it into an exchange for 100 NULL1 tokens
On a day you're supposed to record the loss, create a manual withdrawal of 100 NULL1 tokens
NULL1 doesn't have a market price, so it will be automatically assumed $0, calculating a capital loss equal to the cost basis
I got a receipt NFT for my pledged tokens
I got a receipt NFT for my pledged tokens
That actually makes it easier - merge the pledged tokens withdrawal with the NFT into a trade (Exchange), and then merge the withdrawal (burn) of the NFT with the deposit of the presale tokens. The latter may still need its worth (market value) set manually.
Mind that if the presale tokens were vested, you should probably ignore the NFT (even delete it) and follow the steps for vested tokens mentioned above instead.




