Skip to main content

How to compile the CryptoBooks CSV

The instruction to fill out CryptoBooks custom CSV.

Updated over 2 weeks ago

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,,,
Did this answer your question?