Questa guida fornisce template Beancount pratici ed esempi reali per gli scenari più comuni con le criptovalute. Copia e adatta questi template alle tue esigenze di contabilità crypto.
Come leggere questi blocchi
Ogni blocco delimitato qui sotto è una di tre cose, e non sono intercambiabili:
- I Template contengono segnaposto
[TRA_PARENTESI]e dateYYYY-MM-DD. Non verranno caricati finché non sostituisci i valori reali — le parentesi non sono sintassi Beancount. - Gli Esempi si trovano direttamente sotto il loro template, riportano date e importi reali, e sono scritti per essere caricati. Ognuno di essi richiede comunque che i conti che tocca siano aperti, ed è proprio a questo che serve il Template della Struttura dei Conti qui sotto. L'unica eccezione è il blocco di riconciliazione, che verifica saldi che solo il tuo ledger può soddisfare.
- Il blocco Arbitraggio con Flash Loan è pseudocodice, ed è etichettato come tale dove appare.
Due convenzioni attraversano tutti quanti:
- I conti di ricavo contengono accrediti, quindi sono negativi. Una plusvalenza realizzata è una scrittura negativa su
Income:CapitalGains:…; una minusvalenza realizzata è una scrittura positiva suExpenses:CapitalLoss:…. Invertire questo ordine è il modo più comune in cui una registrazione crypto non quadra. - Una commissione viene registrata una volta come spesa e una volta come riduzione di liquidità. Il ricavo lordo va sul conto di liquidità, la commissione ne esce, e la differenza è ciò che effettivamente arriva sul tuo conto.
Esplora un ledger di esempio sulle criptovalute dal vivo:
Modello di Configurazione di Base
Modello di Struttura dei Conti
; =============================================================================
; 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"Modelli di Trading
Acquisto di Base di Criptovaluta
; 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 USDVendita di Criptovaluta
; 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 basisIl lotto ceduto vale $22.500,00 al costo, la vendita incassa $24.000,00 lordi, e $30,00 di questi vanno all'exchange — quindi arrivano $23.970,00 di liquidità e si realizza una plusvalenza di $1.500,00. Non compensare la commissione nella plusvalenza: la commissione è già una spesa, e sottrarla una seconda volta è ciò che lascia la transazione non bilanciata.
Scambio Criptovaluta-Criptovaluta
; 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 USDUno scambio crypto-to-crypto cede la prima commodity, quindi realizza una plusvalenza esattamente come una vendita in contanti: 20 ETH acquisiti a $2.400,00 sono $48.000,00 di valore ricevuto contro $46.000,00 di base di costo dei BTC. La commissione di $40,00 è pagata in contanti e non modifica la plusvalenza.
Modelli di Trasferimento
Trasferimento da Scambio a Portafoglio
; 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}Un trasferimento non è una cessione, quindi non realizza nulla: lo stesso costo {45000.00 USD} viaggia con le monete e il conto di destinazione eredita la base di costo. Ne conseguono due cose. La commissione di prelievo è pagata in BTC ed è spesata a quello stesso costo, quindi non realizza nemmeno essa una plusvalenza — se il tuo trattamento dice diversamente, prezza la commissione con @ e aggiungi una scrittura di plusvalenza. E il conto mittente deve già detenere 1,0005 BTC a quel costo esatto, non 1,0, perché la commissione esce dallo stesso lotto. Una riduzione senza un lotto corrispondente non riesce a registrarsi, per quanto bene i totali possano sommare.
Trasferimento tra Scambi Diversi
; 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}Modelli di Staking
Staking di Ethereum
; 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}Ricompense di Staking
; 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.00Una ricompensa è un ricavo ricevuto in natura, quindi le due scritture descrivono lo stesso evento da entrambi i lati: 0,08 ETH arrivano con una base di costo di $2.600,00 per unità, e il corrispondente ricavo di $208,00 è un accredito — negativo. Il {2,600.00 USD} è un prezzo esterno che devi procurarti tu; Beancount lo registra, non lo recupera. Annotalo dall'exchange o dall'indice che usi effettivamente, e mantieni la stessa fonte per tutto l'anno.
Quei $208,00 sono anche la base di costo della ricompensa da qui in avanti. Quando alla fine venderai gli 0,08 ETH, solo il movimento a partire da questa data è una plusvalenza — i $208,00 sono già stati tassati come ricavo e non devono essere riconosciuti due volte. Se il ricavo sia tassabile al momento della ricezione o della cessione varia a seconda della giurisdizione; il ledger registra i fatti in ogni caso.
Modelli DeFi
Fornitura di Liquidità su Uniswap
; 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}Riconcilia una commodity alla volta: $25.000,00 di ETH più $25.000,00 di USDC escono, $50.000,00 di token LP arrivano, e la commissione gas sposta $50,00 di ETH dal wallet a una spesa. La gamba in stablecoin porta @ 1.00 USD perché è detenuta senza base di costo — senza l'annotazione di prezzo il suo peso è di 25.000 USDC, che non possono annullare dollari. In molte giurisdizioni il deposito in un pool è di per sé una cessione di entrambi i token; questa registrazione porta deliberatamente avanti la base di costo, quindi aggiungi le scritture di plusvalenza se il tuo trattamento le richiede.
Prestito su Compound
; 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}Due cose fanno sì che questa registrazione si carichi. La gamba in USDC porta @ 1.00 USD così entrambi i lati dello scambio pesano nella stessa valuta — senza di essa Beancount vede $10.000,00 di CUSDC che appaiono contro 10.000 unità di USDC che scompaiono, che sono commodity diverse e non si annullano. E il token di ricevuta è CUSDC, non cUSDC: una lettera iniziale minuscola è un errore del lexer sia in un componente di conto che in un simbolo di commodity, indipendentemente da come il protocollo lo scrive nella propria interfaccia.
Modelli di Mining
Ricompense di Mining
; 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.00Spese di Mining
; 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 USDModelli di Airdrop
Token Airdrop
; 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.00Come per una ricompensa di staking, il valore riconosciuto dell'airdrop diventa la sua base di costo. Registra il prezzo che puoi difendere — la prima quotazione liquida del token, da una fonte che sai nominare — piuttosto che un numero tondo.
Modelli Avanzati
Arbitraggio Flash Loan
Questo blocco è pseudocodice, non un template. Delinea la sequenza dei movimenti di valore all'interno di un flash loan. Non verrà caricato nemmeno dopo aver sostituito i valori, perché le righe vuote tra i gruppi terminano la transazione — Beancount segnala un errore di sintassi sulle scritture che ne seguono. Registra un vero flash loan come un'unica transazione senza righe vuote (etichettando le gambe con commenti ; indentati), eliminando le gambe intermedie che si annullano a zero all'interno dello stesso blocco.
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] USDTutto ciò che il prestito ha toccato è sparito entro la fine del blocco, quindi ciò che il ledger deve effettivamente registrare è il profitto e la commissione del protocollo. L'esempio di arbitraggio nella guida al monitoraggio del portafoglio mostra la forma a transazione singola.
Ponte Cross-Chain
; 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}Modelli Ottimizzati per le Tasse
Raccolta di Minusvalenze
; 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 proceedsLa minusvalenza è l'immagine speculare di una plusvalenza: $600,00 di base di costo escono, $450,00 di ricavo lordo arrivano, e la differenza di $150,00 è una scrittura positiva su un conto di spesa. $445,00 di liquidità è ciò che effettivamente arriva, dopo la commissione di $5,00.
Plusvalenze a Lungo Termine
; 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 basisLa plusvalenza è di $10.000,00, non $9.950,00: la commissione di $50,00 è già registrata come spesa, quindi compensarla nella plusvalenza la dedurrebbe due volte. Income:CapitalGains:LongTerm è un conto separato da Income:CapitalGains:Crypto solo per rendere visibile il periodo di detenzione in un report — Beancount non calcola i periodi di detenzione per te, ed è per questo che i metadati date-acquired e holding-period vale la pena di essere mantenuti.
Modelli di Riconciliazione
Verifica Mensile del Saldo
; 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 BTCA differenza degli altri esempi qui, questo non è autocontenuto per progettazione: gli importi sono quelli che mostrano le schermate del tuo exchange, e l'asserzione fallisce finché le tue transazioni non sono nel ledger — che è esattamente il suo scopo. Nota che balance verifica il saldo all'inizio del giorno indicato, quindi data l'asserzione al giorno successivo al periodo che stai chiudendo.
Aggiornamenti dei Prezzi
; 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 USDPer un ledger ospitato, Prezzi in Tempo Reale può mantenere automaticamente i prezzi di valutazione delle criptovalute supportate. Mantieni i prezzi statici sopra per avere esempi riproducibili. I prezzi gestiti non popolano il prezzo di uno scambio, il ricavo da staking o la base di costo di un airdrop; registra esplicitamente quei valori di transazione.
Istruzioni per l'Uso
-
Copia il template pertinente per il tuo tipo di transazione
-
Sostituisci ogni segnaposto. Un template non è Beancount valido finché
YYYY-MM-DDe ogni token[TRA_PARENTESI]non sono spariti — le parentesi non sono sintassi Beancount, e una lasciata per errore è un errore di parsing, non un valore ignorato silenziosamente. La sostituzione è meccanica:Segnaposto Sostituisci con Esempio YYYY-MM-DDla data della transazione 2024-03-20[AMOUNT]unità della commodity, senza virgolette 0.5[CRYPTO]il simbolo della commodity, in maiuscolo BTC[EXCHANGE]il componente di conto per la piattaforma Coinbase[COST_BASIS]il costo per unità del lotto che stai rimuovendo 45000.00[SALE_PRICE]il prezzo per unità a cui hai venduto 48000.00[GROSS_PROCEEDS][AMOUNT]×[SALE_PRICE], al lordo delle commissioni24000.00[FEE]la commissione della piattaforma, nella valuta in cui è stata addebitata 30.00[GAIN][GROSS_PROCEEDS]−[AMOUNT]×[COST_BASIS]1500.00Sostituire quella colonna nel template Vendita di Criptovalute riproduce l'esempio svolto stampato sotto di esso, che è il modo più rapido per verificare di aver letto correttamente il template.
-
Adatta i nomi dei conti per corrispondere alla tua struttura dei conti, e assicurati che ognuno sia aperto dal Template della Struttura dei Conti — un conto che non viene mai aperto è un errore di caricamento, non un avviso
-
Aggiungi i metadati secondo necessità per la rendicontazione fiscale o il monitoraggio
-
Verifica i calcoli con
bea --file your-file.bean checkprima di finalizzare le registrazioni. Una registrazione che non quadra, o che riduce un lotto che non possiedi, fallisce lì invece di produrre silenziosamente un report errato
Buone Pratiche
- Usa convenzioni di denominazione coerenti
- Includi gli ID delle transazioni nei metadati
- Documenta accuratamente le transazioni complesse
- Verifica i tassi di cambio e i prezzi
- Mantieni backup regolari dei tuoi file
Questi template forniscono una base solida per la contabilità delle criptovalute in Beancount.io. Personalizzali in base alle tue esigenze specifiche e ai tuoi schemi di trading.