· four exchange APIs · rebuilt daily

The finding
Unrecorded asset transfers default to a zero USD acquisition value during tax audits, converting 100% of gross trade proceeds into taxable gain.
Exchanges track internal trade fills, leaving off-venue purchase prices and external collateral flows unlinked.
Funding payments and realized perpetual settlement amounts generate distinct taxable events on every settlement cycle.
Establishing your crypto tax cost basis requires adding the asset acquisition price to all directly incurred execution fees. Tax authorities in most jurisdictions treat every position closure, token-to-token swap, and margin liquidation as a taxable disposal. Specific tax rules vary by country, and this analysis details general ledger mechanics rather than tax advice.
When buying 1.0 BTC at 60,000.00 USDT on Bybit using a market order, the exchange assesses a 0.055% futures taker fee of 33.00 USDT. The effective crypto tax cost basis for that position entry is 60,033.00 USDT. Closing that position at 62,000.00 USDT incurs an additional 0.055% taker fee of 34.10 USDT, leaving net proceeds of 61,965.90 USDT. The realized taxable gain is calculated as 61,965.90 USDT minus 60,033.00 USDT, resulting in 1,932.90 USDT.
| Exchange | Futures Maker Fee | Futures Taker Fee | Entry Fee on 100,000 USDT Trade | Total Entry Cost Basis |
|---|---|---|---|---|
| MEXC | 0.0000% | 0.0200% | 20.00 USDT | 100,020.00 USDT |
| Bitget | 0.0020% | 0.0300% | 30.00 USDT | 100,030.00 USDT |
| OKX | 0.0020% | 0.0550% | 55.00 USDT | 100,055.00 USDT |
| Bybit | 0.0020% | 0.0550% | 55.00 USDT | 100,055.00 USDT |
Worth knowing
Taker fees increase your acquisition cost basis on open and decrease your net realized proceeds on close, reducing calculated taxable gain at both ends of a trade.
Perpetual contracts settle cashflows periodically rather than delivering underlying assets. Realized profit and loss attaches to your margin account balance when positions close or during daily settlement rounds. Funding payments received function as taxable income or realized short-term gain, while funding payments paid serve as allowable expenses or direct cost adjustments depending on local regulatory framework.
On ZEC perpetual markets, 8-hour funding rates display substantial cross-venue divergence. MEXC prints -0.0103%, OKX prints -0.0051%, Bitget prints -0.0035%, and Bybit prints +0.0100%. Holding a long position on MEXC yields a 0.0103% credit per 8-hour window, generating taxable income on each settlement cycle. Holding that same long position on Bybit incurs a 0.0100% debit per 8 hours, adding recurring fee outlays that alter your net realized position trade performance.
Where this goes wrong
Exchanges log funding distributions as internal balance updates. Exported CSV files often label these entries as generic cash movements, causing tax software to omit them from cost basis tracking.
Exchanges produce internal account logs, not compliant tax disclosures. A raw trade report documents executed order fills, margin movements, and account balances inside a single system. It contains no record of capital acquisition prices established prior to transferring funds onto the platform.
If you transfer 10,000 USDT from an external wallet into OKX to open a BTC position, OKX records an incoming transfer. The raw export does not capture when or at what fiat rate you bought that USDT. If you acquired that collateral when historical exchange rates differed, or deposited native ETH bought years earlier, the platform export treats the incoming deposit without historical acquisition data. In a formal tax examination, missing purchase records force auditors to assign a zero cost basis to the transferred collateral.
| Asset | Venue | Live 8h Funding Rate | 24h Trading Volume |
|---|---|---|---|
| ETH | MEXC | -0.0001% | 12,946,619,747 USDT |
| ETH | Bitget | +0.0011% | 12,946,619,747 USDT |
| ETH | OKX | +0.0036% | 12,946,619,747 USDT |
| ETH | Bybit | +0.0065% | 12,946,619,747 USDT |
For ETH contracts, long positions on MEXC pay -0.0001% per 8-hour period, while Bybit charges +0.0065%. This 0.0066 percentage point spread creates distinct tax cashflows across accounts. CSV exports capture the native token amounts paid or received, but omit the spot market fiat rates required to accurately record tax values at the precise minute of settlement.
What to do instead
Maintain clear off-exchange transaction logs with UTC timestamps to link original collateral purchase prices to exchange account margin deposits.
Posting collateral other than USD stablecoins adds another calculation layer. Using native BTC as collateral to trade ETH perpetuals creates a taxable collateral disposal whenever the exchange automatically sells margin assets to cover account drawdowns, funding payments, or liquidation events.
When a position faces liquidation on Bitget, the venue liquidates pledged collateral at current market rates. Tax rules classify this forced liquidation as an asset sale at market value. The net capital gain or loss equals the liquidation execution value minus the original purchase price of that collateral. If your record history lacks the initial deposit cost basis, tax software treats the entire liquidated sum as taxable capital gain despite the underlying trade ending in a net loss.
Realizing profit or loss upon position closure, receiving or paying funding payments, and converting non-stablecoin collateral assets all trigger taxable events. Swapping tokens to post margin also counts as a disposal.
Entry fees are added directly to the initial purchase value, raising the asset's starting cost basis. Exit fees are subtracted from gross sale proceeds, reducing the total reportable capital gain.
Exchange CSV exports only track internal venue trades and lack purchase prices for assets deposited from external wallets. They also record funding settlement payments without capturing the fiat market values needed for tax reporting.
Tax authorities assign a zero cost basis to assets with incomplete purchase histories. This forces the entire transaction value to be taxed as net capital gain.