Deze gids biedt praktische Beancount-sjablonen en voorbeelden uit de praktijk voor veelvoorkomende cryptoscenario's. Kopieer en pas deze sjablonen aan voor jouw eigen cryptoboekhouding-behoeften.
Hoe lees je deze blokken
Elk blok hieronder is één van drie dingen, en ze zijn niet onderling verwisselbaar:
- Sjablonen bevatten
[TUSSENHAKJES]-plaatsaanduidingen enJJJJ-MM-DD-datums. Ze laden niet totdat je echte waarden invult — de vierkante haakjes zijn geen Beancount-syntax. - Voorbeelden staan direct onder hun sjabloon, bevatten echte datums en bedragen, en zijn geschreven om te laden. Elk voorbeeld vereist nog steeds dat de gebruikte rekeningen geopend zijn, waarvoor het Rekeningstructuursjabloon hieronder dient. De enige uitzondering is het reconciliatieblok, dat saldi bevestigt die alleen jouw eigen administratie kan waarmaken.
- Het Flashlening-arbitrage-blok is pseudocode en wordt als zodanig aangeduid waar het voorkomt.
Er lopen twee conventies door alles heen:
- Inkomensrekeningen bevatten credits, dus ze zijn negatief. Een gerealiseerde winst is een negatieve boeking naar
Income:CapitalGains:…; een gerealiseerd verlies is een positieve boeking naarExpenses:CapitalLoss:…. Als je dit omdraait, is dit de meest voorkomende reden waarom een crypto-boeking niet klopt. - Een vergoeding wordt één keer geboekt als uitgave en één keer als vermindering van contant geld. Bruto-opbrengsten gaan naar de geldrekening, de vergoeding komt er weer uit, en het verschil is wat er daadwerkelijk op je rekening binnenkomt.
Verken een live cryptocurrency-voorbeeldadministratie:
Basissjabloon voor opzet
Sjabloon voor rekeningstructuur
; =============================================================================
; CRYPTOCURRENCY ACCOUNT SETUP TEMPLATE
; =============================================================================
; Bank Accounts
1970-01-01 open Assets:Checking
; Exchange Accounts
1970-01-01 open Assets:Crypto:Coinbase:USD
1970-01-01 open Assets:Crypto:Coinbase:BTC
1970-01-01 open Assets:Crypto:Coinbase:ETH
1970-01-01 open Assets:Crypto:Binance:USD
1970-01-01 open Assets:Crypto:Binance:BTC
1970-01-01 open Assets:Crypto:Binance:ETH
1970-01-01 open Assets:Crypto:Binance:BNB
1970-01-01 open Assets:Crypto:Binance:ADA
; On-Chain and Mining Accounts
1970-01-01 open Assets:Crypto:Ethereum:ETH
1970-01-01 open Assets:Crypto:Polygon:ETH
1970-01-01 open Assets:Crypto:Mining:BTC
; Wallet Accounts
1970-01-01 open Assets:Crypto:Wallet:Ledger:BTC
1970-01-01 open Assets:Crypto:Wallet:Ledger:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:USDC
1970-01-01 open Assets:Crypto:Wallet:MetaMask:UNI
; DeFi Protocol Accounts
1970-01-01 open Assets:DeFi:Uniswap:ETH-USDC-LP
1970-01-01 open Assets:DeFi:Compound:CUSDC
1970-01-01 open Assets:Staking:Ethereum:ETH
; Income Accounts
1970-01-01 open Income:Crypto:Staking:ETH
1970-01-01 open Income:Crypto:Mining:BTC
1970-01-01 open Income:Crypto:Airdrops
1970-01-01 open Income:Crypto:DeFi:Yield
1970-01-01 open Income:CapitalGains:Crypto
1970-01-01 open Income:CapitalGains:LongTerm
; Expense Accounts
1970-01-01 open Expenses:Crypto:Fees:Trading
1970-01-01 open Expenses:Crypto:Fees:Network
1970-01-01 open Expenses:Crypto:Fees:Withdrawal
1970-01-01 open Expenses:Crypto:Bridge:Fees
1970-01-01 open Expenses:Crypto:Mining:Electricity
1970-01-01 open Expenses:CapitalLoss:Crypto
; Commodity Definitions
1970-01-01 commodity BTC
name: "Bitcoin"
asset-class: "cryptocurrency"
1970-01-01 commodity ETH
name: "Ethereum"
asset-class: "cryptocurrency"
1970-01-01 commodity USDC
name: "USD Coin"
asset-class: "stablecoin"
; Compound writes this receipt token "cUSDC", but a Beancount commodity
; and every account component must start with a capital letter or a digit,
; so the ledger spells it CUSDC and keeps the display name in metadata.
1970-01-01 commodity CUSDC
name: "cUSDC (Compound USD Coin)"
asset-class: "defi-receipt"Handelssjablonen
Basis aankoop van cryptocurrency
; Template: Buy cryptocurrency on exchange
YYYY-MM-DD * "Buy [AMOUNT] [CRYPTO] on [EXCHANGE]"
Assets:Crypto:[EXCHANGE]:[CRYPTO] [AMOUNT] [CRYPTO] {[PRICE] USD}
Assets:Crypto:[EXCHANGE]:USD -[TOTAL_COST] USD
Expenses:Crypto:Fees:Trading [FEE] USD
Assets:Crypto:[EXCHANGE]:USD -[FEE] USD
; Example: Buy 1 BTC on Coinbase
2024-01-15 * "Buy 1 BTC on Coinbase"
Assets:Crypto:Coinbase:BTC 1.0 BTC {45000.00 USD}
Assets:Crypto:Coinbase:USD -45000.00 USD
Expenses:Crypto:Fees:Trading 50.00 USD
Assets:Crypto:Coinbase:USD -50.00 USDVerkoop van cryptocurrency
; Template: Sell cryptocurrency on exchange
YYYY-MM-DD * "Sell [AMOUNT] [CRYPTO] on [EXCHANGE]"
Assets:Crypto:[EXCHANGE]:[CRYPTO] -[AMOUNT] [CRYPTO] {[COST_BASIS] USD} @ [SALE_PRICE] USD
Assets:Crypto:[EXCHANGE]:USD [GROSS_PROCEEDS] USD
Expenses:Crypto:Fees:Trading [FEE] USD
Assets:Crypto:[EXCHANGE]:USD -[FEE] USD
Income:CapitalGains:Crypto -[GAIN] USD ; a loss is a positive Expenses:CapitalLoss:Crypto instead
; Example: Sell 0.5 BTC with a gain
2024-03-20 * "Sell 0.5 BTC on Coinbase"
Assets:Crypto:Coinbase:BTC -0.5 BTC {45000.00 USD} @ 48000.00 USD
Assets:Crypto:Coinbase:USD 24000.00 USD ; gross proceeds, 0.5 * 48,000.00
Expenses:Crypto:Fees:Trading 30.00 USD
Assets:Crypto:Coinbase:USD -30.00 USD ; the fee leaves the same cash account
Income:CapitalGains:Crypto -1500.00 USD ; 24,000.00 proceeds - 22,500.00 basisHet verkochte lot is $22.500,00 waard tegen kostprijs, de verkoop brengt $24.000,00 bruto op, en $30,00 daarvan gaat naar de exchange — dus er komt $23.970,00 contant binnen en er wordt $1.500,00 winst gerealiseerd. Verreken de vergoeding niet met de winst: de vergoeding is al een uitgave, en deze een tweede keer aftrekken is wat de transactie uit balans brengt.
Crypto-naar-crypto-handel
; Template: Trade one crypto for another
YYYY-MM-DD * "Trade [AMOUNT1] [CRYPTO1] for [AMOUNT2] [CRYPTO2]"
Assets:Crypto:[EXCHANGE]:[CRYPTO1] -[AMOUNT1] [CRYPTO1] {[COST_BASIS] USD}
Assets:Crypto:[EXCHANGE]:[CRYPTO2] [AMOUNT2] [CRYPTO2] {[NEW_PRICE] USD}
Income:CapitalGains:Crypto -[GAIN] USD ; taxable event; a loss is a positive Expenses:CapitalLoss:Crypto
Expenses:Crypto:Fees:Trading [FEE] USD
Assets:Crypto:[EXCHANGE]:USD -[FEE] USD
; Example: Trade BTC for ETH
2024-02-10 * "Trade 1 BTC for 20 ETH on Binance"
Assets:Crypto:Binance:BTC -1.0 BTC {46000.00 USD}
Assets:Crypto:Binance:ETH 20 ETH {2400.00 USD}
Income:CapitalGains:Crypto -2000.00 USD ; 48,000.00 received - 46,000.00 basis
Expenses:Crypto:Fees:Trading 40.00 USD
Assets:Crypto:Binance:USD -40.00 USDEen crypto-naar-crypto-handel vervreemdt de eerste grondstof, dus realiseert het winst op precies dezelfde manier als een verkoop tegen contant geld: 20 ETH verworven tegen $2.400,00 is $48.000,00 aan ontvangen waarde tegenover $46.000,00 aan BTC-kostprijs. De $40,00 vergoeding wordt in contanten betaald en verandert de winst niet.
Overboeking-sjablonen
Overboeking van exchange naar wallet
; Template: Transfer crypto from exchange to wallet
YYYY-MM-DD * "Transfer [AMOUNT] [CRYPTO] from [EXCHANGE] to [WALLET]"
Assets:Crypto:[EXCHANGE]:[CRYPTO] -[AMOUNT] [CRYPTO] {[COST_BASIS] USD}
Assets:Crypto:Wallet:[WALLET]:[CRYPTO] [AMOUNT] [CRYPTO] {[COST_BASIS] USD}
Expenses:Crypto:Fees:Withdrawal [FEE] [CRYPTO] {[COST_BASIS] USD}
Assets:Crypto:[EXCHANGE]:[CRYPTO] -[FEE] [CRYPTO] {[COST_BASIS] USD}
; Example: Transfer BTC to Ledger
2024-01-20 * "Transfer 1 BTC from Coinbase to Ledger"
Assets:Crypto:Coinbase:BTC -1.0 BTC {45000.00 USD}
Assets:Crypto:Wallet:Ledger:BTC 1.0 BTC {45000.00 USD}
Expenses:Crypto:Fees:Withdrawal 0.0005 BTC {45000.00 USD}
Assets:Crypto:Coinbase:BTC -0.0005 BTC {45000.00 USD}Een overboeking is geen vervreemding, dus realiseert het niets: dezelfde {45000.00 USD}-kostprijs reist met de munten mee en de ontvangende rekening erft de kostprijs. Twee gevolgen volgen hieruit. De opnamevergoeding wordt in BTC betaald en wordt tegen diezelfde kostprijs als uitgave geboekt, dus realiseert het ook geen winst — als jouw behandeling iets anders zegt, prijs de vergoeding dan met @ en voeg een winstboeking toe. En de verzendende rekening moet al 1,0005 BTC tegen die exacte kostprijs bevatten, niet 1,0, omdat de vergoeding uit hetzelfde lot komt. Een vermindering zonder overeenkomstig lot kan niet worden geboekt, hoe goed de totalen ook optellen.
Overboeking tussen exchanges
; Template: Transfer between exchanges
YYYY-MM-DD * "Transfer [AMOUNT] [CRYPTO] from [EXCHANGE1] to [EXCHANGE2]"
Assets:Crypto:[EXCHANGE1]:[CRYPTO] -[AMOUNT] [CRYPTO] {[COST_BASIS] USD}
Assets:Crypto:[EXCHANGE2]:[CRYPTO] [AMOUNT] [CRYPTO] {[COST_BASIS] USD}
Expenses:Crypto:Fees:Network [FEE] [CRYPTO] {[COST_BASIS] USD}
Assets:Crypto:[EXCHANGE1]:[CRYPTO] -[FEE] [CRYPTO] {[COST_BASIS] USD}
; Example: Transfer ETH from Coinbase to Binance
2024-02-05 * "Transfer 10 ETH from Coinbase to Binance"
Assets:Crypto:Coinbase:ETH -10 ETH {2500.00 USD}
Assets:Crypto:Binance:ETH 10 ETH {2500.00 USD}
Expenses:Crypto:Fees:Network 0.01 ETH {2500.00 USD}
Assets:Crypto:Coinbase:ETH -0.01 ETH {2500.00 USD}Staking-sjablonen
Ethereum-staking
; Template: Stake ETH
YYYY-MM-DD * "Stake [AMOUNT] ETH"
Assets:Crypto:Wallet:MetaMask:ETH -[AMOUNT] ETH {[PRICE] USD}
Assets:Staking:Ethereum:ETH [AMOUNT] ETH {[PRICE] USD}
Expenses:Crypto:Fees:Network [FEE] ETH {[PRICE] USD}
Assets:Crypto:Wallet:MetaMask:ETH -[FEE] ETH {[PRICE] USD}
; Example: Stake 32 ETH
2024-01-10 * "Stake 32 ETH on Ethereum 2.0"
Assets:Crypto:Wallet:MetaMask:ETH -32 ETH {2500.00 USD}
Assets:Staking:Ethereum:ETH 32 ETH {2500.00 USD}
Expenses:Crypto:Fees:Network 0.01 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.01 ETH {2500.00 USD}Staking-beloningen
; Template: Receive staking rewards
YYYY-MM-DD * "[CRYPTO] Staking Rewards - [PERIOD]"
Assets:Staking:[PROTOCOL]:[CRYPTO] [AMOUNT] [CRYPTO] {[PRICE] USD}
Income:Crypto:Staking:[CRYPTO] -[VALUE] USD ; [VALUE] = [AMOUNT] * [PRICE]
; Example: ETH staking rewards
2024-02-01 * "ETH Staking Rewards - January"
Assets:Staking:Ethereum:ETH 0.08 ETH {2600.00 USD}
Income:Crypto:Staking:ETH -208.00 USD ; 0.08 * 2,600.00Een beloning is inkomen ontvangen in natura, dus de twee boekingen beschrijven dezelfde gebeurtenis van beide kanten: 0,08 ETH arriveert met een kostprijs van $2.600,00 per eenheid, en het overeenkomstige inkomen van $208,00 is een credit — negatief. De {2,600.00 USD} is een externe prijs die je zelf moet vinden; Beancount registreert het, het haalt het niet op. Noteer het van de exchange of index die je daadwerkelijk gebruikt, en houd dezelfde bron het hele jaar aan.
Dat $208,00 is vanaf nu ook de kostprijs van de beloning. Wanneer je uiteindelijk de 0,08 ETH verkoopt, is alleen de beweging sinds deze datum een winst — de $208,00 is al als inkomen belast en mag niet twee keer worden erkend. Of het inkomen belastbaar is bij ontvangst of bij vervreemding verschilt per rechtsgebied; de administratie registreert de feiten in beide gevallen.
DeFi-sjablonen
Uniswap-liquiditeitsverschaffing
; Template: Add liquidity to Uniswap pool
YYYY-MM-DD * "Add liquidity to [TOKEN1]-[TOKEN2] pool"
Assets:Crypto:Wallet:MetaMask:[TOKEN1] -[AMOUNT1] [TOKEN1] {[PRICE1] USD}
Assets:Crypto:Wallet:MetaMask:[TOKEN2] -[AMOUNT2] [TOKEN2] {[PRICE2] USD}
Assets:DeFi:Uniswap:[TOKEN1]-[TOKEN2]-LP [LP_AMOUNT] [LP_TOKEN] {[LP_PRICE] USD}
Expenses:Crypto:Fees:Network [FEE] ETH {[ETH_PRICE] USD}
Assets:Crypto:Wallet:MetaMask:ETH -[FEE] ETH {[ETH_PRICE] USD}
; Example: Add ETH-USDC liquidity
2024-01-15 * "Add liquidity to ETH-USDC pool"
Assets:Crypto:Wallet:MetaMask:ETH -10 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:USDC -25000 USDC @ 1.00 USD
Assets:DeFi:Uniswap:ETH-USDC-LP 100 UNI-V3-ETH-USDC {500.00 USD}
Expenses:Crypto:Fees:Network 0.02 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.02 ETH {2500.00 USD}Reconcileer dit grondstof voor grondstof: $25.000,00 aan ETH plus $25.000,00 aan USDC vertrekt, $50.000,00 aan LP-token arriveert, en de gasvergoeding verplaatst $50,00 aan ETH van de wallet naar een uitgave. De stablecoin-poot draagt @ 1,00 USD omdat deze zonder kostprijs wordt aangehouden — zonder de prijsannotatie is het gewicht 25.000 USDC, wat dollars niet kan opheffen. In veel rechtsgebieden is het storten in een pool zelf een vervreemding van beide tokens; deze boeking draagt opzettelijk de kostprijs over, dus voeg de winstboekingen toe als jouw behandeling dat vereist.
Compound-leningen
; Template: Supply assets to Compound
YYYY-MM-DD * "Supply [AMOUNT] [TOKEN] to Compound"
Assets:Crypto:Wallet:MetaMask:[TOKEN] -[AMOUNT] [TOKEN] @ [TOKEN_PRICE] USD
Assets:DeFi:Compound:C[TOKEN] [C_AMOUNT] C[TOKEN] {[C_PRICE] USD}
Expenses:Crypto:Fees:Network [FEE] ETH {[ETH_PRICE] USD}
Assets:Crypto:Wallet:MetaMask:ETH -[FEE] ETH {[ETH_PRICE] USD}
; Example: Supply USDC to Compound
2024-01-20 * "Supply 10000 USDC to Compound"
Assets:Crypto:Wallet:MetaMask:USDC -10000 USDC @ 1.00 USD
Assets:DeFi:Compound:CUSDC 500 CUSDC {20.00 USD}
Expenses:Crypto:Fees:Network 0.008 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.008 ETH {2500.00 USD}Twee dingen zorgen ervoor dat dit laadt. De USDC-poot draagt @ 1,00 USD, zodat beide kanten van de ruil in dezelfde valuta wegen — zonder dit ziet Beancount $10.000,00 aan CUSDC verschijnen tegenover 10.000 eenheden USDC die verdwijnen, wat verschillende grondstoffen zijn en elkaar niet opheffen. En het ontvangsttoken is CUSDC, niet cUSDC: een kleine beginletter is een lexerfout in zowel een rekeningonderdeel als een grondstofsymbool, hoe het protocol het ook spelt in zijn eigen interface.
Mining-sjablonen
Mining-beloningen
; Template: Receive mining rewards
YYYY-MM-DD * "[CRYPTO] Mining Reward - [POOL/SOLO]"
Assets:Crypto:Mining:[CRYPTO] [AMOUNT] [CRYPTO] {[PRICE] USD}
Income:Crypto:Mining:[CRYPTO] -[VALUE] USD ; [VALUE] = [AMOUNT] * [PRICE]
; Example: Bitcoin mining reward
2024-01-15 * "BTC Mining Reward - Slush Pool"
Assets:Crypto:Mining:BTC 0.01 BTC {45000.00 USD}
Income:Crypto:Mining:BTC -450.00 USD ; 0.01 * 45,000.00Mining-uitgaven
; Template: Mining operational expenses
YYYY-MM-DD * "Mining [EXPENSE_TYPE] - [PERIOD]"
Expenses:Crypto:Mining:[EXPENSE_TYPE] [AMOUNT] USD
Assets:Checking -[AMOUNT] USD
; Example: Mining electricity costs
2024-01-31 * "Mining Electricity - January"
Expenses:Crypto:Mining:Electricity 800.00 USD
Assets:Checking -800.00 USDAirdrop-sjablonen
Token-airdrops
; Template: Receive token airdrop
YYYY-MM-DD * "[TOKEN] Airdrop from [PROJECT]"
Assets:Crypto:Wallet:[WALLET]:[TOKEN] [AMOUNT] [TOKEN] {[PRICE] USD}
Income:Crypto:Airdrops -[VALUE] USD ; [VALUE] = [AMOUNT] * [PRICE]
; Example: UNI token airdrop
2024-03-01 * "UNI Airdrop from Uniswap"
Assets:Crypto:Wallet:MetaMask:UNI 400 UNI {8.00 USD}
Income:Crypto:Airdrops -3200.00 USD ; 400 * 8.00Net als een staking-beloning wordt de erkende waarde van de airdrop de kostprijs. Noteer de prijs die je kunt verdedigen — het eerste liquide bod van het token, van een bron die je noemt — in plaats van een rond getal.
Geavanceerde sjablonen
Flashlening-arbitrage
Dit blok is pseudocode, geen sjabloon. Het schetst de reeks waardebewegingen binnen een flashlening. Het zal niet laden, zelfs niet nadat je waarden invult, omdat de blanco regels tussen de groepen de transactie beëindigen — Beancount meldt een syntaxisfout op de boekingen die erna volgen. Registreer een echte flashlening als één transactie zonder blanco regels (label de poten met ingesprongen ;-commentaar) en laat de tussenliggende poten weg die binnen hetzelfde blok tot nul netten.
Pseudocode: flash loan arbitrage
borrow Assets:Crypto:Temp:FlashLoan +[LOAN_AMOUNT] [TOKEN]
Liabilities:DeFi:[PROTOCOL]:Flash -[LOAN_AMOUNT] [TOKEN]
execute Assets:Crypto:Temp:FlashLoan -[LOAN_AMOUNT] [TOKEN]
Assets:Crypto:Temp:Arbitrage +[RETURN_AMOUNT] [TOKEN]
repay Liabilities:DeFi:[PROTOCOL]:Flash +[LOAN_AMOUNT] [TOKEN]
Assets:Crypto:Temp:Arbitrage -[LOAN_PLUS_FEE] [TOKEN]
keep Assets:Crypto:Wallet:[WALLET]:[TOKEN] +[PROFIT] [TOKEN]
Income:Crypto:Arbitrage -[PROFIT_USD] USDAlles wat de lening aanraakte is aan het einde van het blok verdwenen, dus wat de administratie daadwerkelijk moet registreren is de winst en de protocolvergoeding. Het arbitragevoorbeeld in de portfolio-trackinggids toont de vorm van één transactie.
Cross-chain-bridge
; Template: Bridge assets across chains
YYYY-MM-DD * "Bridge [AMOUNT] [TOKEN] from [CHAIN1] to [CHAIN2]"
Assets:Crypto:[CHAIN1]:[TOKEN] -[AMOUNT] [TOKEN] {[PRICE] USD}
Assets:Crypto:[CHAIN2]:[TOKEN] [AMOUNT] [TOKEN] {[PRICE] USD}
Expenses:Crypto:Bridge:Fees [FEE] [TOKEN] {[PRICE] USD}
Assets:Crypto:[CHAIN1]:[TOKEN] -[FEE] [TOKEN] {[PRICE] USD}
; Example: Bridge ETH to Polygon
2024-02-05 * "Bridge 5 ETH from Ethereum to Polygon"
Assets:Crypto:Ethereum:ETH -5 ETH {2600.00 USD}
Assets:Crypto:Polygon:ETH 5 ETH {2600.00 USD}
Expenses:Crypto:Bridge:Fees 0.01 ETH {2600.00 USD}
Assets:Crypto:Ethereum:ETH -0.01 ETH {2600.00 USD}Belastinggeoptimaliseerde sjablonen
Belastingverlies-oogsten
; Template: Tax loss harvesting
YYYY-MM-DD * "Tax loss harvesting - Sell [CRYPTO] at loss"
Assets:Crypto:[EXCHANGE]:[CRYPTO] -[AMOUNT] [CRYPTO] {[HIGH_COST_BASIS] USD}
Assets:Crypto:[EXCHANGE]:USD [PROCEEDS] USD
Expenses:Crypto:Fees:Trading [FEE] USD
Assets:Crypto:[EXCHANGE]:USD -[FEE] USD
Expenses:CapitalLoss:Crypto [LOSS] USD
; Example: Harvest ADA loss
2024-12-15 * "Tax loss harvesting - Sell ADA at loss"
Assets:Crypto:Binance:ADA -1000 ADA {0.60 USD} @ 0.45 USD
Assets:Crypto:Binance:USD 450.00 USD ; gross proceeds, 1,000 * 0.45
Expenses:Crypto:Fees:Trading 5.00 USD
Assets:Crypto:Binance:USD -5.00 USD
Expenses:CapitalLoss:Crypto 150.00 USD ; 600.00 basis - 450.00 proceedsHet verlies is het spiegelbeeld van een winst: $600,00 aan kostprijs vertrekt, $450,00 aan bruto-opbrengst arriveert, en het verschil van $150,00 is een positieve boeking naar een uitgavenrekening. $445,00 aan contant geld is wat er daadwerkelijk binnenkomt, na de vergoeding van $5,00.
Langetermijn-kapitaalwinsten
; Template: Long-term capital gains sale
YYYY-MM-DD * "Long-term sale - [CRYPTO] held > 1 year"
date-acquired: "[PURCHASE_DATE]"
holding-period: "[DAYS] days"
Assets:Crypto:[EXCHANGE]:[CRYPTO] -[AMOUNT] [CRYPTO] {[COST_BASIS] USD} @ [SALE_PRICE] USD
Assets:Crypto:[EXCHANGE]:USD [GROSS_PROCEEDS] USD
Expenses:Crypto:Fees:Trading [FEE] USD
Assets:Crypto:[EXCHANGE]:USD -[FEE] USD
Income:CapitalGains:LongTerm -[GAIN] USD
; Example: Long-term BTC sale
2025-02-01 * "Long-term sale - BTC held 382 days"
date-acquired: "2024-01-15"
holding-period: "382 days"
Assets:Crypto:Coinbase:BTC -1.0 BTC {45000.00 USD} @ 55000.00 USD
Assets:Crypto:Coinbase:USD 55000.00 USD
Expenses:Crypto:Fees:Trading 50.00 USD
Assets:Crypto:Coinbase:USD -50.00 USD
Income:CapitalGains:LongTerm -10000.00 USD ; 55,000.00 proceeds - 45,000.00 basisDe winst is $10.000,00, niet $9.950,00: de vergoeding van $50,00 is al als uitgave geregistreerd, dus het verrekenen ervan met de winst zou het twee keer aftrekken. Income:CapitalGains:LongTerm is alleen een aparte rekening van Income:CapitalGains:Crypto zodat de aanhoudingsperiode zichtbaar is in een rapport — Beancount berekent geen aanhoudingsperioden voor je, daarom zijn de datum-verworven- en aanhoudingsperiode-metadata de moeite waard om bij te houden.
Reconciliatie-sjablonen
Maandelijkse saldoverificatie
; Template: Monthly balance assertions
YYYY-MM-DD balance Assets:Crypto:[EXCHANGE]:[CRYPTO] [EXPECTED_BALANCE] [CRYPTO]
YYYY-MM-DD balance Assets:Crypto:Wallet:[WALLET]:[CRYPTO] [EXPECTED_BALANCE] [CRYPTO]
; Example: January balance verification
2024-01-31 balance Assets:Crypto:Coinbase:BTC 2.5 BTC
2024-01-31 balance Assets:Crypto:Binance:ETH 15.0 ETH
2024-01-31 balance Assets:Crypto:Wallet:Ledger:BTC 1.0 BTCIn tegenstelling tot de andere voorbeelden hier is dit niet bedoeld als zelfstandig: de bedragen zijn wat jouw eigen exchangeschermen ook zeggen, en de assertie faalt totdat jouw transacties in de administratie staan — dat is het hele doel ervan. Merk op dat saldo het saldo controleert aan het begin van de genoemde dag, dus dateer de assertie de dag na de periode die je afsluit.
Prijsupdates
; Template: Daily price updates
YYYY-MM-DD price [CRYPTO] [PRICE] USD
; Example: Daily prices
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD
2024-01-15 price ADA 0.50 USDGebruiksinstructies
-
Kopieer het relevante sjabloon voor jouw transactietype
-
Vervang elke plaatsaanduiding. Een sjabloon is geen geldige Beancount totdat
JJJJ-MM-DDen elk[TUSSENHAKJES]-token verdwenen is — de vierkante haakjes zijn geen Beancount-syntax, en een overgebleven haakje is een parseerfout, geen stilletjes genegeerde waarde. Het vervangen is mechanisch:Plaatsaanduiding Vervanging Voorbeeld JJJJ-MM-DDde datum van de transactie 2024-03-20[BEDRAG]eenheden van de grondstof, zonder aanhalingstekens 0,5[CRYPTO]het grondstofsymbool, hoofdletters BTC[EXCHANGE]het rekeningonderdeel voor de locatie Coinbase[KOSTPRIJS]de kostprijs per eenheid van het lot dat je verwijdert 45000,00[VERKOOPPRIJS]de prijs per eenheid waartegen je verkocht hebt 48000,00[BRUTO_OPBRENGST][BEDRAG]×[VERKOOPPRIJS], vóór vergoedingen24000,00[VERGOEDING]de vergoeding van de locatie, in de valuta waarin deze is aangerekend 30,00[WINST][BRUTO_OPBRENGST]−[BEDRAG]×[KOSTPRIJS]1500,00Het invullen van die kolom in het Verkoop van cryptocurrency-sjabloon reproduceert het uitgewerkte voorbeeld dat eronder staat, wat de snelste manier is om te controleren of je het sjabloon correct hebt gelezen.
-
Pas rekeningnamen aan zodat ze overeenkomen met jouw rekeningstructuur, en zorg ervoor dat elke rekening wordt geopend door het Sjabloon voor rekeningstructuur — een rekening die nooit wordt geopend is een laadfout, geen waarschuwing
-
Voeg metadata toe indien nodig voor belastingaangifte of tracking
-
Controleer berekeningen met
bea --file jouw-bestand.bean checkvoordat je boekingen finaliseert. Een boeking die niet klopt, of die een lot vermindert dat je niet bezit, faalt daar in plaats van stilletjes een verkeerd rapport te produceren
Beste praktijken
- Gebruik consistente naamgevingsconventies
- Neem transactie-ID's op in metadata
- Documenteer complexe transacties grondig
- Controleer wisselkoersen en prijzen
- Onderhoud regelmatige back-ups van jouw bestanden
Deze sjablonen vormen een solide basis voor cryptocurrency-boekhouding in Beancount.io. Pas ze aan op basis van jouw specifieke behoeften en handelspatronen.