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.
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
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.
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.
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.
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.
tx_id.
tx_id for correct swap processing.
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.
Other integrations
Combine your Custom CSV transactions with direct blockchain and exchange connections for a complete overview.
Kraken
Connect your Kraken account via API for automatic import of trades, staking and margin transactions.
Coinbase
Import all your Coinbase spot trades, earn rewards and staking via API connection.
Revolut
Import your Revolut crypto export as CSV, fully automatically processed in nl-BE and en-GB format.
Ethereum
Full support for Ethereum L1 including DeFi, staking and smart contract interactions.
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.