این راهنما قالبهای کاربردی Beancount و نمونههای واقعی را برای سناریوهای رایج ارزهای دیجیتال فراهم میکند. این قالبها را برای نیازهای حسابداری ارز دیجیتال خود کپی و تطبیق دهید.
نحوه خواندن این بلوکها
هر بلوک محصور شده در زیر یکی از سه نوع است و قابل جایگزینی با یکدیگر نیستند:
- قالبها شامل مکاننماهای
[براکتدار]و تاریخهایYYYY-MM-DDهستند. تا زمانی که مقادیر واقعی را جایگزین نکنید، بارگذاری نمیشوند — براکتها نحو Beancount نیستند. - نمونهها مستقیماً زیر قالب خود قرار دارند، تاریخها و مقادیر واقعی دارند و برای بارگذاری نوشته شدهاند. هر یک از آنها همچنان نیاز دارد که حسابهایی که لمس میکند باز باشند، که قالب ساختار حساب در زیر برای آن است. تنها استثنا بلوک تطبیق است که موجودیهایی را تأیید میکند که فقط دفتر کل خود شما میتواند برآورده کند.
- بلوک آربیتراژ وام فلش شبهکد است و در جایی که ظاهر میشود برچسبگذاری شده است.
دو قرارداد در تمام آنها جاری است:
- حسابهای درآمد اعتبار دارند، بنابراین منفی هستند. سود تحققیافته یک ثبت منفی در
Income:CapitalGains:…است؛ زیان تحققیافته یک ثبت مثبت درExpenses:CapitalLoss:…است. برعکس کردن این موضوع رایجترین راهی است که یک ورودی ارز دیجیتال در تراز کردن شکست میخورد. - کارمزد یک بار به عنوان هزینه و یک بار به عنوان کاهش وجه نقد ثبت میشود. درآمد ناخالص به حساب نقدی میرود، کارمزد از آن خارج میشود و تفاوت آن چیزی است که در واقع در حساب شما قرار میگیرد.
یک دفتر کل نمونه زنده ارز دیجیتال را کاوش کنید:
قالب راهاندازی پایه
قالب ساختار حساب
; =============================================================================
; 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"قالبهای معامله
خرید پایه ارز دیجیتال
; 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فروش ارز دیجیتال
; 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لطیفه واگذار شده به قیمت تمامشده ۲۲,۵۰۰.۰۰ دلار است، فروش ۲۴,۰۰۰.۰۰ دلار ناخالص به ارمغان میآورد و ۳۰.۰۰ دلار از آن به صرافی میرسد — بنابراین ۲۳,۹۷۰.۰۰ دلار وجه نقد میرسد و ۱,۵۰۰.۰۰ دلار سود تحقق مییابد. کارمزد را در سود خالص نکنید: کارمزد قبلاً یک هزینه است و کم کردن آن برای بار دوم چیزی است که تراکنش را نامتوازن میکند.
معامله ارز به ارز
; 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معامله ارز به ارز اولین کالا را واگذار میکند، بنابراین دقیقاً مانند فروش به نقد، سود تحقق مییابد: ۲۰ اتریوم به دست آمده با ۲,۴۰۰.۰۰ دلار، ۴۸,۰۰۰.۰۰ دلار ارزش دریافت شده در برابر ۴۶,۰۰۰.۰۰ دلار مبنای بیتکوین است. کارمزد ۴۰.۰۰ دلار به صورت نقدی پرداخت میشود و سود را تغییر نمیدهد.
قالبهای انتقال
انتقال از صرافی به کیف پول
; 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}انتقال واگذاری نیست، بنابراین چیزی تحقق نمییابد: همان هزینه {45000.00 USD} با سکهها سفر میکند و حساب دریافتکننده مبنا را به ارث میبرد. دو پیامد به دنبال دارد. کارمزد برداشت به بیتکوین پرداخت میشود و با همان هزینه هزینه میشود، بنابراین آن نیز سودی تحقق نمیدهد — اگر رویه شما چیز دیگری میگوید، کارمزد را با @ قیمتگذاری کنید و یک ثبت سود اضافه کنید. و حساب ارسالکننده باید از قبل 1.0005 بیتکوین با همان هزینه دقیق داشته باشد، نه 1.0، زیرا کارمزد از همان لطیفه خارج میشود. کاهش بدون لطیفه منطبق، حتی اگر مجموعها درست باشند، ثبت نمیشود.
انتقال بین صرافیها
; 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}قالبهای سهامگذاری
سهامگذاری اتریوم
; 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}پاداش سهامگذاری
; 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پاداش درآمدی است که به صورت غیرنقدی دریافت میشود، بنابراین دو ثبت همان رویداد را از هر دو طرف توصیف میکنند: ۰.۰۸ اتریوم با مبنای ۲,۶۰۰.۰۰ دلار در هر واحد میرسد و درآمد منطبق ۲۰۸.۰۰ دلار یک اعتبار است — منفی. {2,600.00 USD} قیمت خارجی است که باید خودتان تهیه کنید؛ Beancount آن را ثبت میکند، آن را واکشی نمیکند. آن را از صرافی یا شاخصی که واقعاً استفاده میکنید یادداشت کنید و همان منبع را در طول سال حفظ کنید.
آن ۲۰۸.۰۰ دلار همچنین مبنای هزینه پاداش از این پس است. وقتی در نهایت ۰.۰۸ اتریوم را میفروشید، فقط حرکت از این تاریخ به بعد سود است — ۲۰۸.۰۰ دلار قبلاً به عنوان درآمد مالیات گرفته شده است و نباید دو بار شناسایی شود. اینکه آیا درآمد در زمان دریافت یا واگذاری مشمول مالیات است بسته به حوزه قضایی متفاوت است؛ دفتر کل در هر صورت واقعیتها را ثبت میکند.
قالبهای دیفای
تأمین نقدینگی یونیسواپ
; 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}این یکی را کالا به کالا تطبیق دهید: ۲۵,۰۰۰.۰۰ دلار اتریوم به اضافه ۲۵,۰۰۰.۰۰ دلار USDC خارج میشود، ۵۰,۰۰۰.۰۰ دلار توکن LP میرسد و کارمزد گاز ۵۰.۰۰ دلار اتریوم را از کیف پول به هزینه منتقل میکند. پایه سکه پایدار @ 1.00 USD را حمل میکند زیرا بدون مبنای هزینه نگهداری میشود — بدون حاشیه قیمت، وزن آن ۲۵,۰۰۰ USDC است که نمیتواند دلار را خنثی کند. در بسیاری از حوزههای قضایی سپردهگذاری در استخر به خودی خود واگذاری هر دو توکن است؛ این ورودی عمداً مبنا را در سراسر آن حمل میکند، بنابراین اگر رویه شما آنها را ایجاب میکند، ثبتهای سود را اضافه کنید.
وامدهی کامپاند
; 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}دو چیز باعث میشود این یکی بارگذاری شود. پایه USDC @ 1.00 USD را حمل میکند تا هر دو طرف مبادله در یک ارز وزن داشته باشند — بدون آن Beancount ۱۰,۰۰۰.۰۰ دلار CUSDC را در برابر ۱۰,۰۰۰ واحد USDC در حال ناپدید شدن میبیند که کالاهای متفاوتی هستند و خنثی نمیشوند. و توکن رسید CUSDC است، نه cUSDC: حرف اول کوچک در هر دو جزء حساب و نماد کالا یک خطای lexer است، مهم نیست پروتکل آن را در رابط خود چگونه مینویسد.
قالبهای استخراج
پاداش استخراج
; 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هزینههای استخراج
; 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قالبهای ایردراپ
ایردراپ توکن
; 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مانند پاداش سهامگذاری، ارزش شناساییشده ایردراپ مبنای هزینه آن میشود. قیمتی را که میتوانید از آن دفاع کنید ثبت کنید — اولین قیمت نقدشونده توکن، از منبعی که نام میبرید — نه یک عدد گرد.
قالبهای پیشرفته
آربیتراژ وام فلش
این بلوک شبهکد است، نه یک قالب. توالی حرکتهای ارزش در داخل یک وام فلش را ترسیم میکند. حتی پس از جایگزینی مقادیر بارگذاری نمیشود، زیرا خطوط خالی بین گروهها تراکنش را پایان میدهند — Beancount یک خطای نحوی در ثبتهای بعدی گزارش میدهد. یک وام فلش واقعی را به عنوان یک تراکنش واحد بدون خطوط خالی ثبت کنید (برچسبگذاری پایهها با کامنتهای ; تورفته)، و پایههای میانی که در همان بلوک به صفر خالص میشوند را حذف کنید.
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هر چیزی که وام لمس کرده تا پایان بلوک از بین رفته است، بنابراین چیزی که دفتر کل در واقع باید ثبت کند سود و کارمزد پروتکل است. مثال آربیتراژ در راهنمای ردیابی پرتفوی شکل تراکنش واحد را نشان میدهد.
پل بین زنجیرهای
; 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}قالبهای بهینهسازی مالیاتی
برداشت زیان مالیاتی
; 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زیان تصویر آینهای سود است: ۶۰۰.۰۰ دلار مبنا خارج میشود، ۴۵۰.۰۰ دلار درآمد ناخالص میرسد و تفاوت ۱۵۰.۰۰ دلار یک ثبت مثبت در حساب هزینه است. ۴۴۵.۰۰ دلار وجه نقد چیزی است که در واقع پس از کارمزد ۵.۰۰ دلار فرود میآید.
سود سرمایه بلندمدت
; 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سود ۱۰,۰۰۰.۰۰ دلار است، نه ۹,۹۵۰.۰۰ دلار: کارمزد ۵۰.۰۰ دلار قبلاً به عنوان هزینه ثبت شده است، بنابراین خالص کردن آن در سود، آن را دو بار کسر میکند. Income:CapitalGains:LongTerm یک حساب جداگانه از Income:CapitalGains:Crypto است فقط برای اینکه دوره نگهداری در گزارش قابل مشاهده باشد — Beancount دورههای نگهداری را برای شما محاسبه نمیکند، به همین دلیل است که فرادادههای date-acquired و holding-period ارزش حمل کردن دارند.
قالبهای تطبیق
تأیید موجودی ماهانه
; 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برخلاف سایر نمونههای اینجا، این یکی بهطور عمدی خودکفا نیست: مقادیر هر چیزی است که صفحههای صرافی خود شما میگویند و تأیید تا زمانی که تراکنشهای شما در دفتر کل نباشند شکست میخورد — که کل هدف آن است. توجه داشته باشید که balance موجودی را در شروع روز نامگذاریشده بررسی میکند، بنابراین تأیید را در روز بعد از دورهای که میبندید تاریخگذاری کنید.
بهروزرسانی قیمت
; 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دستورالعملهای استفاده
-
قالب مربوطه را کپی کنید برای نوع تراکنش خود
-
هر مکاننما را جایگزین کنید. یک قالب Beancount معتبر نیست تا زمانی که
YYYY-MM-DDو هر توکن[براکتدار]حذف شود — براکتها نحو Beancount نیستند و باقیمانده یک خطای تجزیه است، نه یک مقدار نادیدهگرفتهشده. جایگزینی مکانیکی است:مکاننما جایگزین با مثال YYYY-MM-DDتاریخ تراکنش 2024-03-20[مقدار]واحدهای کالا، بدون نقلقول 0.5[ارز]نماد کالا، با حروف بزرگ BTC[صرافی]جزء حساب برای مکان Coinbase[مبنای_هزینه]هزینه تکواحدی لطیفهای که حذف میکنید 45000.00[قیمت_فروش]قیمت تکواحدی که فروختهاید 48000.00[درآمد_ناخالص][مقدار]×[قیمت_فروش]، قبل از کارمزد24000.00[کارمزد]کارمزد مکان، به ارزی که دریافت شده 30.00[سود][درآمد_ناخالص]−[مقدار]×[مبنای_هزینه]1500.00جایگزینی آن ستون در قالب فروش ارز دیجیتال مثال کار شده چاپشده در زیر آن را بازتولید میکند، که سریعترین راه برای بررسی اینکه قالب را درست خواندهاید است.
-
نامهای حساب را تنظیم کنید تا با ساختار حساب شما مطابقت داشته باشد و مطمئن شوید که هر یک توسط قالب ساختار حساب باز شده است — حسابی که هرگز باز نشده یک خطای بارگذاری است، نه یک هشدار
-
فراداده را در صورت نیاز اضافه کنید برای گزارش مالیات یا ردیابی
-
محاسبات را تأیید کنید با
bea --file your-file.bean checkقبل از نهاییکردن ورودیها. ورودی که تراز نمیشود، یا لطیفهای را که ندارید کاهش میدهد، در آنجا شکست میخورد نه اینکه بیصدا یک گزارش اشتباه تولید کند
بهترین روشها
- از قراردادهای نامگذاری سازگار استفاده کنید
- شناسههای تراکنش را در فراداده قرار دهید
- تراکنشهای پیچیده را به طور کامل مستند کنید
- نرخهای ارز و قیمتها را تأیید کنید
- پشتیبانگیری منظم از فایلهای خود را حفظ کنید
این قالبها پایه محکمی برای حسابداری ارز دیجیتال در Beancount.io فراهم میکنند. آنها را بر اساس نیازها و الگوهای معاملاتی خاص خود سفارشی کنید.