In this guide, you’ll find everything you need to know about when to use the CryptoBooks CSV format and how to correctly enter your transactions into it.
What is the CryptoBooks Custom CSV?
The CryptoBooks custom CSV is a specific spreadsheet format that we accept for importing your transactions. You should use this format if
we don’t support a direct API connection to your platform
we don’t support the platform’s native export format
Our custom CSV is designed to be simple and straightforward, making it easy for you to add your transactions and upload them to CryptoBooks. Just fill in your transaction details following our template, and you’ll be able to import your data even if your platform isn’t directly supported.
ℹ️ What is a CSV file and how to edit it
If you’re not familiar with CSV files or need help editing and saving them, check out this guide. Alternatively, you can let our CSV Service handle the formatting for you learn more in this guide.
The CSV format
The CryptoBooks CSV format is made up of 13 columns. The first row contains the CSV header, with the title of each column, and each column has a different purpose.
The columns must be filled in according to specific rules (explained in this section) and must remain in the correct order.
This will always be the required header:
TYPE,CATEGORY,TRANSACTION DATE,OUT CURRENCY,OUT AMOUNT,OUT FIAT VALUE,IN CURRENCY,IN AMOUNT,IN FIAT VALUE,FEE CURRENCY,FEE AMOUNT,NOTES,ORIGINAL ID
You may leave some columns empty if they are not applicable, but all headers must be included. Each line represents a single transaction and must only contain the data related to that transaction.
You do not need to create the CSV from scratch — you can download a template with the header already filled in by clicking here
TYPE
Filling this column is always mandatory. This column is used to explain if in the transaction you received an asset, paid/sent an asset or a trade one asset with another one. The accepted value for this field are:
Ingoing
Outgoing
Trade
CATEGORY
Filling out this column is always mandatory. Categories help organize your accounting and ensure the software treats each transaction correctly for tax purposes.
For example, rewards that must be reported as income can be categorized as Earning or Income, so they are handled according to your local tax regulations.
The default and most commonly used category is Trading. To learn more about transaction categories and how to use them, check out this article.
TRANSACTION DATE
Filling out this column is always mandatory. It allows to understand the software when an transaction occurred. Here you can find the list of formats that are supported:
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm
dd/MM/yyyy HH:mm:ss
dd/MM/yyyy HH:mm
Where yyyy is the year, MM is the month, dd is the day, hh is the hour, mm is the minutes, and ss is the seconds.
E.g., if a transaction occurred on 02 January 2024 at 9.45 pm can be imported as:
2024-01-02 21:45:00
2024-01-02 21:45
02-01-2024 21:45:00
02-01-2024 21:45
OUT CURRENCY
Enter the ticker of the asset you sent.
This field is mandatory for Outgoing and Trade transactions.
Leave this field blank for Ingoing transactions.
E.g., if you sold 2,34 ETH, enter ETH.
OUT AMOUNT
Here enter the amount (or quantity) of the asset you sent.
This field is mandatory for Outgoing and Trade transactions.
Leave this field blank for Ingoing transactions.
⚠️ Remember quotation marks in case of commas inside the amount
If you use a comma as a decimal separator, you must enclose the amounts and haders in quotation marks ("xxxx.xx").
This rule must be applied to every field where you input numerical values that use a comma to indicate decimal amounts.
E.g., you need to import an incoming transaction of € 2.999,85
Wrong line format
Incoming,Trading,13/04/2022 19:04,EUR,2999,85,,,,,,,,
Correct line formats
Incoming,Trading,13/04/2022 19:04,EUR,"2999,85",,,,,,,,
Incoming,Trading,13/04/2022 19:04,EUR,2999.85,,,,,,,,
OUT FIAT VALUE
Enter the total value of the assets you sent in your fiat currency.
This field is optional for Outgoing and Trade transactions.
Leave this field blank for Incoming transactions.
E.g., if you sold a crypto-asset worth €2.456,87 in total, enter 2456.87 or "2456,87".
IN CURRENCY
Enter the ticker of the asset you received.
This field is mandatory for Incoming and Trade transactions.
Leave this field blank for Outgoing transactions.
E.g., if you bought 0,23 BTC, enter BTC.
IN AMOUNT
Here enter the amount (or quantity) of the asset you received
This field is mandatory for Incoming and Trade transactions.
Leave this field blank for Outgoing transactions.
E.g., if you bought 0.23 BTC, enter 2.34 or "2.34".
IN FIAT VALUE
Enter the total value of the assets you sent in your fiat currency
This field is optional for Incoming and Trade transactions. If you leave it blank, we will use the market value at the time of the transaction (if available).
Leave this field blank for Outgoing transactions.
E.g., if you sold a crypto asset worth €2.000,34 in total, enter 2000.34 or "2000,34".
FEE CURRENCY
Here enter the ticker of the asset you used to pay the fees.
This field is optional for all transactions, you should fill it only if you paid fees.
E.g., if you paid 0.0034 ETH, enter ETH.
FEE AMOUNT
Here enter the amount (or quantity) of the asset you used to pay the fees.
This field is optional for all transactions, you should fill it only if you paid fees.
E.g., if you paid 0.0034 ETH, enter 0.0034 or "0,0034".
NOTES
This field can be used to enter notes about a transaction. The comments entered here will be shown in the transaction details once imported into CryptoBooks.
This field is always optional and can have a maximum length of 200 characters.
ORIGINAL ID
This field can be used to enter the unique ID of the transaction provided by the exchange or blockchain (e.g., transaction hash). This can help match the transaction in CryptoBooks with its source. Once imported, it will be displayed in the transaction details. This field is always optional.
How to insert a Trade transaction
The column you are required to fill for a Trade are:
TYPE
CATEGORY
TRANSACTION DATE
OUT CURRENCY
OUT AMOUNT
IN CURRENCY
IN AMOUNT
FEE CURRENCY (only if a fee was paid to perform the transaction)
FEE AMOUNT (only if a fee was paid to perform the transaction)
E.g., on 01/01/2025 at 13:34:56 I swapped 15.45 ETH for 1 BTC, which at the time was worth €30,000.00, paying a fee of €2.00.
If i want to specify the fiat value:
Trade,Trading,01-01-2025 13:34:56,ETH,15.45,30000,BTC,1,30000,EUR,2,,,
Or if you are using commas as decimal separator:
Trade,Trading,01-01-2025 13:34:56,ETH,"15,45",30000,BTC,1,30000,EUR,2,,,
Just remember also the header of that field will have to be inside the quotation marks, e.g. "IN AMOUNT".
If don't want to specify the value but use the market price at that time:
Trade,Trading,01-01-2025 13:34:56,ETH,,15.45,BTC,1,,EUR,2,,,
If don't want to add a note:
Trade,Trading,01-01-2025 13:34:56,ETH,,15.45,BTC,1,,EUR,2,This is a note,,
How to insert an Ingoing transaction
The column you are required to fill for a Trade are:
TYPE
CATEGORY
TRANSACTION DATE
IN CURRENCY
IN AMOUNT
FEE CURRENCY (only if a fee was paid to perform the transaction)
FEE AMOUNT (only if a fee was paid to perform the transaction)
E.g., on 26/12/2025 at 14:41:01 I bought with my card 3 BTC, which at the time was worth a total of €120,000.00, paying a fee of 0.05 BTC.
If i want to specify the fiat value:
Incoming,Trading,26-12-2025 14:41:01,BTC,3,120000,,,,,BTC,0.05,,,
If don't want to specify the value but use the market price at that time:
Incoming,Trading,26-12-2025 14:41:01,BTC,3,,,,,,BTC,0.05,,,
How to insert an Outgoing transaction
The column you are required to fill for a Trade are:
TYPE
CATEGORY
TRANSACTION DATE
OUT CURRENCY
OUT AMOUNT
FEE CURRENCY (only if a fee was paid to perform the transaction)
FEE AMOUNT (only if a fee was paid to perform the transaction)
E.g., on 13/05/2025 at 10:12 I sent 2.500,00 USDT, which at the time was worth a total of € 2.200,00, paying a fee of 1,55 USD.
If i want to specify the fiat value:
Incoming,Trading,13-05-2025 10:12,,,,USDT,2500,2200,,USD,1.55,,,
If don't want to specify the value but use the market price at that time:
Incoming,Trading,13-05-2025 10:12,,,,USDT,2500,,,USD,1.55,,,
