Crypto verplaatsen tussen je eigen wallets en exchanges is geen verkoop, en dus geen belastbaar moment. Toch is het precies hier dat veel crypto-belastingsoftware de mist ingaat: een uitgaande en een inkomende transactie worden als twee losse gebeurtenissen geboekt, met phantom gains en een verkeerde kostenbasis als gevolg. Cryptotax herkent deze interne transfers automatisch en houdt je oorspronkelijke aankoopprijs intact, over al je accounts heen.
💡 Wat is transfer matching?
Wanneer je crypto van het ene account naar het andere stuurt - van Kraken naar je MetaMask, van een hot wallet naar je Ledger, of via een bridge van Ethereum naar Base - verkoop je niets. Je bezit nog steeds dezelfde coins. Volgens de Belgische meerwaardebelasting is een verplaatsing tussen je eigen adressen geen realisatie, dus er ontstaat geen belastbare meerwaarde.
Het probleem is dat de blockchain en de exchange-export dit niet als één beweging tonen. Je ziet 0,5 ETH verdwijnen op de ene plek en 0,5 ETH verschijnen op de andere. Transfer matching is het automatisch koppelen van die twee legs tot één niet-belastbare interne transfer, zodat je kostenbasis correct doorstroomt naar je nieuwe account.
🔍 Het probleem: phantom gains
Zonder matching wordt een interne verplaatsing aangezien voor een verkoop op het ene account, gevolgd door een aankoop op het andere. Het resultaat is een meerwaarde die nooit bestaan heeft, en een kostenbasis die op de marktprijs van het moment wordt gezet in plaats van je echte aankoopprijs.
Stel: je kocht 1 ETH voor €1.000. Later, wanneer ETH €2.000 waard is, verplaats je die ETH van je exchange naar je eigen wallet.
| Scenario | Belastbare meerwaarde nu | Kostenbasis na de verplaatsing |
|---|---|---|
| Zonder transfer matching | €1.000 (phantom gain) | €2.000 (te hoog) |
| Met transfer matching | €0 | €1.000 (origineel behouden) |
Zonder matching betaal je dus belasting op €1.000 winst die je niet hebt gerealiseerd, én is je toekomstige berekening fout: omdat je nieuwe basis op €2.000 staat, rapporteer je later te weinig winst bij de echte verkoop. Met matching blijft je basis €1.000 en wordt de meerwaarde pas berekend wanneer je daadwerkelijk verkoopt.
⚙️ Hoe Cryptotax interne transfers herkent
Onze engine combineert meerdere datapunten over al je verbonden wallets en exchanges. Pas wanneer genoeg signalen overeenkomen, koppelen we twee transacties als een interne transfer. Strikte criteria voorkomen dat we per ongeluk een echte verkoop verbergen.
- Timing - We zoeken naar een uitgaande en een inkomende beweging binnen een logisch tijdvenster. On-chain transfers zijn vrijwel direct, exchange-withdrawals kunnen langer duren.
- Bedrag - Het verstuurde en het ontvangen bedrag moeten overeenkomen, rekening houdend met gas- en netwerkkosten die onderweg worden afgehouden.
- Asset - Het moet om dezelfde asset gaan: ETH naar ETH, USDC naar USDC, inclusief gewrapte en cross-chain equivalenten.
- On-chain data - Transaction hashes en contractinteracties worden gelezen om bridge-patronen en directe transfers te herkennen.
Gas fees worden los geboekt als transactiekost, niet als onderdeel van de transfer. Wordt een leg niet automatisch herkend - bijvoorbeeld omdat het ontvangende account niet is gekoppeld - dan markeren we de transactie zodat je ze handmatig kunt bevestigen.
🌐 Cross-chain: kostenbasis-continuïteit bij bridges
Een bridge verplaatst dezelfde coin naar een andere chain, bijvoorbeeld ETH van Ethereum naar Arbitrum of Base. Dat is geen verkoop. Cryptotax koppelt de deposit- en withdrawal-leg van een bridge tot één continuity flow, zodat je oorspronkelijke aankoopprijs intact blijft, ongeacht op welke chain je asset zich bevindt.
- De legs worden gematcht op timing en waarde, en gematchte events delen dezelfde continuity-context.
- Bridge fees worden aan diezelfde flow gekoppeld, zodat alles auditbaar blijft.
- We herkennen veelgebruikte bridges zoals Across, Hop, Stargate, Orbiter en Circle CCTP over Ethereum, Base en Arbitrum.
Bridget een protocol meteen ook naar een andere asset (je stuurt ETH, je ontvangt USDC)? Dan is dat wél een belastbare swap, en behandelen we het als zodanig. Meer hierover lees je in Bridging en cross-chain fees.
🔀 Welke situaties we automatisch koppelen
| Scenario | Voorbeeld | Fiscaal |
|---|---|---|
| Exchange naar wallet | Kraken-withdrawal naar je MetaMask | Geen verkoop, basis behouden |
| Wallet naar wallet | Hot wallet naar je Ledger | Geen verkoop, basis behouden |
| Wallet naar exchange | Deposit om te verkopen of staken | Geen verkoop, basis behouden |
| Cross-chain bridge | ETH van Ethereum naar Base of Arbitrum | Geen verkoop, basis behouden |
| Withdrawal naar CSV-deposit | Exchange-opname die je elders als CSV importeert | Gekoppeld over accounts heen |
Omdat we transfers over al je accounts heen koppelen, werkt dit ook wanneer je bronnen elkaar aanvullen: een opname van een via API gekoppelde exchange die je op een ander platform via een CSV-export opnieuw binnenkrijgt, wordt herkend als dezelfde beweging. Zo blijft er één doorlopende kostenbasis, dezelfde logica die ook onze FIFO lot matching gebruikt.
🧾 Samenvatting
| Aspect | Hoe Cryptotax het aanpakt |
|---|---|
| Interne transfer | Geen belastbaar moment, automatisch herkend |
| Kostenbasis | Oorspronkelijke aankoopprijs blijft behouden |
| Bronnen | Alle wallets en exchanges samen, cross-account |
| Cross-chain | Bridge-legs gekoppeld via continuity flow |
| Niet herkend? | Transactie gemarkeerd voor handmatige bevestiging |
✅ Probeer het vandaag
Wil je zeker zijn dat verplaatsingen tussen je eigen accounts niet als verkoop worden gerapporteerd? Koppel je wallets en exchanges gratis en bekijk in je dashboard hoe transfer matching je kostenbasis intact houdt. Hoe meer accounts je koppelt, hoe vollediger we je interne transfers herkennen. Bekijk ook hoe we de gekoppelde lots tonen in je belastingrapport.
⚠️ Disclaimer: Dit artikel is louter informatief en geen individueel fiscaal advies. Voor concrete dossiers: raadpleeg een erkend Belgisch fiscalist of vraag een ruling bij de Dienst Voorafgaande Beslissingen.