For unsupported exchanges, you can still upload trade history by preparing for a custom file.
Please read the following instructions and create an Excel(.xlsx) or CSV (.csv) file, and upload it in "Custom" box at the upload screen of Cryptact.
Add transactions manually (custom trade)
PNL Calculation for DeFi / How to Create Custom File Entries
Transfers between your own addresses and accounts do not need to be included in your ledger. This is because these transfers do not impact your overall cryptocurrency balance (excluding fees).
Table of contents
1. The format of a custom file
2. Custom file examples - case by case
-
- Trades at unsupported exchanges, dealing with hard forks, send crypto to the third party for free
- Joined ICO
- Purchase goods or service by cryptocurrencies
- Mining
- Transfer fee
- Unsupported coins
- Missing prices
- Received coins by bonus, campaign, or AirDrop
- Lend coin, Interests from coin lending, and retrieve the coin
- Staking reward
- Derivative Transactions
- Borrowing/Returning between individuals
- LOSS
- Give a tip / Decrease the position
- Expense paid in Fiat currency
- SWAP
- Fees resulting from DeFi
- NFT
- Redenomination
- Liquidity
- Income in the fiat currency
- Details of the derivative transactions
1. The format of a custom file
1.1 Sample files
Please check the following files which contains all samples.
1.2 File headers
A | B | C | D | E | F | G | H | I | J |
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
1.3 The format
・(※1)When base currency is Supported Coins, if thie price field is empty and counter currency is fiat, cryptact will look up the price instead if we have the one.
・(※2)Please do not use 「'」「"」「\」as these symbols cause errors.
Name | Description |
Timestamp | Trade datetime in YYYY/MM/DD HH:mm:ss(Ex.:2016/12/23 12:23:34) |
Action | Please select action types from this link. |
Source | data source name (exchange or shop name). |
Base |
Base currency
Please choose from Supported Coins
|
Volume | Amount of change of base currency (in absolute value) |
Price |
Base currency price in Counter currency. (※1) |
Counter |
Counter currency
Please choose from the Supported Coins
|
Fee | Fee for the trade. Please input 0 if there was no fee for the trades. |
FeeCcy |
Fee currency
Please choose from the Supported coins
|
Comment | Optional. Please use this field for your own purpose as Cryptact doesn't use this.(※2). |
2. Custom file examples - case by case
2.1 Trades at unsupported exchanges, send crypto to the third party for free, and exchanges
Example 1: Buy 2BTC and pay total of 5 million JPY. The commission was 0 yen.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BUY | any | BTC | 2 | 2500000 | JPY | 0 | JPY | optional |
Example 2: Buy 2BTC at the market price. The commission was 0 yen.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BUY | any | BTC | 2 | Blank *1 | JPY | 0 | JPY | optional |
Example 3: Buy ETHBTC ( i.e. pay BTC to get ETH) at an unsupported exchange
You bought 2 ETH and paid BTC when the price of ETH was 0.5 BTC. The fee was 0.01 ETH.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BUY | any | ETH | 2 | 0.5 | BTC | 0.01 | ETH | optional |
Example 4: Gave coins away for free to a third party
Giving coins away for free to a third-party
Example 5: Currency exchange
I exchanged 149.0964 USDT for 413.75 XRP, and the fee was 0 JPY.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
exchange datetime | BUY | any | XRP | 413.75 |
0.360353836858006(149.0964/413.75)*1 |
USDT | 0 | JPY |
optional |
*1 USDT/XPR(149.0964/413.75)=0.360353836858006
2.2 Joined ICO
Example: You joined ICO of XP by sending ETH. You sent 10ETH and got 500XP.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BUY | any | XP | 500 | 0.02 *1 | ETH | 0 | JPY | optional |
*1 ETH/XP(10/500)=0.02
2.3 Purchase goods or services by cryptocurrencies
Example 1: You paid 0.01 BTC to get a product worth 5,000 JPY. Given the price of the product and the amount of BTC paid, the rate of BTC is 1BTC=500,000JPY.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime when you bought the product | PAY | any | BTC | 0.01 | 500000*1 | JPY | 0 | JPY*2 | optional |
*1 5,000/0.01 = 500,000
*2 Please make fee currency and counter currency to be the same.
Example 2: You paid 0.01BTC for a service whose price is quoted only in BTC.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime when you bought the product | PAY | any | BTC | 0.01 | Blank *1 | JPY | 0 | JPY*2 | optional |
*1 If you blank the price column and input fiat currency in counter column, cryptact will look up the price instead if we have the one.
*2 Please make fee currency and counter currency to be the same.
Example 3: Cryptocurrency XYZ was not in the supported coin list. You paid 5 XYZ for a product. You know 1 XYZ was 300 JPY at that time.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime when you bought the product | PAY | any | USER-XYZ *1 | 5 | 300 *2 | JPY | 0 | JPY*3 |
optional |
2.4 Mining
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime when you mined | MINING | any | ETH | 1 | blank*1 | JPY | 10 | USD |
optional |
Example 2: Mined a coin whose price is NOT available in cryptact. You mined LSK and got 10LSK. The LSK price at that time was 1,000JPY per LSK. The cost was 1 USD.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime when you mined | MINING | any | LS | 10 | 1000 | JPY | 1 | USD |
optional |
2.5 Transfer fee
Example 3: FeeCcy (fee currency) is not supported
・You will need to research the price of either coin yourself.
You purchased 2 ETH in BTC when the price of ETH was 0.01 BTC. You paid 1 LLL for the fee. LLL was not supported by Cryptact at the time, so the trade became invalid. 1 LLL was 50 JPY at the time.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BUY | any | ETH | 2 | 0.01 | BTC | 50 | JPY |
optional |
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | SELL | any | USER-LLL | 1 | 50*1 | JPY | 0 | JPY |
optional |
*1 You need to look up the price by yourself.
Example 4: You received a bonus in an unsupported coin
You participated in Exchange's Chat Campaign and received 0.1 LLL bonus reward. LLL was not supported by Cryptact at the time and the trade became invalid. You looked up the price by yourself and found that 1 LLL = 10 JPY.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp of when you received | BONUS | any | USER-LLL | 0.1 | 10*1 | JPY*2 | 0 | JPY *2 |
optional |
*1 You need to look up the price by yourself.
*2 "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
2.7 Missing prices
For example, if you search for "ELON", and if it is supported by Cryptact but Cryptact is missing prices for it, it would display "No price data available" for trade history.
Since price data cannot be obtained for "Missing Price" coins, if they are listed under counter currency or fee, they will be categorized as invalid transaction due to missing prices.
Example 1: you exchanged two supported coins and one of them is missing prices
*1 Please always include price missing coins in the base currency.
*2 10/1=10
Example 2: You exchanged two supported coins and both are missing prices
・Please research the price of either coin yourself.
Example 3: Price was missing for FeeCcy (fee currency)
・Please research the price of at least one of the coins yourself.
You bought 2 ETH in BTC when the price of ETH was 0.01 BTC. The fee was 1 ELON. Cryptact did not have the price for ELON at the time, so the trade became invalid. 1 ELON was 50 JPY at the time.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BUY | any | ETH | 2 | 0.01 | BTC | 50 | JPY |
optional |
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | SELL | any | ELON | 1 | 50*1 | JPY | 0 | JPY |
optional |
Example 4: you received a bonus in a coin with missing prices
You participated in Exchange's Chat Campaign and received 0.1 ELON bonus reward. Cryptact did not have prices for ELON at the time, so the trade became invalid. You looked up the price by yourself and found that 1 ELON = 10 JPY.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BONUS | any | ELON | 0.1 | 10*1 | JPY*2 | 0 | JPY *2 |
optional |
*1 Please look up the price by yourself.
*2 "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
2.8 Received coins by bonus, campaign, or AirDrop/hard fork
Example 1: You joined an exchange's trade campaign, and received 0.01BTC.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BONUS | any | BTC | 0.01 | blank *1 | JPY*2 | 0 | JPY *2 |
optional |
*1 If you blank the price column and input fiat currency in counter column, cryptact will look up the price instead if we have the one.
*2 "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
Example 2: You received BTC by hard fork.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
Trade datetime | BONUS | any | BTC | 10 | 0 *1 | JPY*2 | 0 | JPY *2 |
optional |
*1 Please input 0 for price, and fiat currency for counter. However, if the coin has price when you received it, please input the price.
*2 "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
2.9 Lend coin, interests from coin lending, retrieve the coin
Example: You lent 10ETH to an exchange, and received 0.1ETH as an interest, then retrieved 6ETH.
▼Lending ETHTimestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime when you lent | LEND | any*1 | ETH | 10 | blank *2 | JPY*3 | 0 | JPY |
optional |
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of the interest | LENDING | any*1 | ETH | 0.1 | blank *2 | JPY*3 | 0 | JPY |
optional |
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime when you retrieved | RECOVER | any*1 | ETH | 6 | blank *2 | JPY*3 | 0 | JPY |
optional |
*2 If you blank the price column and input fiat currency in counter column, cryptact will look up the price instead if we have the one.
*3 We only supports fiat currencies as Counter for this trade type.
2.10 Staking reward
Example: You got two LSK as a reward for staking.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of the interest | STAKING | any | LSK | 2 | blank *1 | JPY*2 | 0 | JPY |
optional |
*1 If you blank the price column and input fiat currency in counter column, cryptact will look up the price instead if we have the one.
*2 We only supports fiat currencies as Counter for this trade type.
2.11 Derivative Transactions
In cryptact, we advise the users to add derivative transactions by only focusing on the increase and decrease of margin.
The below examples only focus on the increase and decrease of margin.
Example1:Derivative trading results in a profit and a 0.1 increase in BTC, the margin.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of increase | BONUS | any | BTC | 0.1 | blank *1 | JPY*2 | 0 | JPY *2 |
optional |
*1 If you blank the price column and input fiat currency in counter column, cryptact will look up the price instead if we have the one.
*2 "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
Example2:Derivative trading results in a loss and 0.1 BTC is taken as margin.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of increase | LOSS | any | BTC | 0.1 | *1 | JPY*2 | 0 | JPY *3 |
optional |
*1 Leave the price blank.
*2 Only fiat currency is supported. If you enter cryptocurrency, an error will occur.
*3 "Fee currency" - In addition to fiat currency, you can input cryptocurrency (limited to cases where it is the same as the base currency). If the fee currency is the same as the base currency, the accounting currency equivalent of the incurred fee will be subtracted from the realized profit and loss of the corresponding transaction.
2.12 Borrowing/Returning between individuals
If interest is paid when repaying a loan, please upload a separate LOSS history. 2-13. Loss (Recorded as an expense)
Example: Borrowing 3BAT at compound, then returned.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of the borrowing | BORROW | any*1 | BAT | 3*1 | blank *2 | JPY*3 | 0 | JPY |
optional |
*3 We only supports fiat currencies as Counter for this trade type.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of the returning | RETURN | same as above *1 | BAT | 3*1 | blank *2 | JPY*3 | 0 | JPY |
optional |
*2 If you blank the price column and input fiat currency in counter column, cryptact will look up the price instead if we have the one.
*3 We only supports fiat currencies as Counter for this trade type.
2.13 LOSS
Example:The exchange was shut down and unable to retrieve 0.1 BTC holdings. Checking with the tax office in charge and confirmed that allowed to record a loss.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of loss | LOSS | Any | BTC | 0.1 | blank *1 | JPY*2 | 0 | JPY *3 |
optional |
*1 Leave the price blank.
*2 Only fiat currency is supported. If you enter cryptocurrency, an error will occur.
*3 "Fee currency" - In addition to fiat currency, you can input cryptocurrency (limited to cases where it is the same as the base currency). If the fee currency is the same as the base currency, the accounting currency equivalent of the incurred fee will be subtracted from the realized profit and loss of the corresponding transaction.
2.14 Decrease the position without affecting the profit and loss
Example:The exchange was shut down and unable to retrieve 0.1 BTC holdings. Checking with the tax office in charge and confirmed that not allowed to record a loss.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of giving a tip | REDUCE | Any | BTC | 0.1 | blank *1 | JPY | 0 | JPY |
optional |
*1 Please leave the price as blank.
2.15 Expenses paid in a fiat currency
Example: There is 2,000JPY in expenses that can be included in the cost of mining.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of payment | CASH | Any | JPY*1 | 0 | 0 | JPY*1 | 2000*2 | JPY *1 |
optional |
*1 Fiat currency only. If you paid in USD or other fiat currency, please fill USD in Base, Counter, and FeeCcy.
*2 Please input the amount in the fiat currency.
2.16 SWAP
・Depending on which coin you choose for the Base, the Action will change.
・Please refer to here when the transaction includes cryptact's non supported coins.
Example:Swapped 120 BUSD to 2 BNB
Example1):Base on BNB
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of SWAP | BUY*1 | Any | BNB | 2 | 60*2 | BUSD | 0 | JPY |
optional |
*1 Since BNB is Base currency, the action type will be BUY.
*2 BUSD/BNB(120/2)=60
Example2):Base on BUSD
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of SWAP | SELL*1 | Any | BUSD | 120 | 0.0166666666*2 | BNB | 0 | JPY |
optional |
*1 Since BUSD is Base currency, the action type will be SELL.
*2 BNB÷BUSD(2/120)=0.0166666666
2.17 Fees resulting from trading DeFi
Example: when you swapped tokens at PancakeSwap, you paid 0.01 BNB as the gas fee.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of SWAP | DEFIFEE | Any | BNB | 0.01 |
blank*1 |
JPY*2 | 0*2 | JPY*2 |
optional |
*2 Counter, Fee, FeeCcy columns are not used. Please input these columns as above.
2.18 NFT
Please refer to "How to create custom files for uploading NFT trades" for details.
2.19 Redenomination (change in the currency unit)
[EXAMPLE 1] 1 DREPOLD was redenominated and became 100 DREP
Method 1: Selling DREPOLD and buying DREP (This results in a PNL)
▼ Sell DREPOLD
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | SELL | Any | DREPOLD | 1 | blank (*2) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) If the Base is supported by Cryptact, Cryptact will look up the market price. If the Base is not supported and Cryptact does not have the price data, please find out the market price yourself and populate this column.
▼Buy DREP
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | BUY | Any | DREP | 100 (*2) | market price (*3) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) Quantity after the redenomination
(*3) Most likely, the new coin is not supported by Cryptact yet, therefore, please find out the market price yourself and populate this column. If it is supported and Cryptact has the price data, you can leave this column blank and Cryptact will look up the price.
Method 2: The book value of the position remains the same (no PNL is generated.)
▼ Sell DREPOLD
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | SELL | Any | DREPOLD | 1 | book price (*2) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) Please populate this column with the book price of the original coin.
▼Buy DREP
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | BUY | Any | DREP | 100 (*2) | please calculate the price based on the book price of DREPOLD (*3) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) Quantity after the redenomination
(*3) Please calculate the price based on the book price of DREPOLD. If the quantity changed from 1 to 100, you can calculate it by dividing the book price of DREPOLD by 100.
[EXAMPLE 2] 100 DREPOLD was redenominated and became 1 DREP
Method 1: Selling DREPOLD and buying DREP (This results in a PNL)
▼ Sell DREPOLD
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | SELL | Any | DREPOLD | 100 | blank (*2) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) If the Base is supported by Cryptact, Cryptact will look up the market price. If the Base is not supported and Cryptact does not have the price data, please find out the market price yourself and populate this column.
▼Buy DREP
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | BUY | Any | DREP | 1 (*2) | market price (*3) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) Quantity after the redenomination
(*3) Most likely, the new coin is not supported by Cryptact yet, therefore, please find out the market price yourself and populate this column. If it is supported and Cryptact has the price data, you can leave this column blank and Cryptact will look up the price.
Method 2: The book value of the position remains the same (no PNL is generated.)
▼ Sell DREPOLD
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | SELL | Any | DREPOLD | 100 | book price (*2) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) Please populate this column with the book price for the original coin.
▼Buy DREP
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | BUY | Any | DREP | 1 (*2) | please calculate the price based on the book price of DREPOLD (*3) | JPY | 0 | JPY | optional |
(*1) Redenomination datetime
(*2) Quantity after the redenomination
(*3) Please calculate the price based on the book price of DREPOLD. If the quantity changed from 100 to 1, you can calculate it by multiplying the book price of DREPOLD by 100.
2.20 Liquidity
The default calculation method focuses only on the difference in the number of coins deposited (Add Liquidity) and withdrawn (Remove Liquidity). The pnl is calculated only based on the difference.
Please refer to "PNL Calculation for DeFi / How to Create Custom File Entries" for details.
2.21 Income in the fiat currency
Example: Received 2000 yen from the exchange.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
timestamp (*1) | CASH | Any | JPY (*2) | 0 | 0 | JPY (*2) | -2000 (*3) | JPY (*2) | optional |
(*1) Date and time of when it was received
(*2) Supported fiat currency only. Please use the same currency for Base, Counter, and FeeCcy.
(*3) Please input the negative amount in the fiat currency.
2.22 Details of the derivative transactions
In cryptact, we advise the users to add derivative transactions by only focusing on the increase and decrease of margin. Please refer to 2.11 Derivative Transactions for more information.
However, if you want to include detailed information about derivative transactions, please download the custom file (in English) and add the headers "DerivType" and "DerivDetails" yourself. Fill in the details as shown below. However, note that while this method will calculate realized profits and losses in accounting currency, it will not reflect changes in the cryptocurrency set as margin. Therefore, you will need to calculate the changes in the margin (cryptocurrency) from the realized profits and losses, and upload the history of margin changes separately. Use "BUY" if the margin increases and "REDUCE" if the margin decreases, as this will not generate a profit or loss. (PNL calculation for each transaction type)
Example 1: In a derivative transaction, I held a position of 150 INC on the 'buy' side, and later closed it by 'selling' 150 INC."
Timestamp | Action | Source | Base | DerivType |
DerivDetails | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of starting derivative | BUY | any | INC | *1 | *2 | 150 | blank *3 | JPY | 0 | JPY |
optional |
Timestamp | Action | Source | Base | DerivType |
DerivDetails | Volume | Price | Counter | Fee | FeeCcy | Comment |
datetime of closing derivative | SELL | any | INC | *1 | *2 | 150 | blank *3 | JPY | 0 | JPY | optional |
*1 Specify one of fx/future/option/cfd.
*2 Provide details about the derivative product.
*3 If you blank the price column and input fiat currency in counter column, cryptact will look up the price instead if we have the one. Since cryptact does not obtain the prices of derivatives, it is also possible to list the prices of derivatives that you have researched yourself.