Overview
The Crucible wallet activity export is compatible with Koinly, but there are a couple of adjustments you'll need to make before importing. This guide walks you through the full process, from downloading your CSV to seeing your transactions in Koinly, including two important find-and-replace steps that ensure your data imports cleanly.
Before you start
You've already generated and downloaded your 2025 wallet activity CSV from Crucible. If you haven't, see [Exporting my 2025 wallet activity] first.
You have a Koinly account. If not, create one at koinly.io.
You have a spreadsheet app available (Google Sheets, Excel, or similar) for the find-and-replace steps.
Step 1: Replace SN0 with TAO
Your Crucible CSV uses "SN0" to represent TAO on the root network. This is useful for distinguishing staking activity from regular transfers, but Koinly doesn't recognize SN0 as a token. You need to replace all instances of SN0 with TAO before importing.
Why this matters: Staking and unstaking transactions in the CSV are labeled as stake and show a swap between TAO and SN0. When you replace SN0 with TAO, Koinly sees a TAO-to-TAO transaction tagged as stake. Koinly ignores stake-labeled transactions where the sent and received currencies match, which is exactly the right behavior. Staking and unstaking don't trigger a taxable event for most users, they're just moving TAO between your wallet and a validator.
How to do it:
Open your downloaded CSV file in Google Sheets or Excel.
Open Find and Replace (Ctrl+H on Windows, Cmd+H on Mac).
In the Find field, type:
SN0In the Replace with field, type:
TAOClick Replace All.
Important: Make sure you replace SN0 exactly, not SN0 as part of a longer string. For example, you don't want to accidentally turn "SN01" into "TAO1". In most spreadsheet apps, you can check a "Match entire cell contents" or "Match whole word" option to prevent this. Alternatively, search for ,SN0, (with commas) to be safe, since CSV values are comma-separated.
Step 2: Fix unrecognized subnet tokens (if needed)
Koinly may not recognize some Bittensor subnet tokens. If you see import errors like "Currency not found" for tokens like SN95, SN19, or other subnet identifiers, you'll need to replace those tokens with Koinly-compatible NULL placeholders.
Why this matters: Koinly needs to recognize every currency symbol in the CSV. Bittensor subnet tokens (formatted as SNxx) don't exist in Koinly's token database. Using NULL placeholders (NULL1, NULL2, etc.) tells Koinly to treat the token as valid but without a market price. This lets the import complete without errors.
How to do it:
Try importing your CSV into Koinly first (see Step 3 below). If all tokens import without errors, you can skip this step.
If Koinly shows errors for specific tokens, note which ones failed (e.g., SN95, SN19).
Go back to your CSV in Google Sheets or Excel.
For each unrecognized token, use Find and Replace to swap the subnet token for a NULL placeholder. Use the subnet number to keep things organized:
Find | Replace with |
SN95 | NULL95 |
SN19 | NULL19 |
SN50 | NULL50 |
Replace all instances of each unrecognized token.
Save the file and re-import into Koinly.
Note: NULL placeholders won't have a market price in Koinly. However, your Crucible CSV includes the USD value of each transaction at the time it occurred (in the Net Worth Amount column). Koinly uses this value for cost basis when it's provided, so your tax calculations should still be accurate even for tokens Koinly doesn't have pricing data for.
Step 3: Import the CSV into Koinly
Once your find-and-replace steps are done, you're ready to import.
Log in to Koinly.
Go to the Wallets page and click Add Wallet / Exchange.
Search for Bittensor in the search bar and select it.
Click Add Bittensor wallet, then select Import from file.
Browse to your edited CSV file, or drag and drop it into the upload area.
Koinly will process the file and show an import summary. Review it for any errors or skipped rows.
If everything looks good, your transactions are now in Koinly.
Note: If you see "Currency not found" errors after importing, go back to Step 2 and replace those specific tokens with NULL placeholders, then re-import.
Understanding what Koinly does with your data
Here's how Koinly interprets the different transaction types in your Crucible CSV:
Regular TAO transfers are imported as deposits (received) or withdrawals (sent). Koinly may match sends and receives between your wallets as internal transfers if you have multiple wallets connected.
Staking and unstaking (after the SN0 replacement) show as TAO-to-TAO swaps labeled
stake. Koinly ignores these, which is correct. Moving TAO in and out of staking is generally not a taxable event.Subnet swaps (TAO to SNxx or vice versa) are imported as trades. Koinly will attempt to calculate gains or losses based on the cost basis of your TAO and the value at the time of the swap.
Rewards and emissions labeled as
rewardare treated as income by Koinly, valued at the market price on the date they were received. This is generally how staking rewards are reported for tax purposes.
Common questions
Do I need to do the find-and-replace steps every time?
Yes. Each time you generate and download a new CSV from Crucible, you'll need to repeat the SN0 replacement and fix any unrecognized tokens before importing into Koinly.
What if I import the CSV without replacing SN0?
Koinly will likely flag SN0 as an unrecognized token. Your staking and unstaking transactions won't import correctly, and Koinly may miscalculate your tax liability.
Can I import the same CSV more than once?
Koinly has duplicate detection for CSV imports. If you import the same file twice, it should skip transactions it has already processed. However, it's best to avoid importing the same data repeatedly, as edge cases can sometimes create duplicates.
What if I use a tax tool other than Koinly?
The Crucible CSV is closely compatible with Koinly, but it's a standard CSV file. Other tax tools may accept it directly, or you may need to adjust the column headers to match their required format. The SN0 naming convention and NULL placeholder approach described in this guide are specific to Koinly. Check your tax tool's documentation for their CSV import requirements.
I'm not sure how to report my staking rewards. What should I do?
Tax treatment of staking rewards varies by jurisdiction. Crucible does not provide tax advice. Consult a qualified tax professional who understands cryptocurrency taxation in your area.