Bot Trading Taxes: What Your Platform Won't Tell You
Your trading bot dashboard says you made $8,000 in profit this year. Your tax software says you owe tax on $23,000 in gains. Both numbers are technically correct — and understanding why they're different is the key to not overpaying your taxes.
If you use Bitsgap, 3Commas, Cryptohopper, Pionex, WunderTrading, or any other automated trading platform, this article is for you.
The dashboard vs. tax reality gap
Every bot platform shows you a profit/loss number. It's right there on your dashboard — a nice green number that represents how much money your bots have made.
The problem is that this number usually represents portfolio appreciation — the total value change of your holdings. It doesn't necessarily match your taxable gains, which are calculated on each individual trade.
Here's a simplified example of why:
Your grid bot buys 0.1 BTC at $60,000 and sells it at $62,000. Profit: $200. Taxable gain: $200. So far, so good.
But what if the bot bought 0.1 BTC at $60,000, then the price dropped to $58,000 (unrealised loss of $200), then rose to $62,000 and the bot sold? Your dashboard might show a $200 profit — the difference between buy and sell. Your tax liability is the same $200.
Now consider what happens when your bot is running a DCA strategy and has accumulated multiple lots at different prices, some of which haven't been sold yet. The dashboard shows your portfolio's current value versus what you put in. The tax calculation only cares about what you've actually sold — and at what cost basis.
The platform doesn't know your cost basis method. Are you using FIFO? LIFO? HIFO? Average cost? The answer materially affects your tax bill. Most bot platforms don't let you choose, and they certainly don't calculate it correctly for tax purposes.
Five things your platform doesn't tell you
1. Every single trade is a taxable event
When your grid bot executes 500 trades in a week, that's 500 individual taxable events. Each one needs a cost basis, a proceeds amount, a holding period determination (short-term vs long-term), and a gain or loss calculation.
Your platform knows it made these trades. It does not calculate the tax implications of each one. That's your problem.
2. Crypto-to-crypto swaps are taxable
Many bots trade pairs like ETH/BTC or SOL/USDT. When your bot swaps ETH for BTC, that's a disposal of ETH at its current market value. You need to calculate the gain or loss on the ETH you sold, even though you never touched fiat currency.
Some platforms show these as neutral "swaps" in their reporting. They're not neutral for tax purposes.
3. Trading fees affect your cost basis
Every trade your bot makes incurs a fee — usually 0.1% to 0.2% per transaction. Over thousands of trades, these fees add up. The good news: fees are typically added to your cost basis (for buys) or subtracted from proceeds (for sells), which reduces your taxable gain.
But most platforms don't include fees in their P&L calculations, and some don't even export fees in their CSV files. If you're not accounting for fees across 50,000 trades, you're likely overpaying tax.
4. Transfers between exchanges are not taxable — but break cost basis tracking
If you fund your Bitsgap-connected exchange account by transferring BTC from another wallet, the bot platform has no idea what you originally paid for that BTC. When the bot later sells it, the exchange reports the sale proceeds but can't report the cost basis.
This is especially problematic with the new US Form 1099-DA: the exchange will report the gross proceeds of the sale, but mark the cost basis as "non-covered." If you don't supply your own cost basis, the IRS may assume it's zero — meaning you'd owe tax on the entire sale amount, not just the profit.
5. Your bot's "profit" includes unrealised gains
Most bot dashboards include the current value of open positions in their profit calculation. If your DCA bot bought coins at an average of $1.00 and they're now worth $1.50, the dashboard shows a profit.
But you haven't sold anything. There's no taxable event. Your actual tax liability from that bot might be zero — or it might be massive, depending on which lots the bot has sold during the year.
The data export problem
Even when you try to do the right thing and export your data, bot platforms make it surprisingly difficult:
Inconsistent CSV formats. Every platform exports data differently. Some include fees, some don't. Some use UTC timestamps, others use your local timezone. Some combine buys and sells into one row, others separate them. Koinly, CoinTracker, and other tax software can import from major exchanges, but bot-specific transaction data often needs manual cleanup.
API limitations. Some exchanges limit how far back their API data goes. If your bot was running for two years and you need historical data, it might not be available anymore. Export regularly — don't wait until tax season.
Multi-exchange complexity. If your bot trades across multiple exchanges (which is common with platforms like Bitsgap that connect to 15+ exchanges), you need to aggregate and reconcile data from all of them. A trade on Binance and a trade on KuCoin made seconds apart by the same bot need to be tracked separately.
DCA, grid, and arbitrage — each has tax quirks
Grid bots generate the highest transaction volume. A typical grid bot might execute hundreds of trades per day, creating a massive number of small gains and losses. The good news: many of these small gains are offset by small losses within the grid. The bad news: every single one needs to be reported.
DCA bots are simpler from a tax perspective — they're just buying at regular intervals. But the cost basis for each purchase is different, which means when you eventually sell, the gain depends heavily on which lot you're selling (FIFO, LIFO, etc.).
Arbitrage bots create an interesting wrinkle: if the bot buys on Exchange A and sells on Exchange B, the transfer between exchanges isn't a taxable event — but it does break the cost basis chain for reporting purposes. You need to track the basis from the original purchase through the transfer to the final sale.
Futures and margin bots add another layer entirely. Leveraged positions, liquidations, and funding rates all have tax implications that most platforms don't clearly report. In many jurisdictions, futures contracts are taxed differently from spot trading.
What we see when bot traders come to us
After working with hundreds of bot traders, the same patterns repeat:
The platform shows $8,000 profit. Koinly shows $23,000 in gains. The client panics.
Almost always, the discrepancy comes from one of three things:
- Missing cost basis — crypto was transferred in from another wallet, so the tax software assigns zero cost basis, inflating gains
- Duplicate transactions — the exchange API and CSV export were both imported, doubling every trade
- Unrealised vs realised confusion — the client compares their platform's portfolio value against the tax software's realised gains number
When we reconcile the data properly — fixing duplicates, tracing cost basis across transfers, and applying the correct accounting method — the actual tax liability is almost always lower than what the raw import shows.
The fix: reconcile before you file
If you're using trading bots and staring at a tax report that doesn't match your platform, don't just file with whatever number Koinly or CoinTracker spits out. The default import is a starting point, not a finished product.
At minimum, you need to:
- Remove duplicate transactions from API + CSV double-imports
- Trace cost basis for any crypto transferred into the exchange
- Verify that your tax software is using the correct cost basis method for your jurisdiction
- Check that trading fees are properly accounted for
- Separate realised gains from unrealised portfolio appreciation
Or you can let us do it. We've reconciled portfolios with over 200,000 bot-generated transactions. We know exactly where Bitsgap, 3Commas, and other platforms' data breaks down, and how to fix it.
Tax season is here, and bots don't file their own taxes. Get a quote →
Need help with your crypto taxes?
Get a personalised quote — fixed pricing, no hourly billing.
Get Your Quote →