Dieser Leitfaden bietet praktische Beancount-Vorlagen und reale Beispiele für häufige Kryptowährungs-Szenarien. Kopieren und passen Sie diese Vorlagen für Ihre eigene Krypto-Buchhaltung an.
So lesen Sie diese Blöcke
Jeder umrandete Block unten ist eines von drei Dingen, und sie sind nicht austauschbar:
- Vorlagen enthalten
[ECKIGE_KLAMMERN]-Platzhalter undJJJJ-MM-TT-Daten. Sie werden nicht laden, bis Sie reale Werte einsetzen – die Klammern sind keine Beancount-Syntax. - Beispiele stehen direkt unter ihrer Vorlage, tragen echte Daten und Beträge und sind zum Laden geschrieben. Jedes benötigt noch die Konten, die es berührt, geöffnet – dafür ist die Kontostruktur-Vorlage unten da. Die einzige Ausnahme ist der Abstimmungsblock, der nur Guthaben bestätigt, die 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 halten Guthaben, also sind sie negativ. Ein realisierter Gewinn ist eine negative Buchung auf
Income:CapitalGains:…; ein realisierter Verlust ist eine positive Buchung aufExpenses:CapitalLoss:…. Dies umzukehren ist der häufigste Grund, warum ein Krypto-Eintrag nicht ausgeglichen ist. - Eine Gebühr wird einmal als Aufwand und einmal als Reduzierung des Bargelds erfasst. Der Bruttoerlös geht auf das Bargeldkonto, die Gebühr kommt davon wieder ab, und die Differenz ist das, was tatsächlich auf Ihrem Konto landet.
Entdecken Sie ein Live-Beispiel-Hauptbuch für Kryptowährungen:
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 basisDie veräußerte Position ist zu Anschaffungskosten 22.500,00 $ wert, der Verkauf bringt 24.000,00 $ brutto ein, und 30,00 $ davon gehen an die Börse – also kommen 23.970,00 $ an Bargeld an und 1.500,00 $ Gewinn werden realisiert. Netten Sie die Gebühr nicht in den Gewinn ein: Die Gebühr ist bereits ein Aufwand, und sie ein zweites Mal abzuziehen, führt dazu, dass die Transaktion nicht ausgeglichen ist.
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-Handel veräußert die erste Ware und realisiert daher Gewinne genau wie ein Verkauf gegen Bargeld: 20 ETH, erworben zu 2.400,00 $, sind 48.000,00 $ an erhaltenem Wert gegen 46.000,00 $ an BTC-Basis. Die 40,00 $-Gebühr wird in bar bezahlt 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}Eine Übertragung ist keine Veräußerung, also realisiert sie nichts: Dieselben {45000.00 USD}-Kosten wandern mit den Münzen, und das empfangende Konto erbt die Basis. Zwei Konsequenzen folgen daraus. Die Abhebungsgebühr wird in BTC bezahlt und zu denselben Kosten als Aufwand verbucht, also realisiert sie auch keinen Gewinn – wenn Ihre Behandlung etwas anderes sagt, bewerten Sie die Gebühr mit @ und fügen eine Gewinnbuchung hinzu. Und das sendende Konto muss bereits 1.0005 BTC zu genau diesen Kosten halten, nicht 1,0, weil die Gebühr aus derselben Position kommt. Eine Reduzierung ohne passende Position kann nicht gebucht werden, egal wie gut die Summen aufgehen.
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 in Form von Sachleistungen, also beschreiben die beiden Buchungen dasselbe Ereignis von beiden Seiten: 0,08 ETH kommen mit einer Basis von 2.600,00 $ pro Einheit an, und die passenden 208,00 $ Einkommen sind ein Guthaben – negativ. Die {2,600.00 USD} ist ein externer Preis, den Sie selbst beschaffen müssen; Beancount zeichnet ihn auf, es holt ihn nicht. Notieren Sie ihn von der Börse oder dem Index, den Sie tatsächlich verwenden, und behalten Sie dieselbe Quelle über das Jahr hinweg bei.
Diese 208,00 $ sind ab jetzt auch die Kostenbasis 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, variiert je nach Rechtsordnung; das Hauptbuch zeichnet die Fakten in jedem Fall auf.
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}Gleichen Sie dies Ware für Ware ab: 25.000,00 $ an ETH plus 25.000,00 $ an USDC verlassen das Konto, 50.000,00 $ an LP-Token kommen an, und die Gas-Gebühr bewegt 50,00 $ an ETH von der Wallet in einen Aufwand. Die Stablecoin-Seite trägt @ 1.00 USD, weil sie ohne Kostenbasis gehalten wird – ohne die Preisannotation wäre ihr Gewicht 25.000 USDC, was nicht mit Dollar verrechnet werden kann. In vielen Rechtsordnungen ist die Einzahlung in einen Pool selbst eine Veräußerung beider Token; dieser Eintrag trägt bewusst die Basis stattdessen hinüber, also fügen Sie die Gewinnbuchungen hinzu, wenn Ihre Behandlung dies 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 Eintrag lädt. Die USDC-Seite trägt @ 1.00 USD, damit beide Seiten des Tauschs in derselben Währung wiegen – ohne sie sieht Beancount 10.000,00 $ an CUSDC auftauchen gegen 10.000 Einheiten USDC, die verschwinden, was verschiedene Waren sind und sich nicht aufhebt. Und das Empfangs-Token ist CUSDC, nicht cUSDC: Ein Kleinbuchstabe am Anfang ist ein Lexer-Fehler sowohl in einer Kontokomponente als auch in einem Warensymbol, egal wie das Protokoll es in seiner eigenen Oberfläche buchstabiert.
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 erkannte Wert des Airdrops zu seiner Kostenbasis. Notieren Sie den Preis, den Sie verteidigen können – das erste liquide Angebot des Tokens, von einer Quelle, die Sie benennen – und nicht eine runde Zahl.
Erweiterte Vorlagen
Flash-Loan-Arbitrage
Dieser Block ist Pseudocode, keine Vorlage. Er skizziert die Abfolge der Wertbewegungen innerhalb eines Flash-Loans. Er wird auch nach dem Einsetzen von Werten nicht laden, weil die Leerzeilen zwischen den Gruppen die Transaktion beenden – Beancount meldet einen Syntaxfehler bei den Buchungen, die einer folgen. Nehmen Sie einen echten Flash-Loan als eine einzige Transaktion ohne Leerzeilen auf (kennzeichnen Sie die Seiten mit eingerückten ;-Kommentaren) und lassen Sie die Zwischenbuchungen weg, die sich innerhalb desselben Blocks auf null summieren.
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, also muss das Hauptbuch tatsächlich nur den Gewinn und die Protokollgebühr erfassen. Das Arbitrage-Beispiel im Portfolio-Tracking-Leitfaden zeigt die Einzeltransaktionsform.
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 $ an Basis verlassen das Konto, 450,00 $ an Bruttoerlös kommen an, und die 150,00 $-Differenz ist eine positive Buchung auf ein Aufwandskonto. 445,00 $ an Bargeld sind das, was tatsächlich ankommt, nach der 5,00 $-Gebühr.
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 beträgt 10.000,00 $, nicht 9.950,00 $: Die 50,00 $-Gebühr ist bereits als Aufwand erfasst, also würde das Netten in den Gewinn sie zweimal abziehen. 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 anderen Beispiele hier ist dieses nicht absichtlich in sich geschlossen: Die Beträge sind das, was Ihre eigenen Börsenbildschirme sagen, und die Bestätigung schlägt fehl, bis Ihre Transaktionen im Hauptbuch sind – das ist der ganze Sinn davon. Beachten Sie, dass balance das Guthaben zu Beginn des genannten Tages prüft, also datieren Sie die Bestätigung 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 USDVerwendungsanweisungen
-
Kopieren Sie die relevante Vorlage für Ihren Transaktionstyp
-
Ersetzen Sie jeden Platzhalter. Eine Vorlage ist kein gültiges Beancount, bis
JJJJ-MM-TTund jedes[ECKIGE_KLAMMER]-Token verschwunden ist – Klammern sind keine Beancount-Syntax, und eine übrig gebliebene ist ein Parsing-Fehler, kein stillschweigend ignorierter Wert. Das Ersetzen ist mechanisch:Platzhalter Ersetzen durch Beispiel JJJJ-MM-TTdas Datum der Transaktion 2024-03-20[MENGE]Einheiten der Ware, ohne Anführungszeichen 0.5[KRYPTO]das Warensymbol, in Großbuchstaben BTC[BÖRSE]die Kontokomponente für den Ort Coinbase[KOSTENBASIS]die Stückkosten der Position, die Sie entfernen 45000.00[VERKAUFSPREIS]der Stückpreis, zu dem Sie verkauft haben 48000.00[BRUTTOERLÖS][MENGE]×[VERKAUFSPREIS], vor Gebühren24000.00[GEBÜHR]die Gebühr des Ortes, in der Währung, in der sie erhoben wurde 30.00[GEWINN][BRUTTOERLÖS]−[MENGE]×[KOSTENBASIS]1500.00Das Einsetzen dieser Spalte in die Kryptowährungs-Verkaufs-Vorlage reproduziert das darunter abgedruckte durchgerechnete Beispiel, was der schnellste Weg ist, um zu überprüfen, ob Sie die Vorlage richtig gelesen haben.
-
Passen Sie Kontonamen an, um Ihrer Kontostruktur zu entsprechen, und stellen Sie sicher, dass jedes von der 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 die Steuerberichterstattung oder die Verfolgung erforderlich
-
Überprüfen Sie Berechnungen mit
bea --file Ihre-Datei.bean check, bevor Sie Einträge finalisieren. Ein Eintrag, der nicht ausgeglichen ist oder eine Position reduziert, die Sie nicht halten, schlägt dort fehl, anstatt stillschweigend einen falschen Bericht zu erzeugen
Best Practices
- Verwenden Sie konsistente Benennungskonventionen
- Fügen Sie Transaktions-IDs in Metadaten ein
- Dokumentieren Sie komplexe Transaktionen gründlich
- Überprüfen Sie Wechselkurse und Preise
- Führen Sie regelmäßige Sicherungen Ihrer Dateien durch
Diese Vorlagen bieten eine solide Grundlage für die Kryptowährungs-Buchhaltung in Beancount.io. Passen Sie sie basierend auf Ihren spezifischen Bedürfnissen und Handelsmustern an.