AI Summary
- It requires more manual effort, but it works for literally any transaction source.
- Use Custom File when your exchange or transaction source is not supported in KoinX integrations
- Download the template from Integrations → Custom File → Download Template File
- Every row in the file represents one transaction
- Three fields must always be filled: Date and Time (UTC), Type, and Label
- Other fields depend on what happened in that transaction
- Upload the completed template under Integrations → Add Integration → Custom File
- Only files in KoinX Custom File template format are accepted
When Should You Use Custom File?
Not every exchange or transaction source is supported directly in KoinX’s integration library. Maybe you:- traded on a smaller regional exchange
- executed OTC deals
- used a platform that no longer exists
- received crypto from an external wallet
- interacted with DeFi platforms that don’t have a native integration
How Custom File Works
The Custom File template is a structured spreadsheet. Each row describes one transaction, including:- what happened
- which assets moved
- how much was sent or received
- any fees involved
How to Upload a Custom File
Select Custom File from the integrations list.
You will see a page titled Integrate Custom File with an auto-generated wallet name such as: Custom File-1
Open and Fill the Document
Only files using this exact format can be uploaded. Open the template in Excel or Google Sheets. Each row represents one transaction.Fill the fields according to the guide below.
The Custom File upload area only accepts files in KoinX template format.You cannot upload a raw exchange CSV here.If your exchange is supported in KoinX, use the exchange-specific file upload integration instead.
Understanding the Template Structure
The template contains multiple columns so it can support every possible crypto transaction type. However, not every column applies to every transaction. We’re dividing this template to two parts:- Required Fields
- Transaction Data Fields
Required Fields (Always Needed)
These fields must be filled for every row. If any are missing, the file will fail to upload.-
Date and Time (UTC)
This is the exact timestamp of the transaction.
Format: YYYY-MM-DD HH:MM:SS
Example: 2023-05-30 14:34:25- Must use 24-hour format
- Must be UTC timezone
- Avoid letting Excel auto-format dates. A safe approach is to copy the example timestamp from the template and edit it. Spreadsheet software sometimes silently changes date formats, which can break the import.
-
Type
The Type describes the broad category of the transaction.
Allowed values:
Type Description Trade Exchange one asset for another Deposit Receiving crypto Withdrawal Sending crypto Margin Trade Margin trading transactions Futures Trade Futures trading transactions Expense Fees and costs -
Label
Label adds more detail about the transaction. The allowed labels depend on the Type you selected.
For example:
Labels must match the Type. Using an incompatible label will cause the upload to fail. Example:
Type Supported Labels Trade Margin TradeFutures Trade Swap, Buy, Sell, Swap
Note - Swap is only for Trade typeDeposit External Deposit, Collateral Unlock, Refund,
Reward, Airdrop, Staking Interest, Fixed Deposit Unlock,
Borrow, Lend Settlement, Receive from Pool, Receive Loan,
Funding Interest, Futures Realised Profit, Options Realised Profit,
Salary, Mining Income, Consultancy IncomeWithdrawal External Withdraw, Collateral Lock, Lend
Fixed Deposit Lock,
Borrow Settlement, Send to Pool, Repay Loan
Funding Fee, Futures Realised Loss, Options Realised Loss,
DonationExpense Futures Fee, Options Fee, Brokerage or Gas Fee,
Margin Interest Payment,
Mining Expense, Consultancy Expense
Transaction Data Fields
The remaining fields describe what assets moved in the transaction. You only fill the fields relevant to that transaction.-
Received Asset Fields
Use these when crypto was received.
Example: I received 1.5 ETH and the price during the transaction was 3000 USD.
Field Description Received Coin The asset received (BTC, ETH, USDT, etc.) Received Coin Amount Quantity received Received Coin Amount in
Base CurrencyValue in your base currency for entire quantity
(USD, EUR, INR etc.) -
Sent Asset Fields
Use these when crypto was sent.
Example:
Field Description Sent Coin The asset sent Sent Coin Amount Quantity sent Sent Coin Amount in Base Currency Value in base currency -
Fee Fields
Use these when a transaction fee was paid.
Example:
Field Description Fee Coin Asset used to pay the fee Fee Coin Amount Fee amount Fee Coin Amount in Base Currency Fee value in base currency -
TDS Fields
These apply only when tax was deducted at source.
Primarily relevant for Indian exchanges.
If no TDS applies:
Field Description TDS Coin Asset in which TDS was deducted TDS Coin Amount Quantity deducted TDS Coin Amount in Base Currency Value of TDS -
Address and Hash Fields
These are useful for blockchain transactions.
If unknown: -
Field Description From Address Source wallet address To Address Destination wallet address Transaction Hash Blockchain transaction ID -
Token Contract Fields
These identify tokens on EVM chains.
Field Description Received Coin Contract Address Token contract for received asset Sent Coin Contract Address Token contract for sent asset Only required for less common tokens.
Rules for Empty Fields
Do not leave cells blank. Use placeholders.| Field Type | Value to Enter |
|---|---|
| Coin fields | - |
| Amount fields | 0 |
| Address / hash fields | - |
Sample Scenarios:
Buying ETH using USDT
Buying ETH using USDT
Type: Trade
Label: BuyExample: Received 1.5 ETH and Sent 2850 USDT
Label: BuyExample: Received 1.5 ETH and Sent 2850 USDT
Receiving an Airdrop
Receiving an Airdrop
Type: Deposit
Label: AirdropExample - Received 500 ARB tokens
Label: AirdropExample - Received 500 ARB tokens
Sending BTC to another wallet
Sending BTC to another wallet
Type: Withdrawal
Label: External WithdrawExample - Sent 0.1 BTC
Label: External WithdrawExample - Sent 0.1 BTC
Paying Gas Fees
Paying Gas Fees
Type: Expense
Label: Brokerage or Gas FeeExample - Paid gas fee of 0.003 ETH
Label: Brokerage or Gas FeeExample - Paid gas fee of 0.003 ETH
Common Issues and Fixes
Upload fails with "Invalid Format"
Upload fails with "Invalid Format"
Most common cause:
- Incorrect timestamp format.
Make sure the format is: YYYY-MM-DD HH:MM:SS. And that the timezone is UTC. - Label does not match Type
Example mistake: Type: Trade and Label: Airdrop
This will fail because Airdrop is only allowed for Deposit.
Missing transaction details
Missing transaction details
If you don’t know certain values:
- Use
0for amounts - Use
-for coin names or addresses
Uploading more transactions later
Uploading more transactions later
You can upload multiple files to the same Custom File integration.Each upload will add new transactions.
Frequently Asked Questions
Can I upload a regular exchange CSV?
Can I upload a regular exchange CSV?
No. The Custom File integration only accepts KoinX template format.Use the exchange-specific integration if available.
What happens if base currency values are 0?
What happens if base currency values are 0?
KoinX will try to determine the market price at that timestamp using its pricing data.Providing values manually may improve accuracy for obscure tokens.
Do I need to fill TDS fields?
Do I need to fill TDS fields?
Only if TDS was actually deducted.Otherwise:
Can KoinX create the custom file for me?
Can KoinX create the custom file for me?