Universal CSV format · All exchanges

Custom CSV import: import crypto transactions from any exchange and calculate your Belgian taxes.

Using an exchange we do not support directly yet? With our Custom CSV format you import all your transactions manually (OTC trades, small exchanges, wallets or manual records) and we calculate your Belgian tax automatically.

Download CSV template Start for free
Belgian privacy-first infrastructure, fully GDPR compliant.
All exchanges and wallets
OTC & manual trades
FIFO in EUR for your Belgian return

Why choose Custom CSV?

Not every exchange has a direct integration. With our universal CSV format you never depend on a specific API connection.

Any exchange, any platform

Whether you trade on a small Belgian exchange, via OTC, on a DEX or simply keep records manually, our Custom CSV accepts all transaction types and places no restrictions on the exchange or network.

One file, your full history

Combine transactions from multiple exchanges in a single file. Add new rows, upload again and we detect duplicates automatically via the tx_id column.

Belgian FIFO calculation

After the upload, our tax engine automatically calculates your capital gains and losses, treats staking rewards as miscellaneous income, and generates an accountant-ready PDF report with return codes.

Download the template and fill it in

Our template contains example transactions and detailed comment lines so you know straight away how to fill in each field.

Cryptotax Custom CSV template

Includes example rows for BUY, SELL, TRADE, INCOME and WITHDRAWAL · 10 columns · UTF-8 encoding

Download template (.csv)

Column specification

Column Required Format Description
date Yes ISO 8601 UTC Timestamp of the transaction (e.g. 2024-03-15T14:32:00Z or 2024-03-15 14:32:00)
type Yes Enum BUY, SELL, TRADE, DEPOSIT, WITHDRAWAL, INCOME, GIFT_IN, GIFT_OUT, LOST, FEE
asset Yes Ticker (uppercase) Asset you received or sold (e.g. ETH, BTC, USDC)
amount Yes Decimal, always positive Quantity of the asset. Always positive: the type determines the direction.
price_eur Optional Decimal (EUR / unit) EUR price per unit at the time of the transaction. Looked up automatically if left empty.
fee_amount Optional Decimal Transaction fee paid (quantity).
fee_asset Optional Ticker (uppercase) Asset of the transaction fee (e.g. EUR, ETH). Required when fee_amount is filled in.
exchange Optional Free text Name of the exchange or source (e.g. Bitvavo, Kraken, OTC). Shown in reports.
tx_id Strongly recommended Free text Exchange transaction ID or blockchain tx hash. Prevents duplicate imports on repeated uploads.
notes Optional Free text Free-form note included in the accountant report.

Transaction types and tax treatment

Each type has a specific tax treatment under Belgian tax law. Use the correct type per transaction for an accurate return.

Type Description Belgian tax treatment
BUY Purchase of crypto against fiat or another asset Acquisition: added to the FIFO cost basis
SELL Sale of crypto against fiat or another asset Disposal: capital gain or loss calculated via FIFO
TRADE Swap of one crypto for another (two rows with the same tx_id) Swap: disposal of the asset sent out and a new acquisition of the asset received
DEPOSIT Transfer received from another wallet or exchange Internal transfer: not a taxable event
WITHDRAWAL Transfer sent to another wallet or exchange Internal transfer: not a taxable event
INCOME Staking rewards, lending interest, mining, airdrops and other crypto income Miscellaneous income: taxable as income at the moment of receipt
GIFT_IN Crypto received as a gift Gift received: a new cost basis is set at the moment of receipt
GIFT_OUT Crypto given away as a gift Gift given: no capital gains tax due
LOST Crypto lost through a hack, a lost private key or a technical error Loss: included in the cost calculation where applicable for tax purposes
FEE Explicit transaction fee (separate from the transaction itself) Deductible transaction fee

How the Custom CSV import works

Three steps to turn your transactions into a compliant Belgian report.

1

Download the CSV template

Download our template using the button above. It contains comment lines explaining each column and example transactions you can use as a reference.

2

Fill in your transactions

Open the file in Excel, Numbers or a text editor. Fill in your transactions row by row. Lines starting with # are comments and are skipped. Remove the example rows when you are done.

3

Upload in the wizard

Go to "Add wallet" and choose "Custom CSV". Upload your completed file. We process everything immediately, calculate your Belgian tax and generate a report you can share with your accountant.

Automatic deduplication: upload multiple times without duplicate transactions via tx_id.
TRADE pairs are linked automatically via tx_id for correct swap processing.
INCOME transactions are labeled as miscellaneous income in line with Belgian tax rules.

Supported transaction types

Our Custom CSV format covers all common crypto activities that are tax relevant in Belgium.

BUY / SELL

Purchases and sales of crypto against fiat or other assets. The foundation of your FIFO calculation.

TRADE

Swapping one crypto for another (e.g. ETH for USDC). Use two rows with the same tx_id for automatic pairing.

INCOME

Staking rewards, lending interest, airdrops and other income. Included as miscellaneous income in the report.

DEPOSIT / WITHDRAWAL

Transfers between exchanges or wallets. Not a taxable event, but included in the audit trail for your accountant.

GIFT_IN / GIFT_OUT

Receiving or sending crypto as a gift. Tax treatment in line with the Belgian guidelines for crypto gifts.

LOST / FEE

Lost crypto (e.g. a hack, a lost wallet) and explicit transaction fees. Processed correctly in the cost deduction where applicable.

Frequently asked questions

Can I combine transactions from multiple exchanges?

Yes. Just add them as extra rows in the same CSV file. You can use the exchange column to label the source per transaction. You can also upload multiple files: we combine everything into one portfolio.

What is the tx_id for?

The tx_id is a unique identifier per transaction (e.g. the exchange ID or a blockchain tx hash). We use it for two purposes: deduplication on repeated uploads, and pairing TRADE rows (two rows with the same tx_id are treated as one swap).

What if I do not know the price in EUR?

Leave price_eur empty. We automatically look up the historical EUR price via our price databases. For accuracy we recommend filling in the price if you know it, but it is not required.

Which program can I use to fill in the file?

Microsoft Excel, LibreOffice Calc, Google Sheets or a simple text editor all work. Make sure you save as CSV (comma separated, UTF-8 encoding). Do not remove the comment lines (those starting with #): they are skipped automatically.

How do I record a TRADE (swap)?

A swap consists of two rows: one for the outgoing asset (e.g. ETH) and one for the incoming asset (e.g. USDC). Give both rows the same tx_id so we can pair them automatically as one swap. The type for both rows is TRADE.

Can I upload the file multiple times?

Yes. If you add extra transactions later, upload the full file again. With tx_id we detect which transactions are already processed and do not store them twice. Without tx_id we use a hash of the transaction data for deduplication.

Start your Custom CSV import now

Download the template, fill in your transactions and upload in the wizard. Within seconds you have a compliant Belgian tax calculation, with no subscription needed for the first analysis.

Fully GDPR compliant, no data sharing, Belgian infrastructure.