Skip to content
Cryptio Help Center home
Cryptio Help Center home

Importing transactions using the Custom CSV Template

Cryptio supports CSV imports for deposits, withdrawals, trades, and custom opening balances. You may need to import via CSV if you want to import historical balances, cost basis, or adjustments, or if Cryptio doesn’t yet support the chain or exchange you’re using. This ensures all of your data still ends up in Cryptio.

To make sure your data imports correctly, it’s important to use our official CSV template and follow the required formatting rules.

You can download the official CSV template here. While the template is shared as a Google Sheet, only CSV files are supported for imports. Formats like XLS or XLSX are not valid, so make sure to export your file as a CSV before uploading.

We are very strict on formatting. Even small mistakes (such as capital letters in the wrong place) will prevent your CSV from being uploaded successfully.

CSV Columns

When preparing your CSV, you’ll see the following headers:

transactionDate | orderType | txhash | incomingAsset | incomingVolume | incomingUnitRate | incomingTransactionValue | outgoingAsset | outgoingVolume | outgoingUnitRate | outgoingTransactionValue | feeAsset | feeVolume | feeUnitRate | feeTransactionValue | otherParties | note

Key Rules:

  • Deposits → only fill in incoming columns.

  • Withdrawals → only fill in outgoing columns.

  • Trades → fill in both incoming and outgoing columns.

  • Unit Rate vs. Value → only use one of these. If you fill in a unit rate, leave transaction value blank (and vice versa).

This design ensures that valuation data is included at the time of import, which simplifies cost basis calculations later.

Column Explanations

transactionDate

  • Mandatory.

  • Enter the exact date and time of the transaction in UTC if possible (not your workspace time zone, the time will automatically update once imported).

  • Format: YYYY-MM-DD HH:MM:SS (e.g., 2024-12-30 20:10:00).

orderType

  • Mandatory.

  • Must be lowercase:

    • deposit → money in

    • withdraw → money out

    • trade → exchange between two assets

  • The order type determines which other columns are required. For example, withdraw requires outgoingAsset and outgoingVolume.

Entries like Withdraw, DEPOSIT, or withdrawal are invalid.

txhash

  • Optional, but highly recommended.

  • This helps you differentiate, and easily find, transactions in Cryptio.

  • The unique transaction hash from the blockchain. You can also generate a unique, random hash per transaction if you don't have hashes.

  • Multiple rows can share the same txhash if they represent different movements from the same transaction. They will display as a complex transaction in Cryptio.

Asset Columns (incomingAsset, outgoingAsset, feeAsset)

  • Use the asset’s unique symbol (see Cryptio’s unique symbol list).

  • Some assets share the same ticker but have different contract addresses. For example:

    • AUSDT-2ae24 = AAVE V1 USDT

    • AUSDT-c09ca = AAVE V2 USDT

  • Popular tokens like BTC, ETH, and USDT use their standard ticker.

incomingAsset & incomingVolume

  • Required for deposit and trade.

  • Volume must use a dot as the decimal separator (e.g., 1000000.25).

  • Commas are not allowed (❌ 1,000,000).

outgoingAsset & outgoingVolume

  • Required for withdraw and trade.

  • Same volume formatting rules as above.

incomingUnitRate / incomingTransactionValue

  • Optional, but only one should be filled.

  • If you enter a unit rate, leave transaction value blank (and vice versa).

outgoingUnitRate / outgoingTransactionValue

  • Same rules as incoming rate/value.

Fees (feeAsset, feeVolume, feeUnitRate, feeTransactionValue)

  • Only required if the transaction has fees.

  • Use the same formatting rules as assets and volumes.

  • For fee-only transactions, use orderType withdraw, and just fill in the fee columns.

otherParties

  • Optional.

  • This should be the address of the other side of the transaction. For instance, for a deposit the otherParty is the address of the entity that sent you funds.

  • Despite the plural, you may only enter one value.

note

  • Optional free-text field for notes or comments.

  • You can filter for notes in Cryptio.

Adding Transactions to an Existing CSV

You can add new transactions to a previously uploaded CSV. However:

  • All rows in the file will be imported again.

  • If you re-upload old data, you may create duplicates.

  • To avoid this, only include new transactions in your updated CSV.

To upload:

  1. Go to Imports.

  2. Click on the source row.

  3. Select + Add transactions and upload your updated CSV.

Importing Opening Balances and Carrying Cost Basis

You can add transactions to existing sources. For instance, if you’ve already reconciled or processed past transactions and don’t want to re-import them, or if you have a start date on some of your sources, you will want to include opening balances. Many users migrating to Cryptio need to import closing balances and carry over cost basis from previous accounting.

For example:

  • If you’ve closed your 2024 books, you can import 2024 closing balances as opening balances, and carry over the cost basis using a custom CSV.

  • Then, start importing new sources from January 1st, 2025 onward.

Step 1: Create the Custom CSV Import File

  • Copy headers from the v2 transaction template into a new spreadsheet.

  • Use the format YYYY-MM-DD for dates.

  • For time, if your opening balance starts on Jan 1, 2025, use 2025-01-01 00:00:01 in your CSV. If you use 2024-12-31, the transaction won’t be recognized correctly.

Step 2: Populate the File

  • In Assets module, filter for the asset(s) in your closing balance.

  • Copy the unique token IDs.

  • In your Opening Balances file, fill in incomingVolume with the closing balance.

    • Note: All transactions should be deposits, unless you ended a period with a negative balance for an asset.

  • Add a note such as “opening balance” for easy identification.

  • Save and export the file as CSV.

Create one CSV per connector/wallet. For example, if your Dec 31, 2024 balance is split across Ethereum and Coinbase, you’ll need two files.

Step 3: Import the Custom CSV

  • Go to Imports > then find the source you'd like to add opening balances to.

  • Click anywhere on the row to open the Source Edition drawer, then select + Add transactions under Import Transactions.

  • Upload your CSV and click Update.

  • Repeat for other connectors.

For first-time users: please contact Cryptio Support. We’ll enable this feature for your workspace and guide you through the process.