What this is
You moved Bitcoin out of one of your wallets to receive fiat. The Bitcoin left your business; the fiat (USD, EUR, etc.) came in.
Examples:
- You sold 0.5 BTC on Coinbase and received $40,000 USD
- You spent BTC to a Bitcoin ATM and got cash
- You sent BTC to a third party in exchange for them sending you USD via wire
This is the inverse of Recording a Bitcoin Purchase. The bookkeeping is similar but with one extra wrinkle: gain or loss.
Step 1: record the sale itself as a Transfer
Like a purchase, a sale is conceptually a transfer between two of your wallets:
- BTC out of your Bitcoin wallet
- Fiat in to your USD wallet (or wherever the proceeds went)
In BitBooks:
- Transactions → New Transaction
- Mode: Transfer
- From wallet: your Bitcoin wallet (e.g., "Coinbase BTC")
- From amount: BTC you sold (e.g., 0.5 BTC)
- To wallet: your USD wallet (e.g., "Coinbase USD")
- To amount: USD received (e.g., $40,000)
- Date: when the trade settled
- Memo: useful context

The implied exchange rate is $40,000 / 0.5 = $80,000 per BTC. This is what you actually got, not the market rate at that exact moment. They're often close but not identical.
Step 2: realized gain or loss
Here's where a sale differs from a purchase. When you sell Bitcoin, you typically realize a gain or loss because the price you sold at differs from the price you originally paid.
Suppose you bought 0.5 BTC at $50,000 each (cost basis: $25,000). You just sold them for $40,000 each (proceeds: $20,000 worse... wait, $40,000 each means $20,000 total per BTC. Let me redo this).
Let me use a cleaner example. You bought 0.5 BTC at $50,000 each. Cost basis: $25,000 total. Today you sell those 0.5 BTC at $80,000 each. Proceeds: $40,000.
Gain = Proceeds - Cost Basis = $40,000 - $25,000 = $15,000 realized gain
This needs to land in your books somewhere. Your P&L should show the $15,000 gain.
How BitBooks handles it
For now, BitBooks doesn't auto-compute realized gains during a Transfer. You'll need to record the gain explicitly. Two paths:
Path A: a separate journal entry for the gain
After the Transfer transaction, create a journal entry:
| Account | Debit | Credit |
|---|---|---|
| BTC Hot Wallet (or wherever the BTC was sourced from) | $15,000 | |
| Realized FX Gain on Bitcoin | $15,000 |
Wait, that's not balanced. Let me redo.
Actually, the gain comes from the Transfer step itself if the Transfer was recorded at the original cost basis. The cleaner way is:
- Record the Transfer at cost basis: 0.5 BTC for $25,000 (the cost-basis dollar value)
- Record a second entry recognizing the additional $15,000 of cash:
| Account | Debit | Credit |
|---|---|---|
| Cash on Hand | $15,000 | |
| Realized FX Gain on Bitcoin | $15,000 |
Now the books reflect: BTC gone, $40,000 cash in, $15,000 of that recorded as gain.
Path B: use Advanced Mode for one combined entry
In Advanced Mode (Journal Entries), do everything as one entry:
| Account | Debit | Credit |
|---|---|---|
| Cash on Hand | $40,000 | |
| BTC Hot Wallet (at cost basis) | $25,000 | |
| Realized FX Gain on Bitcoin | $15,000 |
This is the cleanest record: one entry, all sides visible, gain explicitly booked.
Where to find the cost basis
If you ran an FX revaluation recently, the most recent revalued amount is the basis (gain after the revaluation is the difference between sale price and the post-revaluation amount).
If you've never revalued, the cost basis is the price you originally paid (which BitBooks recorded with each purchase transaction).
For taxable purposes, you'll typically use a specific cost-basis method (FIFO, LIFO, specific identification, etc.). Talk to your tax preparer about which method applies to your jurisdiction. BitBooks records purchase prices, but you choose how to apply them to sales.
What if it's a loss instead?
Same structure, opposite sign. Replace "Realized FX Gain" with "Realized FX Loss" (an Expense account, or contra-revenue, depending on how your chart is set up):
| Account | Debit | Credit |
|---|---|---|
| Cash on Hand | $25,000 | |
| Realized FX Loss on Bitcoin | $5,000 | |
| BTC Hot Wallet (at $30,000 cost basis) | $30,000 |
Now $30,000 of BTC left, $25,000 of cash came in, $5,000 of that decline is recognized as a loss.
Common scenarios
Selling on a custodial exchange
Same Transfer + gain/loss pattern. The exchange might also charge a fee. Bake the fee into the rate (Path A above) or itemize it (Path B with a Fees line).
Spending Bitcoin (using BTC to pay a vendor)
Different flow. This isn't really a sale; it's an expense paid in BTC. Record as a regular expense transaction with the BTC wallet on the "money out" side. The exchange rate at the moment of the spend determines the dollar value of the expense. If you previously recorded the BTC at a different basis, you may also have a realized gain or loss.
For most one-off spends, this complexity isn't worth it. Many small businesses ignore the gain/loss on individual spends and only track gain/loss when they explicitly sell BTC for fiat. Talk to your accountant.
Selling at a tax loss
Useful for tax-loss harvesting. Same accounting; just be aware of wash-sale rules in some jurisdictions (you can't immediately re-buy and claim the loss).
Where to go next
- Recording a Bitcoin Purchase for the inverse transaction
- Tracking Bitcoin Value Changes for FX revaluation accounting
- Capital Gains Tracking for Bitcoin Holdings for the tax-side picture
- Recording a Wallet-to-Wallet Transfer for the general transfer pattern