Are you using Bybit to trade spot, derivatives, or both? In that case, you must most likely report your gains and losses on your tax return each year. In this complete Bybit tax guide, we will explain everything you need to know about calculating and reporting your Bybit taxes and how to use Coinpanda to get your taxes sorted quickly!
January 4th, 2025
A brand new integration with Bybit has been released today. There are many critical changes to be aware of, so we highly recommend reading this article to understand better how to import your transaction history accurately.
How to import transactions
The first step to doing your Bybit taxes is to import the complete transaction history to Coinpanda. Since there are a few limitations to the Bybit API, we offer three ways of importing your transactions.
- Method 1: API only
- Method 2: CSV files only
- Method 3: Both API and CSV files
The most significant limitation of the Bybit API is that bot trading, copy trading, and dust conversions are not provided. As a result, if you have used Bybit’s bot or copy trading feature in the past, you must choose either the second or third method to import your transactions to Coinpanda.
Secondly, there are also some limitations with certain transactions (conversions, bonuses, rewards, etc) from current and old Classic accounts before upgrading to a UTA account.
Supported transaction types
Since it can be confusing to get a complete overview of all the limitations of the Bybit API and CSV file export functionality, we have summarized all supported transaction types and constraints in the table below:
API | CSV | |
---|---|---|
Deposits and withdrawals (crypto, fiat) | ||
Spot trades | ||
Conversions* | ||
Express orders** | ||
Pre-Market trading | ||
Coin exchange records (derivatives account) | ||
Leveraged tokens | ||
Subaccount transfers | ||
Bot Trading | ||
Copy Trading | ||
Dust conversions | ||
Realized PNL (linear, inverse, options) | ||
Trading fees (linear, inverse, options) | ||
Funding payments (linear, inverse, options) | ||
Repayments (spot margin, unified) | ||
Bonuses, rewards, coupons, airdrops*** | ||
BIT → MNT conversion | ||
Savings interest (Earn) | ||
NFT trade history**** | ||
Launchpad history**** | ||
Bybit Card**** | ||
P2P sales and purchases | ||
Loans (collateral, borrowings, repayments) |
** The API does not provide accurate data for the fiat amount sent or received (only crypto)
*** It appears to be some missing data from the API – please double check and make manual adjustments if required
**** In beta – please get in touch with support if you have any questions
NB! Bybit allows the export of CSV data starting January 1st, 2020. If you have older transactions, you may need to contact Bybit customer support and request a complete data export before this date.
Import methods
Next, we will explain the pros and cons of each import method, how to import transactions for maximum accuracy, and how to choose the best method for you.
API only
The most significant advantage of using API only is importing all transactions with a click of a button instead of regularly exporting CSV files from Bybit. This makes keeping your transaction history up-to-date in your Coinpanda account significantly easier.
However, because of the already mentioned limitations, using API as the only import method will not be an accurate solution if you have used the bot trading or copy trading feature or converted dust to Mantle (MNT
) or BitDAO (BIT
).
Because of these reasons, we recommend using API only if the following applies to you:
1. Never used Bybit’s Bot Trading feature
2. Never used Bybit’s Copy Trading feature
3. Never converted dust to MNT/BIT
4. Never used the Conversion feature before upgrading from Classic to UTA account
5. Never received bonuses, rewards, coupons, or airdrops in spot/fund account before upgrading from Classic to UTA account
If you answered yes to any of the statements above, the only option for importing your entire transaction history is using CSV files only or both API and CSV files.
But don’t worry – we will guide you through all the steps necessary to ensure your complete transaction history gets imported accurately!
CSV files only
Bybit made several changes to its CSV export last year and now offers an easier way of exporting your complete transaction history. While you had to create a support ticket in the past, you can now export all the required CSV files directly from your Bybit account.
NB! Unless there is a specific reason why you can’t or don’t want to use the Bybit API, we highly recommend using the API + CSV file method explained in the next section.
If you prefer to use the CSV files-only method, you can export all the required files by following these steps:
- Log in to your Bybit account and go to the ‘Export Account Statement’ page
(https://www.bybit.com/user/assets/exportStatment) - For Unified accounts, select all checkboxes:
- Account Change Details
- Trading Tools
- Bybit Savings
- Unified Trading Account
- For Classic accounts, you will see different checkboxes:
- Account Change Details
- Spot Orders
- Derivatives/Inverse Derivatives
- Trading Tools
- Bybit Savings
- Make sure ALL checkboxes are selected to ensure all files will get exported
- Select a custom date range up to one year, such as 2024-01-01 -> 2024-12-31
- Click ‘Export’
- If required, repeat the previous steps to export files containing transactions from all years
- Download the files when ready. Note that the requests may take 12-48 hours to complete.
The images below show the Export Account Statement page for both UTA and Classic accounts:
We can now upload all the required files after downloading them all. Please note that Bybit may include some files that you should NOT upload, but we still recommend that you export all files together for general bookkeeping purposes.
For UTA accounts, we recommend uploading the following files only:
Bybit_AssetChangeDetails_spot
Bybit_AssetChangeDetails_fund
Bybit_AssetChangeDetails_contract
Bybit_AssetChangeDetails_copytrading
Bybit_AssetChangeDetails_uta
Bybit_unifiedAccount_spotTradeHistory*
Bybit_unifiedAccount_preupgradeSpotOrdersTradeHistory*
For Classic accounts, we recommend uploading the following files only:
Bybit_AssetChangeDetails_spot
Bybit_AssetChangeDetails_fund
Bybit_AssetChangeDetails_contract
Bybit_AssetChangeDetails_copytrading
Bybit_spotOrders_spotTradeHistory*
The first file, AssetChangeDetails_spot
, contains all your spot account transactions, including deposits, withdrawals, and trades.
Important note regarding spot history
*We highly recommend uploading the Spot Trade History files, highlighted in red above, since each spot order will be imported as a single transaction instead of each trade separately from the Asset Change Details Spot file(s).
However, this means that you must delete all rows in the Asset Change Details Spot files with the text trade
and tradingFee
in the Type column. You will import duplicate spot trade transactions if you don’t do this.
If you decide to upload the Spot Trade History files as per our recommendation, there are three files to consider:
- UTA:
Bybit_unifiedAccount_spotTradeHistory
- UTA:
Bybit_unifiedAccount_preupgradeSpotOrdersTradeHistory
- Classic:
Bybit_spotOrders_spotTradeHistory
Coinpanda will import a single Trade transaction for each order to reduce the number of imported transactions for all these files.
As a third option to import your spot history, Coinpanda also supports the Trade History file, which can be exported directly from the Trade History page. Like the Spot Trade History file from the Export Account Statement page discussed above, Coinpanda will automatically aggregate all trades into a single order transaction, and you must manually delete all spot trades from the Asset Change Details Spot file to avoid duplicate transactions.
You can export this file by following these steps:
- Go to the spot trade history page
(https://www.bybit.com/user/assets/order/fed/spot-history/active) - Click on ‘Export’ in the top-right corner
- Select a custom date range up to six months, such as 2024-07-01 -> 2024-12-31
- Click ‘Export Now’
- Repeat the previous steps to export files containing transactions from all years
- Download the files when ready
This concludes all instructions for exporting and importing your spot trade history. Now, we can move on to the next category.
The second file, AssetChangeDetails_fund
, will include deposits and withdrawals directly to and from your fund account. The file may also contain airdrops, interest payments, conversions, and other transactions in the fund account.
The third file, AssetChangeDetails_contract
, contains all your derivative and futures transactions, including any bonuses or fee refunds in the account. Coinpanda will import realized PNL, trading fees, and funding payments separately to ensure maximum compliance with how derivatives trading is taxed.
The fourth file, AssetChangeDetails_copytrading
, contains all your derivative and futures transactions from Bybit’s Copy Trading platform. This file must be uploaded in addition to the AssetChangeDetails_contract
file, which does not include Copy Trading transactions.
The fifth and final file from the Asset Change Details type is the AssetChangeDetails_uta
file. This file may contain transactions like interest payments in the Unified Trading Account.
Both API and CSV files
Using both API and CSV files is generally recommended for most users. By doing this, you can import all transactions from API, except for what we mentioned: copy trading, bot trading, and dust conversions. In addition, depending on your account type, you may also need to import transactions such as bonuses, rewards, coupons, and airdrops from CSV files.
Here are some of the advantages of using this method:
- Using both API and CSV files will result in a 100% accurate transaction reconciliation for most users
- If you are trading spot or derivatives regularly, you can keep your transaction history up-to-date with the click of a button
- Trading fees and funding payments are imported separately from the realized pnl when imported from API
- Exporting copy trading, bot trading, and dust conversions as CSV files from Bybit is quick and easy
- Easily view both the reported and calculated balance, which helps ensure all transactions are imported accurately
There are three files from each year that you must potentially upload to import the missing transactions not provided by the Bybit API.
Next, we will explain how to prepare all files for maximum accuracy:
AssetChangeDetails_copytrading
Since this file contains only Copy Trading transactions that are not provided by the API, you do not need to edit or remove any rows. You can upload this file directly to your Bybit wallet without any modifications.
AssetChangeDetails_spot
This file may contain different transactions not provided by the API, such as airdrops or dust conversions. If you have any such transactions, you will need to delete all rows except for those with the following text in the Type column:
smallBalanceIntoBITReduceAsset
convertSmallBalanceIntoBITIncreaseAssets
airdropAssetIncrease
airdropAssetDeduction
An example of dust conversions is shown in the image below:
AssetChangeDetails_fund
This file may also contain other transactions not provided by the API, such as conversions, bonuses, rewards, coupons, and airdrops.
If you have any such transactions, you must delete all rows except those with the following text in the Description column:
Convert
Airdrop Bonus
An example of how this file may look like is shown in the image below:
The transaction types mentioned above (Convert
, Airdrop Bonus
, etc.) are the only types we have identified as not being provided by the API so far. If you notice other transactions not imported from API but found in any of the files listed below, please reach out in the chat so we can look into it.AssetChangeDetails_spot
AssetChangeDetails_fund
AssetChangeDetails_contract
AssetChangeDetails_uta
NB! Remember that Coinpanda will not import derivatives-related transactions from the current date since all such transactions (realized pnl, trading fees, funding payments) are aggregated into daily transactions to reduce the number of imported transactions. This means you might see a balance mismatch if you have either open derivatives positions or executed any trades on the same date you import from API.
Do you still see a mismatch between the calculated and reported balances unrelated to derivatives trades on the current date? In that case, we recommend reviewing the imported transactions and identifying any missing or wrongly imported transactions.
When you have identified one or more missing transactions, you can contact our customer support, who will troubleshoot this on our end, or escalate the issue internally if it can be fixed.
Subaccounts
Coinpanda has full support for Bybit subaccounts. Since transactions from your subaccounts are not provided by the API keys created in your main account, you must create separate API keys for each subaccount. This also means you must create a separate Bybit wallet for each subaccount in your Coinpanda account.
Transfers between your primary account and subaccounts, or between different subaccounts, will be imported automatically from API.
API modal setting
If you, for any reason, want to import your transaction history with API, excluding your spot trade history, you can do so by changing the import setting found in the API modal where you enter your API keys.
You can do this by clicking ‘Advanced Settings‘ in the API modal and toggling off the setting at the bottom for ‘Import spot trade history‘.
Remember to click ‘Update API Connection‘ to save the setting.
How to connect Bybit with API
Are you new to using Coinpanda or creating API keys from exchange accounts? This section will briefly explain how to connect your Bybit account with API.
First, go to the Add Wallet page and search for Bybit.
Once the modal is open, enter your API keys and click Add API Connection.
You can find instructions for creating API keys in our Bybit integrations article.
After adding your API keys, click the Sync Wallet button to start the import process. This usually takes between 25 and 50 minutes, depending on the number of transactions Coinpanda needs to import. Once completed, you will see a status message displaying the total number of transactions imported.
You can also view the holdings from your Bybit account, including spot, funding, and derivatives.
Unified Trading Account (UTA)
In 2023, Bybit introduced a new account type called ‘Unified Trading Account’ (UTA). This account type introduces changes to how historical transactions are exported from Bybit, but Coinpanda fully supports it to the extent that the Bybit API provides accurate data.
To determine whether your account is upgraded to UTA or is still a Classic account, hover over ‘Assets’ and look for ‘Unified Trading Account’ in the ‘Account’ section. If you don’t see this, your account is still a Classic account.
To learn more about the Bybit UTA account, please refer to their help article here.
Troubleshoot issues
Unsupported files
Coinpanda does not support all CSV files that can be exported from Bybit today. This is simply because not all files can be used to reconcile transaction history accurately for portfolio tracking or tax purposes.
Another reason might be that you have exported a CSV file in the past, but Bybit has now changed the header format. To avoid this, we recommend exporting all files again to ensure you have the latest version.
Some of the files that are NOT supported today are:
Bybit_Derivatives_orderhistory
Bybit_Derivatives_transactionhistory
Because there is no valid reason to upload these files, we do not plan on supporting them in the future either. Please refer to the earlier sections in this article for more information about the CSV files we recommend uploading instead.
Unknown transaction types (CSV)
When uploading the AssetChangeDetails_spot
file, you may see some transactions that failed to upload with the message Unknown transaction types, as seen in the image below.
In this case, you can send us a message in the live chat so our customer support team can notify our developers to update this. All updates for new transaction types are typically completed in 2-5 days.
Missing transactions (API)
Due to various limitations or challenges with fetching all historical transactions from the Bybit API, some spot- or derivatives-related transactions might not be imported from the API. This could be due to an issue we can investigate on our side. In this case, please get in touch with us in the live chat and provide all the details necessary for our support team to troubleshoot further:
- A list of the missing transactions you have identified
- Exported CSV file(s) containing all your transactions, including the transactions not imported from API
When our customer support team receives this, they will forward the request to our engineering team, which will investigate further.
Ensure accurate Bybit tax reports
In this section, we will briefly explain the most critical steps you must take to ensure your Bybit tax reports are as accurate as possible:
Connect all exchanges and wallet addresses
The most critical step is to make sure you have connected all your exchange accounts and wallet addresses to Coinpanda. This is a crucial step for several reasons. Still, the main reason is that Coinpanda needs your transactions from all exchanges and wallets to identify internal transfers and track the cost basis correctly. Coinpanda cannot correctly identify transactions sent between your accounts and which are taxable disposals without all transactions imported.
Verify the account balance
After connecting your Bybit account to Coinpanda, we recommend verifying that the calculated balance matches the reported balance. This can be done directly from the Wallet page, where you will see a yellow icon if the calculated balance differs from the reported balance. If you don’t see any warning icon, the wallet balance matches, and all transactions have most likely been imported correctly.
Internal transfers
By default, all Send transactions not identified as internal transfers will be treated as disposals and realize the gains or losses. After connecting all your exchange accounts and wallets, you should ensure that all transactions between your wallets are identified as such. There are several ways to do this, but one way is to filter for Receive or Send to see only the transactions not recognized as internal transfers.
Next, you can either mark the transaction as an internal transfer, or you need to connect another wallet or exchange account if you forgot this earlier.
Correctly identify tokens
The last crucial step is to verify that all transactions have been imported with the correct currency or token. Bybit supports many tokens and cryptocurrencies with the same ticker symbol as other cryptos, which may result in the wrong currency identified during import.
Luckily, this is a quick fix for our customer support team, so you don’t need to edit the transactions manually. Don’t hesitate to contact us in the live chat to get help if you need it.
Try Coinpanda for free
Coinpanda is one of the few crypto tax software solutions that can accurately calculate taxes for Bybit today. All you need to do is connect your Bybit account with API to your Coinpanda account and wait for all transactions to be imported automatically before exporting your tax reports and tax forms.
You can sign up for a 100% free account or read more about how the software can help you report your crypto taxes. Coinpanda supports over 65 countries today, including the US, Canada, Australia, the UK, and almost all other European countries.