Dieser Leitfaden bietet praktische Beancount-Vorlagen und reale Beispiele für gängige Kryptowährungsszenarien. Kopieren und passen Sie diese Vorlagen für Ihre eigenen Krypto-Buchhaltungsanforderungen an.
So lesen Sie diese Blöcke
Jeder eingefasste Block unten ist eines von drei Dingen, und sie sind nicht austauschbar:
- Vorlagen enthalten
[ECKIGE_KLAMMERN]-Platzhalter undYYYY-MM-DD-Datumsangaben. Sie werden nicht geladen, bis Sie echte Werte einsetzen — die Klammern sind keine Beancount-Syntax. - Beispiele stehen direkt unter ihrer Vorlage, tragen echte Daten und Beträge und sind so geschrieben, dass sie geladen werden. Jedes einzelne benötigt dennoch die Konten, die es berührt, geöffnet, wofür die Kontostruktur-Vorlage unten dient. Die einzige Ausnahme ist der Abstimmungsblock, der Salden behauptet, die nur Ihr eigenes Hauptbuch erfüllen kann.
- Der Flash-Loan-Arbitrage-Block ist Pseudocode und wird dort, wo er erscheint, als solcher gekennzeichnet.
Zwei Konventionen ziehen sich durch alle:
- Ertragskonten führen Habenposten, sind also negativ. Ein realisierter Gewinn ist ein negativer Posten auf
Income:CapitalGains:…; ein realisierter Verlust ist ein positiver Posten aufExpenses:CapitalLoss:…. Dies zu verwechseln ist die häufigste Art und Weise, wie ein Krypto-Buchungssatz nicht ausgeglichen wird. - Eine Gebühr wird einmal als Aufwand und einmal als Minderung des Barguthabens erfasst. Der Bruttoerlös geht auf das Kassenkonto, die Gebühr wird davon wieder abgezogen, und die Differenz ist das, was tatsächlich auf Ihrem Konto landet.
Erkunden Sie ein laufendes Kryptowährungs-Beispielhauptbuch:
Grundlegende Einrichtungsvorlage
Kontostruktur-Vorlage
; =============================================================================
; 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"Handelsvorlagen
Grundlegender Kauf von Kryptowährungen
; 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 USDVerkauf von Kryptowährungen
; 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 basisDas veräußerte Los ist zu Anschaffungskosten 22.500,00 $ wert, der Verkauf bringt brutto 24.000,00 $ ein, und 30,00 $ davon gehen an die Börse — also kommen 23.970,00 $ Bargeld an und es werden 1.500,00 $ Gewinn realisiert. Rechnen Sie die Gebühr nicht in den Gewinn ein: Die Gebühr ist bereits ein Aufwand, und sie ein zweites Mal abzuziehen ist das, was die Transaktion unausgeglichen lässt.
Krypto-zu-Krypto-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 USDEin Krypto-zu-Krypto-Tausch veräußert die erste Ware, realisiert also Gewinn genau wie ein Verkauf gegen Bargeld: 20 ETH, erworben zu 2.400,00 $, sind 48.000,00 $ erhaltener Wert gegen 46.000,00 $ BTC-Anschaffungskosten. Die Gebühr von 40,00 $ wird in Bar gezahlt und ändert den Gewinn nicht.
Übertragungsvorlagen
Übertragung von der Börse an die 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}Ein Transfer ist keine Veräußerung, realisiert also nichts: Dieselben Anschaffungskosten von {45000.00 USD} wandern mit den Coins und das empfangende Konto erbt die Anschaffungskostenbasis. Daraus folgen zwei Konsequenzen. Die Auszahlungsgebühr wird in BTC gezahlt und zu denselben Anschaffungskosten als Aufwand erfasst, realisiert also ebenfalls keinen Gewinn — falls Ihre Behandlung etwas anderes vorsieht, bepreisen Sie die Gebühr mit @ und fügen Sie einen Gewinnposten hinzu. Und das sendende Konto muss bereits 1,0005 BTC zu genau diesen Anschaffungskosten halten, nicht 1,0, weil die Gebühr aus demselben Los kommt. Eine Minderung ohne passendes Los lässt sich nicht buchen, so gut die Summen auch aufgehen mögen.
Börsenübergreifende Übertragung
; 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-Vorlagen
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-Belohnungen
; 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.00Eine Belohnung ist Einkommen, das in Sachwerten empfangen wird, sodass die beiden Posten dasselbe Ereignis von beiden Seiten beschreiben: 0,08 ETH kommen mit einer Basis von 2.600,00 $ pro Einheit an, und das passende Einkommen von 208,00 $ ist ein Habenposten — negativ. Die {2,600.00 USD} sind ein externer Preis, den Sie selbst beschaffen müssen; Beancount zeichnet ihn auf, ruft ihn nicht ab. Notieren Sie ihn von der Börse oder dem Index, den Sie tatsächlich verwenden, und behalten Sie dieselbe Quelle über das Jahr bei.
Diese 208,00 $ sind von hier an auch die Anschaffungskostenbasis der Belohnung. Wenn Sie die 0,08 ETH schließlich verkaufen, ist nur die Bewegung seit diesem Datum ein Gewinn — die 208,00 $ wurden bereits als Einkommen besteuert und dürfen nicht zweimal erfasst werden. Ob das Einkommen bei Erhalt oder bei Veräußerung steuerpflichtig ist, unterscheidet sich je nach Rechtsordnung; das Hauptbuch hält die Fakten in beiden Fällen fest.
DeFi-Vorlagen
Uniswap-Liquiditätsbereitstellung
; 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}Stimmen Sie dies eine Ware nach der anderen ab: 25.000,00 $ ETH plus 25.000,00 $ USDC gehen ab, 50.000,00 $ LP-Token kommen an, und die Gas-Gebühr verschiebt 50,00 $ ETH aus der Wallet in einen Aufwand. Der Stablecoin-Teil trägt @ 1.00 USD, weil er ohne Anschaffungskostenbasis gehalten wird — ohne die Preisannotation ist sein Gewicht 25.000 USDC, was keine Dollars aufheben kann. In vielen Rechtsordnungen ist die Einzahlung in einen Pool selbst eine Veräußerung beider Token; dieser Posten trägt die Anschaffungskosten bewusst stattdessen hinüber, also fügen Sie die Gewinnposten hinzu, wenn Ihre Behandlung sie erfordert.
Compound-Kreditvergabe
; 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}Zwei Dinge sorgen dafür, dass dieser Posten lädt. Der USDC-Teil trägt @ 1.00 USD, damit beide Seiten des Tauschs in derselben Währung wiegen — ohne ihn sieht Beancount 10.000,00 $ CUSDC erscheinen gegen 10.000 Einheiten USDC, die verschwinden, was unterschiedliche Waren sind und sich nicht aufhebt. Und der Empfangstoken ist CUSDC, nicht cUSDC: Ein klein geschriebener Anfangsbuchstabe ist ein Lexer-Fehler sowohl in einer Kontokomponente als auch in einem Warensymbol, egal wie das Protokoll es in seiner eigenen Oberfläche schreibt.
Mining-Vorlagen
Mining-Belohnungen
; 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-Ausgaben
; 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-Vorlagen
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.00Wie bei einer Staking-Belohnung wird der erfasste Wert des Airdrops zu seiner Anschaffungskostenbasis. Erfassen Sie den Preis, den Sie vertreten können — die erste liquide Notierung des Tokens, aus einer Quelle, die Sie benennen — statt einer runden Zahl.
Erweiterte Vorlagen
Flash-Loan-Arbitrage
Dieser Block ist Pseudocode, keine Vorlage. Er skizziert die Abfolge der Wertbewegungen innerhalb eines Flash Loans. Er wird nicht laden, selbst nachdem Sie Werte eingesetzt haben, weil die Leerzeilen zwischen den Gruppen die Transaktion beenden — Beancount meldet einen Syntaxfehler für die Posten, die auf eine folgen. Erfassen Sie ein echtes Flash Loan als eine einzige Transaktion ohne Leerzeilen (kennzeichnen Sie die Teilstücke mit eingerückten ;-Kommentaren) und lassen Sie die Zwischenstücke weg, die sich innerhalb desselben Blocks zu null aufheben.
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, was das Darlehen berührt hat, ist am Ende des Blocks verschwunden, sodass das Hauptbuch tatsächlich nur den Gewinn und die Protokollgebühr erfassen muss. Das Arbitrage-Beispiel im Leitfaden zur Portfolioverfolgung zeigt die Form der Einzeltransaktion.
Cross-Chain-Brücke
; 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}Steueroptimierte Vorlagen
Steuerverlust-Ernte
; 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 proceedsDer Verlust ist das Spiegelbild eines Gewinns: 600,00 $ Anschaffungskosten gehen ab, 450,00 $ Bruttoerlös kommen an, und die Differenz von 150,00 $ ist ein positiver Posten auf einem Aufwandskonto. 445,00 $ Bargeld landen tatsächlich, nach der Gebühr von 5,00 $.
Langfristige Kapitalgewinne
; 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 basisDer Gewinn ist 10.000,00 $, nicht 9.950,00 $: Die Gebühr von 50,00 $ ist bereits als Aufwand erfasst, sodass sie in den Gewinn einzurechnen sie zweimal abziehen würde. Income:CapitalGains:LongTerm ist ein separates Konto von Income:CapitalGains:Crypto nur, damit die Haltedauer in einem Bericht sichtbar ist — Beancount berechnet Haltedauern nicht für Sie, weshalb die Metadaten date-acquired und holding-period es wert sind, mitgeführt zu werden.
Abstimmungsvorlagen
Monatliche Guthabenüberprüfung
; 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 BTCAnders als die übrigen Beispiele hier ist dieses absichtlich nicht in sich geschlossen: Die Beträge sind, was Ihre eigenen Börsenbildschirme anzeigen, und die Behauptung schlägt fehl, bis Ihre Transaktionen im Hauptbuch stehen — was genau ihr Zweck ist. Beachten Sie, dass balance den Saldo zu Beginn des genannten Tages prüft, also datieren Sie die Behauptung auf den Tag nach dem Zeitraum, den Sie abschließen.
Preisaualität
; 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 USDFür ein gehostetes Hauptbuch kann Live Prices unterstützte Krypto-Bewertungspreise automatisch pflegen. Behalten Sie die statischen Preise oben für reproduzierbare Beispiele bei. Verwaltete Preise befüllen keinen Handelspreis, kein Staking-Einkommen und keine Airdrop-Anschaffungskostenbasis; erfassen Sie diese Transaktionswerte explizit.
Verwendungsanweisungen
-
Kopieren Sie die relevante Vorlage für Ihren Transaktionstyp
-
Ersetzen Sie jeden Platzhalter. Eine Vorlage ist kein gültiges Beancount, bis
YYYY-MM-DDund jedes[ECKIGE_KLAMMERN]-Token verschwunden ist — Klammern sind keine Beancount-Syntax, und eine übrig gebliebene ist ein Parse-Fehler, kein stillschweigend ignorierter Wert. Das Einsetzen ist mechanisch:Platzhalter Ersetzen durch Beispiel YYYY-MM-DDdas Datum der Transaktion 2024-03-20[AMOUNT]Einheiten der Ware, ohne Anführungszeichen 0.5[CRYPTO]das Warensymbol, in Großbuchstaben BTC[EXCHANGE]die Kontokomponente für den Handelsplatz Coinbase[COST_BASIS]die Anschaffungskosten pro Einheit des Loses, das Sie entnehmen 45000.00[SALE_PRICE]der Stückpreis, zu dem Sie verkauft haben 48000.00[GROSS_PROCEEDS][AMOUNT]×[SALE_PRICE], vor Gebühren24000.00[FEE]die Gebühr des Handelsplatzes, in der Währung, in der sie berechnet wurde 30.00[GAIN][GROSS_PROCEEDS]−[AMOUNT]×[COST_BASIS]1500.00Setzt man diese Spalte in die Kryptowährungsverkauf-Vorlage ein, ergibt sich das darunter abgedruckte durchgerechnete Beispiel, was der schnellste Weg ist, zu prüfen, ob Sie die Vorlage richtig gelesen haben.
-
Passen Sie Kontonamen an Ihre Kontostruktur an, und stellen Sie sicher, dass jedes davon durch die Kontostruktur-Vorlage geöffnet wird — ein Konto, das nie geöffnet wird, ist ein Ladefehler, keine Warnung
-
Fügen Sie Metadaten hinzu, wie für Steuerberichterstattung oder Tracking erforderlich
-
Überprüfen Sie die Berechnungen mit
bea --file your-file.bean check, bevor Sie Posten finalisieren. Ein Posten, der nicht ausgeglichen ist oder ein Los mindert, das Sie nicht halten, schlägt dort fehl, statt stillschweigend einen falschen Bericht zu erzeugen
Best Practices
- Verwenden Sie konsistente Namenskonventionen
- Fügen Sie Transaktions-IDs in die Metadaten ein
- Dokumentieren Sie komplexe Transaktionen gründlich
- Überprüfen Sie Wechselkurse und Preise
- Führen Sie regelmäßige Backups Ihrer Dateien durch
Diese Vorlagen bieten eine solide Grundlage für die Kryptowährungsbuchhaltung in Beancount.io. Passen Sie sie an Ihre spezifischen Bedürfnisse und Handelsmuster an.