Pular para o conteúdo principal

Modelos de transações cripto Beancount prontos para copiar

Modelos Beancount para preencher, cada um com um exemplo carregável, para compras, vendas, trocas, transferências, staking, empréstimos DeFi, mineração e airdrops de cripto.

Este guia fornece templates práticos do Beancount e exemplos do mundo real para cenários comuns de criptomoedas. Copie e adapte estes templates para as suas próprias necessidades de contabilidade cripto.

Como ler estes blocos​

Cada bloco delimitado abaixo é uma de três coisas, e elas não são intercambiáveis:

  • Templates contêm marcadores [ENTRE_COLCHETES] e datas YYYY-MM-DD. Eles não vão carregar até que você substitua por valores reais — os colchetes não são sintaxe do Beancount.
  • Exemplos ficam logo abaixo do seu template, carregam datas e quantias reais, e são escritos para carregar. Cada um ainda precisa que as contas que ele toca estejam abertas, que é para o que serve o Template de Estrutura de Contas abaixo. A única exceção é o bloco de reconciliação, que afirma saldos que apenas o seu próprio razão pode satisfazer.
  • O bloco de Arbitragem com Flash Loan é pseudocódigo, e está rotulado como tal onde aparece.

Duas convenções percorrem todos eles:

  • Contas de receita mantêm créditos, então são negativas. Um ganho realizado é um lançamento negativo em Income:CapitalGains:…; uma perda realizada é um lançamento positivo em Expenses:CapitalLoss:…. Inverter isso é a forma mais comum de um lançamento cripto não balancear.
  • Uma taxa é registrada uma vez como despesa e uma vez como redução no caixa. O valor bruto da venda vai para a conta de caixa, a taxa sai dela, e a diferença é o que de fato cai na sua conta.

Explore um razão de exemplo de criptomoedas ao vivo:

Abrir Cryptocurrency Example Ledger em uma nova aba

Modelo de Configuração Básica​

Modelo de Estrutura de Contas​

; =============================================================================
; 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"

Modelos de Negociação​

Compra Básica de Criptomoeda​

; 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

Venda de Criptomoeda​

; 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

O lote alienado vale $22.500,00 pelo custo, a venda traz $24.000,00 brutos, e $30,00 disso vão para a exchange — então $23.970,00 de caixa chegam e $1.500,00 de ganho são realizados. Não deduza a taxa do ganho: a taxa já é uma despesa, e subtraí-la uma segunda vez é o que deixa o lançamento desbalanceado.

Troca Cripto-para-Cripto​

; 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

Uma troca cripto-por-cripto aliena a primeira commodity, então realiza ganho exatamente como uma venda por dinheiro: 20 ETH adquiridos a $2.400,00 são $48.000,00 de valor recebido contra $46.000,00 de base do BTC. A taxa de $40,00 é paga em dinheiro e não altera o ganho.

Modelos de Transferência​

Transferência de Exchange para Carteira​

; 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}

Uma transferência não é uma alienação, então não realiza nada: o mesmo custo {45000.00 USD} viaja com as moedas e a conta de destino herda a base. Duas consequências decorrem disso. A taxa de saque é paga em BTC e é lançada como despesa a esse mesmo custo, então também não realiza ganho — se o seu tratamento disser o contrário, precifique a taxa com @ e adicione um lançamento de ganho. E a conta de origem já deve conter 1,0005 BTC a esse custo exato, não 1,0, porque a taxa sai do mesmo lote. Uma redução sem lote correspondente falha ao registrar, por mais que os totais somem corretamente.

Transferência Entre Exchanges​

; Template: Transfer between exchanges
YYYY-MM-DD * "Transfer [AMOUNT] [CRYPTO] from [EXCHANGE1] to [EXCHANGE2]"
  Assets:Crypto:[EXCHANGE1]:[CRYPTO]  -[AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE2]:[CRYPTO]   [AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Expenses:Crypto:Fees:Network         [FEE] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE1]:[CRYPTO]  -[FEE] [CRYPTO] {[COST_BASIS] USD}
 
; Example: Transfer ETH from Coinbase to Binance
2024-02-05 * "Transfer 10 ETH from Coinbase to Binance"
  Assets:Crypto:Coinbase:ETH   -10 ETH {2500.00 USD}
  Assets:Crypto:Binance:ETH     10 ETH {2500.00 USD}
  Expenses:Crypto:Fees:Network  0.01 ETH {2500.00 USD}
  Assets:Crypto:Coinbase:ETH   -0.01 ETH {2500.00 USD}

Modelos de Staking​

Staking de 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}

Recompensas de 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.00

Uma recompensa é receita recebida em espécie, então os dois lançamentos descrevem o mesmo evento pelos dois lados: 0,08 ETH chegam com uma base de $2.600,00 por unidade, e a receita correspondente de $208,00 é um crédito — negativa. O {2,600.00 USD} é um preço externo que você mesmo precisa buscar; o Beancount o registra, mas não o obtém. Anote-o da exchange ou índice que você realmente usa, e mantenha a mesma fonte ao longo do ano.

Esses $208,00 também são a base de custo da recompensa a partir de agora. Quando você eventualmente vender os 0,08 ETH, apenas a variação desde essa data é ganho — os $208,00 já foram tributados como receita e não devem ser reconhecidos duas vezes. Se a receita é tributável no recebimento ou na alienação varia por jurisdição; o razão registra os fatos de qualquer forma.

Modelos DeFi​

Provisão de Liquidez no 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}

Reconcilie uma commodity por vez: $25.000,00 de ETH mais $25.000,00 de USDC saem, $50.000,00 de token LP chegam, e a taxa de gas move $50,00 de ETH da carteira para uma despesa. A perna da stablecoin carrega @ 1.00 USD porque ela é mantida sem base de custo — sem a anotação de preço, seu peso é 25.000 USDC, que não pode cancelar dólares. Em muitas jurisdições, depositar em um pool é, em si, uma alienação de ambos os tokens; este lançamento deliberadamente carrega a base adiante, então adicione os lançamentos de ganho se o seu tratamento os exigir.

Empréstimo no 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}

Duas coisas fazem este carregar. A perna em USDC carrega @ 1.00 USD para que ambos os lados da troca pesem na mesma moeda — sem isso o Beancount vê $10.000,00 de CUSDC aparecendo contra 10.000 unidades de USDC desaparecendo, que são commodities diferentes e não se cancelam. E o token de recibo é CUSDC, não cUSDC: uma primeira letra minúscula é um erro de lexer tanto em um componente de conta quanto em um símbolo de commodity, não importa como o protocolo o escreva na sua própria interface.

Modelos de Mineração​

Recompensas de Mineração​

; 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

Despesas de Mineração​

; 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

Modelos de Airdrop​

Airdrops de Tokens​

; 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

Como uma recompensa de staking, o valor reconhecido do airdrop torna-se a sua base de custo. Registre o preço que você consegue defender — a primeira cotação líquida do token, de uma fonte que você nomeie — em vez de um número redondo.

Modelos Avançados​

Arbitragem de Empréstimo Relâmpago​

Este bloco é pseudocódigo, não um template. Ele esboça a sequência de movimentos de valor dentro de um flash loan. Ele não vai carregar nem depois que você substituir os valores, porque as linhas em branco entre os grupos encerram o lançamento — o Beancount reporta um erro de sintaxe nos lançamentos que seguem um deles. Registre um flash loan real como um único lançamento sem linhas em branco (rotulando as pernas com comentários ; indentados), descartando as pernas intermediárias que se anulam dentro do mesmo bloco.

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

Tudo o que o empréstimo tocou já desapareceu ao final do bloco, então o que o razão de fato precisa registrar é o lucro e a taxa do protocolo. O exemplo de arbitragem no guia de rastreamento de portfólio mostra o formato de lançamento único.

Ponte Entre Cadeias​

; 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}

Modelos Otimizados para Impostos​

Colheita de Perdas Fiscais​

; 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

A perda é a imagem espelhada de um ganho: $600,00 de base saem, $450,00 de valor bruto chegam, e a diferença de $150,00 é um lançamento positivo em uma conta de despesa. $445,00 de caixa é o que de fato cai, após a taxa de $5,00.

Ganhos de Capital de Longo Prazo​

; 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

O ganho é $10.000,00, não $9.950,00: a taxa de $50,00 já está registrada como despesa, então deduzi-la do ganho a deduziria duas vezes. Income:CapitalGains:LongTerm é uma conta separada de Income:CapitalGains:Crypto apenas para que o período de detenção seja visível em um relatório — o Beancount não calcula períodos de detenção para você, razão pela qual os metadados date-acquired e holding-period valem a pena carregar.

Modelos de Conciliação​

Verificação Mensal de 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 BTC

Diferente dos outros exemplos aqui, este não é autocontido por design: as quantias são o que as telas da sua própria exchange dizem, e a asserção falha até que seus lançamentos estejam no razão — que é justamente o ponto dele. Note que balance verifica o saldo no início do dia nomeado, então date a asserção para o dia seguinte ao período que você está fechando.

Atualizações de Preço​

; 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

Para um razão hospedado, o Live Prices pode manter automaticamente os preços de avaliação de criptomoedas suportados. Mantenha os preços estáticos acima para exemplos reproduzíveis. Preços gerenciados não preenchem o preço de uma negociação, a receita de staking ou a base de custo de um airdrop; registre esses valores de transação explicitamente.

Instruções de Uso​

  1. Copie o template relevante para o seu tipo de transação

  2. Substitua todos os marcadores. Um template não é Beancount válido até que YYYY-MM-DD e cada token [ENTRE_COLCHETES] desapareçam — colchetes não são sintaxe do Beancount, e um deixado para trás é um erro de análise, não um valor silenciosamente ignorado. A substituição é mecânica:

    MarcadorSubstitutoExemplo
    YYYY-MM-DDa data da transação2024-03-20
    [AMOUNT]unidades da commodity, sem aspas0.5
    [CRYPTO]o símbolo da commodity, em maiúsculasBTC
    [EXCHANGE]o componente de conta para a corretoraCoinbase
    [COST_BASIS]o custo por unidade do lote que você está removendo45000.00
    [SALE_PRICE]o preço por unidade pelo qual você vendeu48000.00
    [GROSS_PROCEEDS][AMOUNT] × [SALE_PRICE], antes das taxas24000.00
    [FEE]a taxa da corretora, na moeda em que foi cobrada30.00
    [GAIN][GROSS_PROCEEDS] − [AMOUNT] × [COST_BASIS]1500.00

    Substituir essa coluna no template de Venda de Criptomoeda reproduz o exemplo resolvido impresso abaixo dele, que é a forma mais rápida de verificar se você leu o template corretamente.

  3. Ajuste os nomes das contas para corresponder à sua estrutura de contas, e certifique-se de que cada uma seja aberta pelo Template de Estrutura de Contas — uma conta que nunca é aberta é um erro de carregamento, não um aviso

  4. Adicione metadados conforme necessário para relatórios fiscais ou rastreamento

  5. Verifique os cálculos com bea --file your-file.bean check antes de finalizar os lançamentos. Um lançamento que não balanceia, ou que reduz um lote que você não possui, falha ali em vez de produzir silenciosamente um relatório errado

Melhores Práticas​

  • Use convenções de nomenclatura consistentes
  • Inclua IDs de transação nos metadados
  • Documente transações complexas minuciosamente
  • Verifique taxas de câmbio e preços
  • Mantenha backups regulares dos seus arquivos

Estes templates fornecem uma base sólida para a contabilidade de criptomoedas no Beancount.io. Personalize-os com base nas suas necessidades específicas e padrões de negociação.

Fonte: https://beancount.io/pt/docs/Tips/cryptocurrency-templates-examples