Crypto tax reporting via PULSE Protocol — collect trade history from Binance, Bybit, Kraken, and OKX in one command. Export to Koinly, CoinTracker, or JSON.
You trade on 3 exchanges. Each one stores your history differently. Koinly, CoinTracker, and every tax accountant want a CSV. You end up logging in to each exchange, hunting for the export button, downloading 3 different CSV formats, and converting them manually.
With pulse-tax: one command.
pip install pulse-taxpulse-tax initThis creates pulse_tax_config.json. Edit it to add your API keys (read-only keys are sufficient — no trading permissions needed):
{
"binance": {
"api_key": "YOUR_BINANCE_API_KEY",
"api_secret": "YOUR_BINANCE_API_SECRET"
},
"bybit": {
"api_key": "YOUR_BYBIT_API_KEY",
"api_secret": "YOUR_BYBIT_API_SECRET"
},
"kraken": {
"api_key": "YOUR_KRAKEN_API_KEY",
"api_secret": "YOUR_KRAKEN_API_SECRET"
},
"okx": {
"api_key": "YOUR_OKX_API_KEY",
"api_secret": "YOUR_OKX_API_SECRET",
"passphrase": "YOUR_OKX_PASSPHRASE"
}
}Remove exchanges you don't use.
# Export 2026 trades to Koinly CSV
pulse-tax export --year 2026 --format koinly
# Export to CoinTracker
pulse-tax export --year 2026 --format cointracker
# Export to JSON (backup / custom processing)
pulse-tax export --year 2026 --format jsonOutput files are created in the current directory:
koinly_2026.csv— import directly at koinly.comcointracker_2026.csv— import directly at cointracker.iopulse_tax_2026.json— full structured data
from pulse_tax import TaxCollector, KoinlyExporter
from pulse_tax.collectors import BinanceCollector, BybitCollector
# Configure exchanges
collector = TaxCollector()
collector.add_exchange(BinanceCollector(api_key="...", api_secret="..."))
collector.add_exchange(BybitCollector(api_key="...", api_secret="..."))
# Collect
report = collector.collect(year=2026, verbose=True)
print(f"{report.total_trades} trades from {report.exchanges}")
# Export
csv = KoinlyExporter().export(report.trades, report.transfers)
with open("koinly_2026.csv", "w") as f:
f.write(csv)| Exchange | Trades | Deposits/Withdrawals |
|---|---|---|
| Binance | Yes | Yes |
| Bybit | Yes (spot + perps) | Yes |
| Kraken | Yes | Yes |
| OKX | Yes (spot + futures) | Yes |
| Format | Service | How to import |
|---|---|---|
koinly |
Koinly | Imports > Add import > Universal CSV |
cointracker |
CoinTracker | Portfolio > Add transaction > CSV |
json |
Any | Custom processing |
pulse-tax is part of the PULSE Protocol ecosystem. PULSE provides a universal semantic interface for AI-to-AI and agent-to-service communication.
The same exchange adapters that pulse-tax uses for collecting history are also used by:
- pulse-binance for live trading
- pulse-bybit for Bybit integration
- AI trading agents built with pulse-anthropic (Claude) or pulse-openai (GPT)
pulse-tax only needs read-only API keys. It never places orders, never withdraws funds. Create a separate read-only key on each exchange specifically for tax reporting.
Apache 2.0 — free forever, open source.