Connect With Us

You are at:

Koinly Review: Strong Reconciliation, Conditional Accuracy

Accountant working through financial reports with a calculator and laptop for a crypto tax software review

Koinly is easiest to understand when the ledger is slightly broken.

A clean demo account can make almost any tax product look competent. The more revealing test is to import a history with one missing acquisition, one internal transfer, one overlapping CSV and API period, and one transaction the software cannot classify confidently.

That is where Koinly earns its place on my shortlist.

Commercial disclosure: This article contains no Koinly affiliate CTA. Official Koinly links below are evidence citations only.

Evidence boundary: this review is based on current Koinly pricing and help documentation, not a claim of personal paid-account testing or verification of every integration.

The Koinly stress test

Imagine a portfolio with four defects:

  1. BTC was bought on an old exchange that was never imported.
  2. ETH moved from an exchange to self-custody, but the receiving wallet was added later.
  3. A 2024 exchange CSV overlaps a period already synced by API.
  4. A DeFi position changes the economic form of an asset in a way that needs review.

A tax platform can respond to that history in two broad ways. It can produce a number and hide the uncertainty, or it can make the broken parts visible enough to repair.

Koinly’s public documentation is unusually explicit about the second job: missing-purchase warnings, negative balances, transfer matching, duplicate detection, wallet-balance checks and transaction-level review.

That is the product’s real advantage. The tax-report button comes later.

Broken case one: the sale exists but the purchase does not

If the disposal is present and the acquisition is absent, Koinly cannot discover a historical purchase from nothing.

Its missing-purchase workflow is therefore more important than any headline claim about accuracy. The correct response is to trace the asset backward through owned wallets and recover the missing source record. A zero or missing basis can be a warning about evidence, not proof that the asset cost nothing.

I would rather use software that exposes that gap than software that silently turns it into a polished gain figure.

Broken case two: the transfer looks like two unrelated events

Koinly attempts to match transfers between wallets the user has added. That can preserve continuity when assets move from an exchange to self-custody or between owned addresses.

The caveat is structural: both sides need to exist in the dataset and be similar enough to match. Fees, timestamps, batching and chain-specific behaviour can complicate the pair.

This makes wallet completeness a prerequisite, not a clerical detail. Adding the receiving wallet years later can change the interpretation of earlier sends.

Broken case three: API and CSV overlap

Koinly’s duplicate detection is useful, but its own documentation warns against assuming that overlapping imports will always collapse cleanly.

An API may report individual fills while a CSV reports an aggregated trade. Timestamps can differ. Fees can be represented differently. Two records can describe the same economic event without being exact duplicates.

My rule is therefore one primary source per account and period, with secondary imports added only for a documented gap. Koinly helps reconcile the result; it should not be asked to guess which of several overlapping source feeds deserves authority.

Broken case four: DeFi changes the asset’s form

DeFi support is not a binary feature.

A protocol deposit can create a receipt token, debt position, LP token or wrapped representation. The chain can be complete while the economic classification still needs interpretation.

Koinly supports many DeFi and NFT workflows, but a supported chain or protocol does not make every transaction self-explanatory. I would test representative complex events before cleaning an entire multi-year history.

The free plan is useful because it lets you investigate before paying

Koinly’s current free plan allows unlimited wallets and up to 10,000 transactions across the account. Users can view imported transactions, gains on individual trades and the tax summary before purchasing a report.

The important limitations are also clear: the free plan cannot generate tax reports and excludes some advanced tools such as the cost-analysis tab and bulk editing in Excel. If the account exceeds the free transaction ceiling, calculations can stop until a suitable paid plan is purchased.

That makes the free tier a genuine diagnostic environment rather than a free filing product.

Pricing begins only after the ledger tells you what plan you need

Koinly currently publishes tax-year plans beginning at $49 for up to 100 transactions, $99 for up to 1,000 and $199 for up to 3,000, with a Pro structure for larger histories and additional transaction packages above the top included allowance.

The plan required depends on more than the raw row count. Koinly documents yearly limits, account-wide limits and billable-transaction rules.

I would therefore import and reconcile first, then price the cleaned ledger. Buying a plan from an exchange’s export row count can be misleading.

International breadth is valuable only when the exact report fits

Koinly publishes specialised tax reports and configurable calculation methods across several major jurisdictions. That makes it a stronger default than a US-only workflow when the same portfolio crosses countries or when the user expects to move.

But “supports my country” is still too broad a test. Confirm the exact tax year, report type, accounting method, local currency and filing or adviser handoff required.

International breadth reduces one class of friction. It does not eliminate jurisdiction-specific judgment.

The part I would not outsource to Koinly

I would not ask Koinly to decide what the source evidence never established.

  • It cannot reconstruct a trade from an exchange account that no longer exists unless another record survives.
  • It cannot prove ownership merely because two addresses look related.
  • It cannot turn every complex contract action into one universally correct tax treatment.
  • It cannot make an illiquid token price defensible without a sensible valuation source.
  • It cannot replace local professional advice where the legal classification itself is uncertain.

Those are not unusual defects in Koinly. They are limits of tax software as a category.

Who Koinly fits best

I would start with Koinly when the hard part is reconstruction: several exchanges, self-custody wallets, historical files, mixed chains, international reporting or a ledger with enough inconsistencies that the cleanup process matters as much as the final form.

I would look first at a more filing-centric alternative when the history is already simple and the decisive need is a tightly integrated US filing route rather than broad reconciliation.

What would change my view?

Koinly would lose much of its advantage if the reconciliation layer stopped surfacing source-level problems clearly, if transaction export and auditability became materially weaker, or if the free diagnostic environment narrowed enough that users had to pay before learning whether the ledger was supportable.

For now, I see Koinly as a reconciliation product that happens to generate tax reports—not the other way around.

For the broader decision framework, see Best Crypto Tax Software and Audit Your Crypto Transactions Before You Trust a Tax Report.

Official sources

This article is educational and does not provide personalised tax advice.

Leave a Comment

Your email address will not be published. Required fields are marked *