Jump Ahead
Introduction
If you used an exchange or wallet that is not currently supported on CoinLedger, there are two options to import those transactions manually:
Enter individual transactions in-app
Create a custom CSV file for all of your manual transactions
This guide explains how to enter all of your manual transactions into one file, the Universal Manual Import Template. The Universal Manual Import Template includes the following transaction types:
Trades - Fiat buys, Fiat sells, and Trades (crypto-to-crypto swaps)
Income deposits - Interest income, Staking income, Mining income, Airdrops, Hard Forks, and other Income
Other transactions - Payments, outgoing & incoming gifts, and crypto losses from theft/scams
Import Instructions
Step 1:
Make a copy of the Universal Manual Import CSV Template in Google Sheets.
Note - In order to prevent formatting errors it is recommended to use Google Sheets to create this file, as other spreadsheet editors such as Excel and Numbers often apply formatting changes that cause the file to fail import.
However, if you do not have access to a Google account you can use this link to download a copy of the file. You will then need to create a new CSV file in your own spreadsheet editor. Be careful to keep the column headers exactly as you see them, without deleting any optional columns.
Step 2:
Delete the sample data - these are just examples of properly filled out transactions.
Continue to fill out this template for each of your transactions that need to be imported. Detailed instructions for what to enter for each transaction type are outlined in the following section.
Note - Do not remove optional columns entirely, just leave them blank.
Step 3:
Save the template as a CSV file to your computer. Select File -> Download -> Comma Separated Values (.csv)
Step 4:
Navigate back to the CoinLedger site and upload your CSV file under the Other Account tab.
Step 5:
To customize the name of your manual import, click on the import tab and select Edit Name.
Enter the name of the platform or whichever name will best help you keep track of your imports.
Spreadsheet Fields Explained
Different fields are required depending on the transaction type. The following section explains in detail what you should enter into each field.
Date (UTC)
The UTC timestamp of your transaction
The timestamp must be in the format of Month-Day-Year
Example: mm/dd/yyyy hh:mm:ss
Note: Hours, minutes, seconds are optional and a dash separator ('-') can be used instead of a slash '/'
(VERY IMPORTANT to ensure your dates are in UTC!!)
Platform
The name of the platform where you transacted. This is an optional field that makes it easier to review and sort transactions later on. You can add as many platforms as you need into the spreadsheet.
Asset Sent and Amount Sent
The currency and the amount that is outgoing in the transaction.
A withdrawal of 50 XRP will have XRP set as the Asset Sent and 50 as the Amount Sent.
If you traded BTC for ETH, BTC would be the Asset Sent.
Asset Received and Amount Received
The currency and the amount that is incoming in the transaction.
An income deposit of 50 XRP will have XRP set as the Asset Received and 50 as the Amount Received.
If you traded BTC for ETH, ETH will be the Asset Received.
Fee Currency and Fee Amount
An optional field which specifies the currency in which the fee was applied in this
transaction. Skip this field if the trading fee has already been applied.
Type
Transaction types are classified as follows:
Trades
All fields for Asset Sent and Asset Received are filled out
Fiat buys
Fiat sells
Crypto-to-crypto trades
Incoming deposits
The fields Asset Received and Amount Received are filled out
Income
Interest
Mining
Staking
Hard Fork
Airdrop
Gift Received
Deposit - this is treated as a non-taxable self-transfer
Outgoing withdrawals
The fields Asset Sent and Amount Sent are filled out
Gift Sent
Casualty Loss
Theft Loss
Investment Loss
Interest Payment
Merchant Payment
Withdrawal - this is treated as a non-taxable self-transfer
Important note: The Type field is a mandatory field for all deposit and withdrawal transactions, but not for trades. All fiat buys, fiat sells, and crypto-to-crypto exchanges can be labeled as Trades but you do not have to put anything under the Type field for these transactions. As long as both Asset Sent and Asset Received fields are filled out, our importer can read the rest.
If you need further info on which transaction types CoinLedger supports and how we define them, check out our guide on transaction types!
Description
An optional field - helpful for you to add notes about the transaction.
TxHash
An optional field for entering the transaction ID
Troubleshooting: Map a Partially-Supported Exchange's Transactions to the Universal Template
Below we demonstrate the step-by-step process for mapping your transactions from another exchange's spreadsheet into our Universal/Manual Import Template. After following along with this detailed video, check out a brief recap that outlines each step.
Step 1
First, download the transaction history file from whichever crypto exchange, wallet, or platform you're looking to import. Usually you can find this directly within your exchange or request it from your exchange's customer support.
Step 2
Once you have all of your transactions from your exchange, make a copy of the Universal Manual Import spreadsheet template.
Step 3
Now map your transactions from your exchange to match the supported generic/manual import template on our website, as shown in the video above.
For further guidance on troubleshooting spreadsheet formatting errors, check out this guide.
Step 4
Once complete, download your newly created spreadsheet as a CSV file and upload it into CoinLedger.
Manual Import FAQ's
Do the transactions need to be entered in chronological order?
No. You can enter your transactions in any order. CoinLedger will order your trades by timestamp upon import.
Can I enter multiple platforms in the same file?
Yes. This template was designed to make it as easy as possible to enter all your transactions in one place.
Do I need to include fees?
This depends on whether the exchange already applied the fee to the transaction or not. You should review your specific exchange data to verify whether you need to add the fees separately or whether they are already included.
What happens if I don't enter the Type on a deposit/withdrawal transaction?
The file will fail import and you will need to edit the file to specify the Type. Otherwise, our software will have no way of determining whether you received or sent the asset.
Do I need to enter the hours, minutes, and seconds on the timestamp?
You don't have to. The only required fields are the month, day, and year. However if you do have the info for hours, minutes, and seconds it is best to enter that as much data as possible. Crypto prices are volatile and can range wildly over one day, so to be most accurate you should enter the full timestamp.
What is the difference between Theft, Casualty, and Investment Loss?
Investment Loss is the only type that gets reported as a realized loss on the Form 8949. Theft and Casualty losses will remove the asset from the global balance, but you will not realize the loss for tax purposes. You should consult with a tax professional before reporting an Investment Loss. Read this guide to learn more.
How do I enter NFT transactions into the manual template?
NFT transactions can be imported manually as a "Trade" in the Universal Template. However, before importing these transactions, you will first need to add a custom asset representing this NFT to your CoinLedger account (otherwise your import will fail to map the transaction to the correct NFT asset). See instructions for adding a custom NFT asset to your account HERE.