Zum Hauptinhalt springen

Kopierfertige Beancount-Vorlagen für Krypto-Transaktionen

Ausfüllbare Beancount-Vorlagen, jeweils mit ladbarem Beispiel, für Krypto-Käufe, -Verkäufe, -Swaps, -Transfers, Staking, DeFi-Kredite, Mining und Airdrops.

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 und YYYY-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 auf Expenses: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:

Kryptowährungs-Beispielhauptbuch in neuem Tab öffnen

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 USD

Verkauf 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 basis

Das 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 USD

Ein 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.00

Eine 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.00

Mining-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 USD

Airdrop-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.00

Wie 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] USD

Alles, 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 proceeds

Der 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 basis

Der 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 BTC

Anders 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 USD

Fü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​

  1. Kopieren Sie die relevante Vorlage für Ihren Transaktionstyp

  2. Ersetzen Sie jeden Platzhalter. Eine Vorlage ist kein gültiges Beancount, bis YYYY-MM-DD und 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:

    PlatzhalterErsetzen durchBeispiel
    YYYY-MM-DDdas Datum der Transaktion2024-03-20
    [AMOUNT]Einheiten der Ware, ohne Anführungszeichen0.5
    [CRYPTO]das Warensymbol, in GroßbuchstabenBTC
    [EXCHANGE]die Kontokomponente für den HandelsplatzCoinbase
    [COST_BASIS]die Anschaffungskosten pro Einheit des Loses, das Sie entnehmen45000.00
    [SALE_PRICE]der Stückpreis, zu dem Sie verkauft haben48000.00
    [GROSS_PROCEEDS][AMOUNT] × [SALE_PRICE], vor Gebühren24000.00
    [FEE]die Gebühr des Handelsplatzes, in der Währung, in der sie berechnet wurde30.00
    [GAIN][GROSS_PROCEEDS] − [AMOUNT] × [COST_BASIS]1500.00

    Setzt 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.

  3. 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

  4. Fügen Sie Metadaten hinzu, wie für Steuerberichterstattung oder Tracking erforderlich

  5. Ü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.

Quelle: https://beancount.io/de/docs/Tips/cryptocurrency-templates-examples