This article goes over how to create a custom CSV to import transactions into ZenLedger. Custom CSVs are a good way to get unsupported coins, unsupported wallets, or lost/stolen transactions into ZenLedger. If you have any questions after reading this article on when you would use a Custom CSV or manual entry, please let us know by clicking on the support chat!
We recommend using Google Sheets., a free CSV editing software similar to Excel and Mac Numbers to create your custom CSV. Microsoft Excel is not recommended as it does some strange things with formatting cells.
If you only have one or two entries to make, we recommend adding them directly as a mnaual entry. Check out our Manual Entry Article for more information on how to add a transaction this way. However, if you have several, read on and watch our informative video for how to create a custom CSV!
Step-by-Step Video Instructions on How to Create a Custom CSV:
Notes:
The video says that SEND and RECEIVE are transaction types that are for wallets or exchanges you do not own. You can, however, use these types for Self-Transfer transactions. Once you import the CSV, these will match up as self-transfers or you can use the Resolution Center to match these transactions if not done automatically.
If your original spreadsheet from an exchange, such as Coinex, has information like transaction IDs or hashes, we do NOT need this. We only need the fields in the template filled out, exactly as we have described, for best results.
The timestamp on Column 1 must be on UTC. Put this in 24 hr time and no "AM/PM". You will have your best luck doing this in Google Sheets, which has an automatic option for the right timestamp under Format > Number > Date time (see screenshot below):
Detailed list of transaction types and definitions:
Header Row:
Timestamp | Time stamp should be in UTC, and 24 hrs format. The formats supported are yyyy-mm-dd hh:mm:ss and mm/dd/yyyy hh:mm:ss |
Type | This identifies the type of transaction user is uploading. We support ‘buy', ‘sell,' ‘trade,' ‘receive', ‘send,' ‘Initial Coin Offering,' ‘margin trade', 'staking', 'fork', 'airdrop', 'payment', 'mined', 'gift sent', 'fee', 'staking reward''dividend received', 'interest received', 'misc reward', 'margin gain', 'margin loss', 'lost', 'stolen,' 'nft_mint',’donation_501c3’, 'staking lockup’ , 'staking return’,’nft_trade’
|
IN Amount | Incoming amount
|
In Currency | Incoming Token Currency ID |
Out Amount | Outgoing amount |
Out Currency | Outgoing Token currency ID |
Fee Amount | Fee amount |
Fee Currency | Fee Currency ID |
Exchange (optional) | Exchange/wallet where the transaction took place |
US Based | ‘Yes’ if the exchange is located in US and ‘No’ if it is outside US. |
Types Of Trades:
Type | Information |
Buy |
|
Sell |
|
Trade |
|
Receive |
|
Send |
|
Initial coin offering |
|
Margin trade |
|
Staking/Staking Reward |
|
Fork |
|
Airdrop |
|
Payment |
|
Mined |
|
Gift sent |
|
fee |
|
dividend received |
|
interest received |
|
Misc Reward |
|
margin gain |
|
margin loss |
|
nft mint | Transaction in CSV Transaction uploaded to Zenledger
|
nft trade |
Transaction in CSV Transaction uploaded to Zenledger
|
Donation 501c3 |
|
Stolen |
|
Lost |
|
Staking Lockup |
|
Staking Return |
|
Additional Information:
Type | Information |
Self transfer/ Switch trade /Swap | These types are imported as Receive and Send. Once imported they are either auto-detected by the system or they can be manually marked. |
Fiat | Custom CSV import only support USD as Fiat currency. |
Keep in mind:
The IN and OUT are from the perspective of the wallet or account. So if I you are making a custom CSV for a wallet and you send 1 BTC to the wallet from Coinbase, and then 0.5 BTC out to Binance from your wallet, you would record “ 1.0 BTC IN, 0.5 BTC OUT.
Frequently made mistakes:
Incorrect date format.
File format should be in CSV.
CSV format should be in UTF-8.
Incoming and outgoing values in wrong columns.
Incorrect header row or missing necessary columns.
You can always send us your file in the support chat or email to us at [email protected] if you get stuck, we're happy to help!