A crypto tax audit is easier to manage when every exchange, wallet, transfer, disposal and income event can be traced from its original record to the amount reported on a tax return. Koinly can organize transaction data and calculations, but it cannot replace missing source records or decide how an unusual transaction should be treated. This checklist explains how to build a defensible file before responding to an IRS notice.
Last reviewed: September 5, 2026. This independent guide focuses on U.S. federal tax record preparation. It is general educational information, not legal, accounting or tax advice. Audit requests, deadlines and tax treatment depend on the notice, tax year and individual facts. Consult a qualified tax professional or attorney about an actual examination.
Crypto tax audit checklist: quick overview
- Confirm that the IRS notice is genuine and record its response deadline.
- Identify exactly which tax years and questions are under examination.
- Preserve the return, workpapers and original source files used to prepare it.
- List every exchange, wallet, blockchain and payment account used during the relevant period.
- Import complete histories into Koinly without deleting the raw exports.
- Reconcile transfers, balances, income and disposals rather than accepting automatic labels blindly.
- Compare Koinly totals with the filed return and information statements.
- Document every manual correction, assumption and valuation source.
- Give the IRS only an accurate, organized response within the scope requested.
- Get professional help when the facts, amounts or potential penalties are material.
First distinguish a notice from an audit
Not every IRS letter means a full examination. A notice may ask about a mismatch, request payment, propose a change or seek specific documents. An examination can be handled by correspondence, at an IRS office or through a field audit. The notice number, tax period, response date and requested information determine the next step.
Read every page and envelope, retain a copy and verify the contact method through an official IRS channel. Do not use a phone number or link from an unexpected text message, social-media account or email. The IRS warns that criminals impersonate the agency, and an urgent request for cryptocurrency, gift cards, passwords or a recovery phrase is a scam.
Do not upload an entire lifetime of financial data merely because it is available. At the same time, do not omit responsive records. A tax professional can help interpret the request and decide what belongs in a complete but properly scoped response.
Freeze the record set before changing anything
Create a read-only archive of the material that existed when the return was prepared. Keep the filed federal and state returns, Form 8949, Schedule D, income schedules, worksheets, prior tax-software reports, exchange statements and original CSV files. If Koinly was used, save the reports and settings associated with that filing year before editing transactions.
This snapshot matters because a later API synchronization can add records, alter labels or reflect corrected exchange data. An examiner or adviser may need to understand both what was originally reported and why a revised calculation differs. Record the download date, platform, account identifier and covered period for every file.
Build a complete inventory of crypto activity
Start with accounts, not taxable events. A disposal reported in one exchange may depend on cost basis established years earlier in another exchange or wallet. List:
- centralized exchanges, including closed or restricted accounts;
- self-custody wallets and relevant public addresses;
- hardware wallets and software-wallet profiles;
- DeFi protocols, liquidity pools, bridges and wrapped assets;
- NFT marketplaces and gaming platforms;
- staking, mining, airdrop and lending activity;
- merchant processors, crypto cards and payment applications;
- fiat bank accounts used to fund purchases or receive proceeds.
Search old email, password-manager entries and bank statements for forgotten platforms, but access accounts only through verified official domains. Never provide a private key or seed phrase to tax software, an accountant or someone claiming to represent the IRS.
Collect source documents before importing to Koinly
A blockchain explorer is valuable evidence, but it does not explain account ownership, fiat payments or why a transaction occurred. Combine on-chain and off-chain records:
- complete exchange CSV exports and account statements;
- transaction hashes, wallet addresses and timestamps;
- bank or card statements showing fiat purchases and withdrawals;
- broker tax statements, including relevant Forms 1099;
- staking, mining, referral and reward histories;
- receipts for goods or services purchased with crypto;
- gift, donation, loan or business documentation;
- screenshots or correspondence explaining delistings, migrations and account closures.
Keep original files unchanged. Work from copies and use a clear naming system such as year, platform, account and export date. Screenshots alone are weaker than downloadable transaction histories because they can omit rows and calculation fields.
Import complete histories into Koinly
Koinly supports account synchronization and file imports for many services. Use the method supported by the platform and review the current Koinly instructions before connecting it. When an API is available, grant only the access necessary to read transaction history; withdrawal permission should not be needed for tax tracking.
Import all relevant years, not only the year being examined. If an asset sold in 2025 was purchased in 2021, the earlier acquisition is needed to establish basis and holding period. Add both sides of wallet-to-wallet transfers so a withdrawal is not mistaken for a disposal or a deposit for income.
A successful import is only the start. Compare the first and last dates, transaction count, token balances and fiat flows against the source platform. Save any import warning and note why a record was added manually.
Reconcile transfers before reviewing gains
Unmatched transfers are a common cause of missing basis. Suppose ETH leaves Exchange A, passes through a self-custody wallet and later reaches Exchange B. If only Exchange B is imported, the software sees a deposit and sale without the original purchase. The apparent gain may therefore be overstated or flagged as missing purchase history.
For each transfer, match the asset, quantity, timestamp, network and transaction hash. Account for network and withdrawal fees instead of forcing two unequal amounts to match. Confirm that both accounts belonged to the same taxpayer. A payment, gift, loan or transfer to another person should not be relabeled as a self-transfer simply to eliminate a gain.
Investigate missing cost basis
Do not replace missing basis with a convenient estimate. Trace the asset backward through transfers until reaching its acquisition: purchase, trade, income, gift, inheritance or another documented event. Retain the record that supports the date, quantity, fair market value and associated fees.
If records truly cannot be recovered, document the search and obtain professional guidance about a reasonable treatment. The absence of a platform account does not automatically prove zero basis, while an unsupported manual value may be difficult to defend.
Review transaction classifications individually
Automated software infers meaning from data that may not include the user’s intent. Review high-value and unusual items, along with samples from routine categories:
| Activity | Questions to verify | Records to retain |
|---|---|---|
| Trade or sale | What asset was disposed of, when, and for what proceeds? | Order history, fees, acquisition history and valuation. |
| Self-transfer | Did the same owner control both endpoints? | TxID, both wallet records and fee details. |
| Staking or mining | When was the taxpayer able to control the reward? | Payout log, wallet receipt and valuation method. |
| Airdrop or token migration | Was value received, and did the asset or rights change? | Project announcement, token contract and transaction history. |
| DeFi or bridge | Were tokens exchanged, wrapped, burned, minted or deposited? | Protocol records, all transaction legs and contract addresses. |
| Gift or donation | Who received the asset and was anything received in return? | Recipient, date, basis records, receipt and correspondence. |
Labels must reflect the facts and applicable law. If guidance is uncertain, preserve the reasoning used and discuss the position with an adviser rather than hiding the transaction.
Verify fair market value and currency settings
Crypto trades can occur around the clock across markets with different prices. Document the pricing source and time convention used for material transactions. Confirm the account’s home currency, time zone and country settings before generating reports. A midnight boundary or incorrect base currency can move an event into another day or tax year.
For thinly traded tokens, NFT transactions or assets without reliable market data, an automatic price may be unavailable or misleading. Keep evidence supporting any manual valuation and apply the method consistently.
Compare Koinly with the filed return
Generate reports for the same year and settings used on the return, then reconcile the totals line by line. Compare proceeds, basis, short- and long-term gains or losses, and income categories. Differences do not prove that either result is correct; they identify an issue that needs an explanation.
Also compare information statements from exchanges or brokers. A statement may lack basis for assets transferred in from another wallet, while the taxpayer’s complete records may contain it. Preserve the statement, the transfer trail and the calculation that explains the difference rather than changing records merely to force the totals to match.
Document Koinly settings and manual edits
An audit file should let another qualified person reproduce the result. Record the tax year, jurisdiction, accounting settings, wallet list, report generation date and software version where available. Maintain an edit log containing:
- the transaction changed;
- the original classification or value;
- the correction made;
- the source document supporting it;
- who made the change and when;
- the reason the correction was necessary.
Do not delete contradictory records. Keep them with an explanation so the full trail remains visible. Export final reports and supporting transaction data after the review.
Create an audit-ready folder structure
A consistent folder structure reduces errors and professional fees. One practical layout is:
- Notice and correspondence: original letter, envelope, delivery proof and response history.
- Filed return: signed return, schedules and original workpapers.
- Source records: separate folders for each exchange, wallet, bank and protocol.
- Reconciliation: transfer matching, basis schedules and explanations of discrepancies.
- Koinly reports: settings record, transaction export, tax reports and edit log.
- Response package: index, cover letter and only the documents responsive to the request.
Use encrypted storage with a separate backup. Share records through a secure portal supplied by a verified adviser, not an ordinary email attachment when sensitive identity and account data are involved.
When professional help is especially important
Consider a CPA, enrolled agent or tax attorney with digital-asset experience when the notice has a short deadline, records are incomplete, several years are involved, or the activity includes high values, businesses, foreign accounts, privacy tools, DeFi, NFTs, loans or disputed ownership. Legal counsel may be appropriate where fraud, penalties, summonses or criminal exposure are possible.
Koinly calculates from supplied data; it does not represent a taxpayer before the IRS and does not turn an uncertain legal position into a settled one. Ask a prospective adviser how they handle blockchain tracing, software reconciliation, privilege and audit representation.
Mistakes to avoid during a crypto tax audit
- Ignoring the notice or missing the response deadline.
- Assuming every IRS-branded message is genuine.
- Importing only the examined year and losing historical basis.
- Treating all deposits as income or all withdrawals as sales.
- Marking transfers to other people as transfers between your own wallets.
- Changing Koinly records without retaining the original report and evidence.
- Using an unsupported price to remove a large gain.
- Sending private keys, seed phrases or unnecessary account credentials.
- Amending a return before understanding the discrepancy and procedural effect.
- Submitting a large, unindexed data dump that does not answer the request.
Frequently asked questions
Does an IRS crypto notice always mean I am being audited?
No. It may be a proposed adjustment, information request or mismatch notice. Read the notice number and requested action carefully, verify it through official IRS channels and obtain advice if its meaning is unclear.
Can Koinly prevent a crypto tax audit?
No software can guarantee that a return will not be examined. Koinly can help consolidate transactions and generate reports, but the taxpayer remains responsible for complete data, correct classifications and the filed return.
Should I connect every wallet to Koinly?
Include every account needed to reconstruct the relevant acquisition, transfer, income and disposal history. Historical wallets can be necessary even if they had no activity during the audit year. Use public addresses, read-only connections or official exports; never disclose a seed phrase.
What if Koinly shows missing purchase history?
Trace the asset back through deposits and withdrawals, import the sending wallets and locate the original acquisition. Do not assign an arbitrary basis solely to clear the warning.
Are wallet-to-wallet transfers taxable?
For U.S. federal tax purposes, moving an asset between wallets or accounts owned by the same person is generally not a taxable disposition of the transferred asset. Fees and transactions that exchange the asset or change beneficial ownership require separate review.
Should Koinly totals equal a Form 1099 exactly?
Not necessarily. A broker statement may have a different scope or lack basis from another platform. Reconcile and document each difference rather than assuming one total must be forced to equal the other.
How long should crypto records be kept?
Retention depends on the type of record and tax circumstances. Basis records may remain relevant until after the asset is disposed of and the applicable limitation period has passed. Ask a tax professional for a retention policy tailored to the return and any open examination.
Final takeaway
An audit-ready crypto file connects every reported number to complete source data, an understandable classification and a documented calculation. Koinly can make that reconstruction more manageable, but reliable results require all relevant wallets, careful transfer matching, resolved basis issues and preserved evidence.
Begin with the actual notice, protect the original records and reconcile before responding. For current product workflow, review Koinly’s official guides to getting started, generating tax reports and preparing for a crypto tax audit. For authoritative U.S. reporting information, consult the IRS digital assets guidance.