
An exchange records your sale of 0.7 ETH, but the history you imported into your tax calculator accounts for only 0.6 ETH. You know you had enough coins to make the sale. What you cannot find is the transaction that explains the difference.
The missing ETH might have been bought on another exchange years ago. It could have arrived as a staking reward, or the sale might have been imported twice. The warning looks similar in each case, but the fix is different.
An unexplained acquisition can also affect the cost basis used to calculate gains and losses. Rather than entering a purchase at a convenient market price, look for the point where your records stop accounting for the asset. Here is how to follow that trail and correct the history in cryptact.
Key Takeaways
- Missing cost basis is not proof that the crypto had no acquisition cost. The original purchase or receipt may simply be absent.
- A receiving exchange may know when coins arrived without knowing when or how much you paid for them.
- A successful CSV upload or API sync does not guarantee that older trades, conversions and rewards were included.
- Trade confirmations can establish acquisition details. Blockchain records can help connect transfers between accounts.
- cryptact excludes invalid transactions from P&L calculations, so an unresolved insufficient-position warning can affect the totals.
- Even after fixing a missing transaction, check the remaining holdings and later calculations for other discrepancies.
Table of contents |
No credit card required
What Missing Cost Basis Means
Cost basis generally refers to the acquisition cost attributed to an asset for calculation purposes. For an ordinary crypto purchase, this usually starts with the amount paid, along with any relevant fees or adjustments.
That information helps establish the result when the asset is later sold, swapped or otherwise disposed of.
For example, if you bought 1 ETH for 1,500 and later sold it for 2,200 in the same reporting currency, the difference would be 700, assuming there were no relevant fees or adjustments. However, if your imported transaction history only shows the sale, the software cannot account for the original purchase of 1,500.
Missing Cost Basis vs. Insufficient Position: What's the Difference?
Missing cost basis and an insufficient-position warning are related, but they do not always mean the same thing.
An insufficient-position warning means the imported history does not show enough cryptocurrency to support a recorded sale or disposal. For example, the software may show that you sold 0.7 ETH when only 0.6 ETH is accounted for. An earlier purchase, reward or other receipt could be missing.
A missing cost basis or price issue can occur even when the quantities match. The acquisition may already be recorded, but its purchase price or historical valuation is unavailable.
The first problem calls for tracing the missing acquisition or receipt. The second requires checking the original trade details, price data and supporting records. Sometimes both problems appear together.
Cost basis calculations also depend on how acquisition costs are assigned to the coins sold. Different methods may produce different results, and the rules governing their use are not the same everywhere.
cryptact's cost basis method guide explains the available settings. Here, we are concerned with a more immediate problem: finding the acquisition that is missing from the records.
Why Acquisition Records Disappear
The purchase happened somewhere else
Bitcoin bought on one exchange might pass through a hardware wallet before it is sold on another. The selling exchange can record the deposit and sale, but it generally does not know the price paid on the first platform.
Moving crypto between accounts under the same ownership does not create a new purchase price. The original acquisition record remains important, even if the coins changed wallets several times.
The download covers only part of the account
Spot trades, conversions, staking distributions, deposits and withdrawals may sit in different exchange reports.
An export from 2026 could show a sale of coins purchased in 2022 without including the older acquisition. Check the reporting period and transaction categories covered by the file.
If you have only imported one exchange, check whether the coins came from another account before trying to correct the missing cost.
For help collecting older files and bringing different account histories together, see our companion guide, How to Organise Crypto Exchange Records for Tax Reporting.
The API missed some activity
An API connection can work correctly without retrieving every transaction. The exchange may provide only recent trading history or leave certain activities out of its API records.
Check the exchange account itself if an older trade is missing from cryptact. Look for the original record and compare it with the imported history.
Also check for overlapping CSV and API imports. If the same sale appears twice, it may seem that more coins were sold than the account actually held.
The coins were received, not bought
Staking rewards, mining proceeds, gifts and crypto-to-crypto swaps can add to holdings. If a reward is absent from the ledger, a later disposal may appear to exceed the coins acquired.
You should not record every missing receipt as an ordinary purchase.
Suppose you received ETH from a staking programme but imported only your spot trades. Your account may show that you later sold the ETH, while the transaction history has no record of receiving it.
The missing entry should reflect the reward you received. Adding a purchase that never happened would give the wrong explanation for how those coins entered the account.
The information needed to value or report the reward depends on the relevant rules.
Finding and Recovering the Missing Transaction
Start with the earliest disposal that the recorded holdings cannot explain. Note the asset, quantity, date and source account. Then look at the activity that came before it.
A warning on a 2025 sale can begin with a missing transaction from 2021.
If the history shows more cryptocurrency sold than acquired, look through earlier purchases, rewards and other receipts. Also check whether the sale itself appears more than once.
For a deposit with no purchase details, go back to the sending account. The coins may have been sitting in another wallet long before they reached the exchange where they were sold.
A transaction that appears without a usable price is a different problem. Check the recorded trade details and historical pricing rather than adding another acquisition.
Find the original exchange record
Download the history covering the period when you acquired the asset. Check separate trading, conversion and rewards reports where the exchange offers them. Compare the downloaded transactions with what cryptact actually imported, including quantities and fees.
If the exchange has closed, look for confirmation emails, saved CSV files, old tax reports and portfolio spreadsheets.
A bank statement can tell you that 2,000 units of your reporting currency went to an exchange. It cannot, by itself, prove you bought that amount of Bitcoin. You might have made several trades or left some money unspent.
An email confirming the coin, quantity, execution date, price and fee offers stronger evidence. Keep the original file or email rather than copying its figures into a spreadsheet and discarding the source.
Check what happened after the purchase
A blockchain explorer can help connect an old acquisition to a later deposit or sale.
Compare transaction hashes, dates, quantities and addresses with exchange withdrawal and deposit records. If the quantities differ, check for a network fee or another transfer in between.
The blockchain can show that coins moved. It generally cannot reveal the fiat execution price of a trade inside a centralised exchange or prove that two addresses belong to the same owner.
Use the records together instead of treating a wallet deposit as a fresh purchase.
For a reconstructed acquisition, document its original date, transaction type, quantity, transaction value, reporting currency and relevant fees.
Worked Example: An Old ETH Purchase
An investor sells 0.7 ETH for 2,100 in April 2025. But the transaction history only shows a purchase of 0.6 ETH for 1,200 in August 2023. There is not enough ETH in the imported records to explain the sale.
The investor checks an older exchange account and finds an archived confirmation for another purchase. It shows that 0.4 ETH was bought for 600 in May 2022. Those coins were later transferred to a personal wallet, and the purchase never made it into the imported history.
The missing record is now accounted for. The history contains:
- May 2022: Purchased 0.4 ETH for 600.
- August 2023: Purchased 0.6 ETH for 1,200.
- April 2025: Sold 0.7 ETH for 2,100.
All values are in the same reporting currency. Assume there were no other relevant transactions or fees.
Using First In, First Out (FIFO) for this example, the sale draws on the earlier purchase first.
That accounts for 0.4 ETH with an acquisition cost of 600. The remaining 0.3 ETH comes from the August 2023 purchase and carries another 600 of acquisition cost.
The total cost attributed to the sale is 1,200. With proceeds of 2,100, the difference is 900 before other adjustments.
The investor still holds 0.3 ETH, with an acquisition cost of 600 under this example.
FIFO is only being used to show the calculation. The method that applies to an actual report depends on the user's circumstances and the relevant rules.
The main point is that the missing 2022 purchase explains both the quantity sold and its acquisition cost. The later wallet deposit did not create a new purchase price.
How to Fix Missing Acquisition Records in cryptact
cryptact flags a transaction as Insufficient position for sale when the recorded history does not contain enough of the asset for a disposal.
Invalid transactions are excluded from the P&L calculation, so a report with unresolved warnings may be incomplete.
On the Transactions screen, select the following filters in order:
Status > Invalid > Insufficient position for sale > Apply
Sort by TIMESTAMP and investigate the oldest warning first. One missing acquisition can cause later transactions to become invalid as well.
cryptact's insufficient-position troubleshooting guide explains how to identify these warnings and check the affected records.
Add the missing transaction
If the missing trade appears in an exchange file, import that history. For activity not covered by standard imports, cryptact supports manual transactions and custom files.
Record the event that actually occurred, whether it was a purchase, reward, swap or other receipt. Do not invent a buy just to remove a warning.
Use the Ledger Repair Wizard
The Ledger Repair Wizard is available through the following menu sequence:
Fix invalid transactions > Repair Wizard > Launch the Repair Wizard
It takes you through invalid entries chronologically.
Its option for an unknown date or purchase price should be used only as a last resort. cryptact warns that it produces an approximate P&L and may not be accepted by the relevant tax authority.
Recover the original acquisition evidence wherever possible before relying on an estimate.
Review transfers and missing prices
If the coins passed through several accounts, the optional Import asset transfers setting can show supported deposits and withdrawals alongside trades.
Enable it under Advanced settings and select Update. These transfers do not, by themselves, change the overall P&L or recover the original purchase price. Some older transfer records may require reimporting the relevant history according to cryptact's instructions.
A Price lookup unavailable warning needs a valuation review instead of a new acquisition.
Once the history has been corrected, check the cost basis method selected in cryptact against the requirements that apply to the account.
Checking the Result Before Tax Reporting
A warning disappearing is a useful sign, but the remaining holding should also make sense.
In the ETH example, the investor acquired 1 ETH and sold 0.7 ETH. Assuming there were no other transactions or fees affecting the quantity, 0.3 ETH should remain.
If the corrected balance shows something else, another entry may still need attention.
Compare the repaired purchase with its original evidence. Review duplicate entries, the reporting currency, fees and later disposals affected by the correction.
Keep a note explaining what you changed and why.
If the purchase cannot be recovered, a historical market chart is not necessarily proof of what you paid. Unknown cost basis should not automatically be treated as zero.
Preserve the evidence you have and seek advice from a qualified tax professional if the records remain incomplete.
For investors who track cryptocurrency across several accounts, cryptact's Crypto Portfolio Management guide explains how transaction history, acquisition costs and transfers connect with portfolio holdings and P&L.
The corrected calculations should be reviewed alongside the broader transaction history before being used for reporting.
Frequently Asked Questions
Can I use the date crypto arrived in my wallet as the purchase date?
Not if you bought it earlier. A wallet deposit can follow the original purchase by months or years. Check the sending exchange for the transaction that established the cost basis.
Why did my gain change after I imported an old trade?
An earlier acquisition can change which costs apply to a later disposal under the selected calculation method. Check the affected sales and make sure the import did not introduce duplicates.
What if the missing cryptocurrency came from a swap?
Find both sides of the trade, including the asset disposed of and the asset received. You need those details to understand where the new asset came from and which transaction records are missing. The reporting treatment depends on the applicable rules.
Is an API sync proof that my history is complete?
No. An exchange may leave older trades or certain transaction types out of its API records. Check the imported history against what you can see in the exchange account.
Can cryptact determine an unknown purchase price automatically?
It can identify discrepancies and process supported corrections, but it cannot verify a purchase where reliable source information no longer exists. Treat approximate repairs carefully.
Conclusion
Missing cost basis often becomes visible at the sale, even when the gap began years earlier. Sometimes the purchase belongs to an old exchange. Sometimes the problem is a duplicated disposal or a receipt that never made it into the history.
Trace the first discrepancy before adding a price.
Once you find the original transaction, add the supported record and check the resulting holdings. cryptact can help identify the warning and recalculate the history, but the source evidence still matters.
Review your transactions with cryptact before using the figures for tax reporting.
No credit card required
References
https://support.cryptact.com/hc/en-us/articles/4419437458457-How-to-use-the-Ledger-Repair-Wizard
https://support.cryptact.com/hc/en-us/articles/42696957388313-Cost-basis-method
https://www.cryptact.com/en/blog/crypto-portfolio-management
https://www.cryptact.com/en/blog/crypto-recordkeeping-best-practice





