Belastingrapportages genereren voor je crypto trades met Python
Stel je voor: je hebt een jaar lang druk getraded met crypto, misschien via een algoritmische bot die je zelf in Python hebt gebouwd, of via een broker als Binance of Kraken. Je hebt winst gemaakt, verlies geleden, en nu komt de belastingdienst om de hoek kijken. Paniek?
Niet als je je data op orde hebt. Met een paar Python-scripts draai je in een middag een complete belastingrapportage uit, inclusief FIFO- of LIFO-berekeningen en export naar Excel of CSV. Geen urenlange handmatige excel-sheets meer, maar een automatische pipeline die je trades vanuit de API van je broker of exchange direct vertaalt naar belastingformulieren.
Waarom een Python-aangedreven belastingrapportage?
Belastingrapportages voor crypto zijn verplicht in Nederland vanaf een bepaalde drempel, en de Belastingdienst eist transparantie over je bezittingen en je winst/verlies.
Zonder goede data loop je het risico op boetes of een onnodig hoge aanslag. Met Python koppel je direct aan de API van je broker of exchange, zoals de Binance API, Kraken API of Bybit API, en haal je alle transacties op: aankopen, verkoop, staking rewards, air drops, en zelfs gas fees.
Je script berekent automatisch de juiste methodiek (FIFO, LIFO, of gemiddelde cost basis) en zet het om naar een format dat de Belastingdienst begrijpt. Een goed script bespaart je tientallen uren werk per jaar. Je kunt het inzetten voor één exchange, of voor een combinatie van exchanges en wallets. Je kunt het zelfs koppelen aan een trading bot die je hebt gebouwd met libraries als ccxt, pandas en numpy.
Zo zie je in één oogopslag wat je werkelijke rendement is, inclusief transactiekosten en slippage.
Dat is niet alleen handig voor de belasting, maar ook voor je eigen risicomanagement en portfolio-analyse.
De kern: hoe bouw je zo’n script stap voor stap?
Eerst verzamel je je data. Je kunt je transacties via de API ophalen, of als backup een CSV-export van je broker gebruiken.
Voor Binance kun je de ‘/api/v3/account’-endpoint gebruiken, voor Kraken de ‘/private/TxHistory’ en voor Bybit de ‘/v2/private/wallet/transactions’. Zorg dat je API-keys beveiligd zijn met environment variables, nooit hardcoded. Vervolgens laad je de data in een pandas DataFrame, waarbij je kolommen normaliseert: timestamp, base_asset, quote_asset, quantity, price, fee, en trade_type (buy/sell).
Hierna pas je de juiste berekeningsmethodiek toe. In Nederland mag je FIFO (First In, First Out) gebruiken, of de gemiddelde cost basis.
Voor LIFO moet je soms expliciet kiezen, afhankelijk van je broker. Je script loopt door elke buy en sell, houdt een ‘inventory’ bij per asset, en berekent de winst of het verlies per transactie.
Vergeet niet om kosten correct toe te wijzen: handelskosten, netwerkfees en eventuele withdrawal fees. Je kunt ook staking rewards en air drops als aparte inkomsten categoriseren, met de juiste marktwaarde op het moment van ontvangst. Na de berekening exporteer je de data naar een format dat de Belastingdienst accepteert. Een CSV met kolommen zoals ‘datum’, ‘asset’, ‘aantal’, ‘aankoopprijs’, ‘verkoopprijs’, ‘winst/verlies’, en ‘kosten’ werkt vaak goed.
Je kunt ook een Excel-sheet genereren met openpyxl, inclusief tabbladen voor verschillende assets en een samenvatting voor je aangifte. Als je meer wilt, bouw je een eenvoudige Streamlit-app of FastAPI-endpoint om de rapportage interactief te maken, zodat je snel verschillende scenario’s kunt testen.
Varianten en modellen: van simpel tot geavanceerd
Voor beginners is een simpel script met ccxt en pandas vaak voldoende. ccxt ondersteunt tientallen exchanges, waaronder Binance, Kraken, Bybit, en Bitvavo. Je kunt een eenvoudige arbitrage bot bouwen tussen Kraken en andere exchanges, of een script maken dat één keer per maand je transacties ophaalt en een CSV genereert.
Kosten: nul, als je zelf codeert. Tijd: een weekendje bouwen en testen.
Als je minder tijd hebt, kun je een kant-en-klaar open-source project zoals ‘cryptotax’ of ‘cointracker’ aanpassen, maar die zijn soms minder flexibel voor custom trading bots. Wil je meer geavanceerde features, zoals automatische herkenning van DEX-transacties via een wallet-adres, of integratie met een eigen trading bot? Vergeet hierbij niet de nodige veiligheidsmaatregelen voor je crypto trading bot te implementeren. Dan bouw je een pipeline met meerdere modules: een dataverzamelaar, een berekeningsengine, en een rapportagegenerator.
Je kunt ook een database (SQLite of PostgreSQL) toevoegen voor historische data, en een scheduler (bijvoorbeeld cron of Airflow) om de rapportage maandelijks te laten draaien. Voor grotere portefeuilles kun je denken aan een cloud-oplossing op AWS of GCP, met kosten vanaf €5-€20 per maand, afhankelijk van je compute- en opslagbehoeften.
Een andere variant is het integreren van risicomanagement. Je script kan niet alleen belastinggegevens produceren, maar ook je drawdown, Sharpe-ratio en exposure per asset berekenen. Zo koppel je belastingrapportage direct aan je trading performance. Voor professionele gebruikers is een combinatie met backtesting-tools zoals Backtrader of Zipline logisch: je kunt je historische trades analyseren en tegelijkertijd je belastingimpact simuleren. De investering in tijd is hoger, maar de ROI is groot: je krijgt volledig inzicht en voldoet automatisch aan compliance.
Prijsindicaties en keuzes: wat kost het en wat kies je?
Een eigen Python-script bouwen kost vooral tijd: een ervaren ontwikkelaar doet er 8-20 uur over, een beginner misschien een weekend tot een week. Hosting is goedkoop: een kleine VPS kost €5-€10 per maand, en een database op SQLite is gratis.
Als je liever een kant-en-klaar platform gebruikt, zijn er diensten zoals CoinTracking (vanaf €10 per maand) of Koinly (vanaf €20 per jaar), maar die zijn minder flexibel voor custom trading bots en algoritmische strategieën. Voor een geavanceerde setup met meerdere exchanges, een database, en een webinterface, reken je op een investering van €500-€2000 in developmenttijd, plus €10-€30 per maand aan hosting. Als je een trading bot draait met hoge frequentie, kan het lonen om een professionele tool te bouwen die realtime belastingimpact berekent, zodat je geen verrassingen krijgt aan het einde van het jaar.
Denk ook aan de kosten van API-limits: bij Binance is je standaardlimiet 1200 requests per minuut, maar voor grote datasets kun je extra limieten aanvragen.
Kies je model op basis van je handelsgedrag. Ben je een actieve trader met 1000+ transacties per jaar, ga dan voor een robuuste pipeline met een database en automatische validatie. Handel je incidenteel, dan volstaat een simpel CSV-script. Zorg dat je altijd een backup hebt van je raw data, en test je berekeningen met een paar bekende transacties om fouten te voorkomen. Een goede testset met 10-20 trades helpt je om FIFO- en fee-berekeningen te valideren.
Praktische tips voor een soepele belastingrapportage
Begin met het verzamelen van je data. Vraag bij elke exchange een export op, ook als je de API gebruikt.
Controleer of timestamps in UTC staan en of alle fees correct zijn geregistreerd.
Gebruik environment variables voor je API-keys en sla ze nooit in je code op. Als je een trading bot draait, log dan elke trade meteen in een gestructureerd formaat, zodat je later geen data mist. Test je script met een paar bekende scenarios.
Neem een eenvoudige buy-sell van 1 BTC, koop bij €30.000, verkoop bij €35.000, met een fee van 0,1%. Bereken de winst handmatig en vergelijk met je script.
Voeg daarna complexere gevallen toe: staking rewards, air drops, en transfers tussen wallets. Zo weet je zeker dat je script robuust is. Houd rekening met de belastingregels. In Nederland betaal je vermogensbelasting over je crypto, en over je winst uit handel.
De exacte tarieven wijzigen jaarlijks, dus zorg dat je script de juiste percentages toepast of een parameter heeft die je eenvoudig aanpast.
Als je twijfelt over de methodiek, raadpleeg een belastingadviseur die bekend is met crypto, of test je rapportage vooraf met een kleine aangifte. Automatiseer zoveel mogelijk. Zet je script op een scheduler, zodat het maandelijks draait en je altijd up-to-date bent.
Gebruik een eenvoudige Streamlit-app of FastAPI-endpoint om je rapportage interactief te maken, zodat je snel verschillende scenario’s kunt bekijken. En vergeet niet om je code te versiebeheer met Git, zodat je wijzigingen kunt terugdraaien en samenwerkt met anderen.
Met deze aanpak draai je in een middag een sluitende belastingrapportage uit, zonder stress en zonder fouten. Je houdt tijd over voor wat echt telt: je trades verbeteren, je risicomanagement aanscherpen, en je portfolio laten groeien. En dat allemaal met een warme kop koffie en een script dat precies doet wat jij wilt.
