Crypto recordkeeping guide

Koinly “missing purchase history”: how to trace missing cost basis

Koinly shows this warning when a disposal is larger than the history it has imported. The fix is usually a missing or duplicated record, so start with the sources rather than the number.

From Elena Mocchi Crypto Accounting · Published

What the warning means

Koinly’s help article explains that the warning appears when you sell more of an asset than the imported transactions show you owned at that time. For the missing amount, Koinly assumes a cost basis of zero, so the full sale value is treated as gain.

Koinly also notes that cost basis is calculated from imported history and cannot be set manually. A missing purchase has to be found in the records, not typed in.

Common causes Koinly lists

  • Transaction history from previous years was never imported.
  • Gaps in the history: some transactions are missing.
  • Duplicate transactions were imported.
  • CSV files were imported in the wrong time zone.
  • Airdrops, forks, or sign-up bonuses are missing.
  • Trade fees were counted twice.
  • Manual transactions were added that were not needed.

Koinly also points out that spam tokens and address poisoning can appear as withdrawals with this warning.

Work through these checks

  1. Rule out spam tokens. Unknown tokens with no price are often not real holdings.
  2. Find where the balance goes negative. Note the wallet, asset, and date of the first disposal with the warning.
  3. Look for an earlier account. Was the asset bought on another exchange or in an earlier year that is not connected?
  4. Check transfers. A deposit from your own wallet needs its sending side; unmatched transfers break the chain of acquisition history.
  5. Check duplicates and time zones. Overlapping files or a shifted CSV can move or double transactions.
  6. Re-import carefully. Koinly suggests resyncing, or deleting and re-adding the wallet, including re-adding it from CSV files only.

Demo: find the missing half

Fictional records · No tax calculation.

Sale on Exchange B 1.50 BTC
Warning: missing purchase history for 0.50 BTC.
Imported purchase 1.00 BTC
Exchange B trade history, the only acquisition in Koinly.
Old account found 0.50 BTC
Purchase on Exchange A in an earlier year, then withdrawn to Exchange B. Ref: DEMO-TX-07.

Importing Exchange A and matching the transfer supplies the missing acquisition. The purchase record and transfer reference are kept with the note explaining the change.

Before you clear the warning

Koinly describes a way to clear the warning with a zero-value manual deposit, which keeps the zero cost basis, and recommends fixing the underlying data instead where possible. Clearing a warning hides the gap; it does not supply the missing acquisition.

If a source cannot be recovered, record which account and period are missing and what you tried. Your CPA or EA can then decide how to treat the unresolved basis.

When a cleanup review can help

If warnings span several assets or keep returning after imports, Elena’s transaction cleanup service traces acquisitions, transfers, and duplicates across your accounts and documents each correction within an agreed scope.

Koinly is a trademark of its owner. This guide is independent and based on Koinly’s public help article as of October 2026.

See how the records fit together

View the illustrative record package to compare source rows, a working ledger, correction notes, and an open-items list.

Related recordkeeping guides

Work directly with Elena Mocchi

Koinly warnings?
Let’s trace the history.

Tell Elena which assets, wallets, and years show missing purchase history. A short overview is enough; agree how to share records after the scope review.

Message Elena on Telegram

Prefer a quick start? Try the free profit calculator in Telegram

Request a records quote

Describe the warning or record issue. A short overview is enough.

Add your name or tax years (optional)

A brief overview is enough. We’ll agree how to share records after reviewing your request.

Your details and message are sent to Elena by email through FormSubmit to respond to your inquiry. FormSubmit privacy policy.