What capital gains are
When you sell Bitcoin (or any asset) for more than you paid for it, the difference is a capital gain. If for less, it's a capital loss.
Most jurisdictions tax capital gains. The amount and rate depend on:
- Your jurisdiction (US, Canada, UK, etc., all different)
- Your holding period (short-term vs long-term, often 1 year boundary)
- Your business structure (individual, sole proprietor, corporation)
- The transaction type (sale, exchange, swap)
BitBooks records the data your tax preparer needs to compute capital gains. The actual computation is theirs.
Realized vs unrealized gains
Two flavors:
Unrealized
You bought BTC at $50,000 each. Today BTC is $80,000. You haven't sold. You have an unrealized gain of $30,000 per BTC.
In most jurisdictions, unrealized gains aren't taxable for individuals (you don't owe tax until you actually sell).
For some businesses (especially treasuries with mark-to-market accounting requirements), unrealized gains may need to be reported.
Realized
You sold the BTC. The gain (or loss) is now realized. Tax applies.
For tax filings, realized gains are what matters. Unrealized gains are sometimes also reported (depending on jurisdiction and accounting standard) but don't trigger tax.
How BitBooks supports gain calculations
BitBooks records every Bitcoin acquisition with:
- The date
- The amount in BTC (or sats)
- The cost basis (the USD/CAD/EUR value at acquisition time, computed from the actual transaction or rate)
- The wallet that received it
- The contact (if any) and memo
When you sell, you record the disposal with:
- The date
- The amount sold
- The proceeds (the USD/CAD/EUR value received)
Your tax preparer takes the acquisition list and the disposal list, applies your chosen cost basis method, and computes gains.
BitBooks doesn't auto-compute gains in the current version. The data is there; the computation is one more step.
Cost basis methods
When you sell some Bitcoin, which "lot" you're considered to have sold matters for the gain calculation.
FIFO (First In, First Out)
The oldest BTC you bought is the first one sold. Most common default in many jurisdictions.
Example: You bought 0.5 BTC at $50,000 in January, then 0.5 BTC at $70,000 in March. You sell 0.5 BTC in May at $80,000.
Under FIFO: the BTC you sold is the January batch (cost basis $50,000). Gain = $80,000 - $50,000 = $30,000.
LIFO (Last In, First Out)
The newest BTC is sold first. Less common; some jurisdictions disallow.
Same example under LIFO: you sold the March batch (cost basis $70,000). Gain = $80,000 - $70,000 = $10,000.
Specific identification
You manually pick which specific BTC was sold. Maximum flexibility (often used to optimize tax) but maximum paperwork.
Average cost
All your BTC averages out. In our example: average cost = $60,000 per BTC. Gain = $80,000 - $60,000 = $20,000.
Some jurisdictions require a specific method (or restrict choices). Talk to your preparer about which applies.
Mining and earned BTC
If you mine Bitcoin or earn it as payment for goods/services, the tax treatment is different from buying:
- At time of receipt, the USD value of the BTC is ordinary income (not capital gains)
- Your cost basis for that BTC is the value at receipt
- When you later sell, the difference between sale price and receipt-time value is a capital gain or loss
So a freelancer who gets paid 0.01 BTC when BTC is at $80,000:
- They have $800 of ordinary income that year
- Their cost basis for that 0.01 BTC is $800
- If they later sell at $90,000 per BTC, they have $100 of capital gain on that 0.01 BTC
BitBooks records the receipt date, BTC amount, and USD value, which is what's needed.
Holding period
Many jurisdictions distinguish:
- Short-term capital gains (held less than 1 year, taxed at higher ordinary income rates)
- Long-term capital gains (held 1+ year, often taxed at lower rates)
The holding period clock starts when you acquired the BTC. If you bought February 1, 2025 and sell February 5, 2026, that's just over a year, so usually long-term.
BitBooks records acquisition dates with each transaction. Your tax preparer applies the holding-period logic per jurisdiction.
What about Lightning?
Lightning transactions are still Bitcoin. Same tax treatment:
- A Lightning sale (you received sats) is income at the receipt time
- A Lightning purchase (you paid sats for something) is a disposal of those sats; if their cost basis differs from the value at the time of payment, you have a small gain or loss
For high-volume Lightning operations (a coffee shop with 100 Lightning sales per day), the per-transaction gain/loss tracking can be impractical. Many small businesses simplify by:
- Treating Lightning income as ordinary income (which it is)
- Not separately tracking the gain/loss when they spend sats (treating the spending as just an expense at the value at spend time, with no gain/loss recognition)
This is a simplification, not perfectly correct under strict tax rules. Talk to your preparer.
Hard forks, airdrops, and unusual events
Tax treatment for these varies wildly by jurisdiction:
- Hard forks (Bitcoin Cash from Bitcoin in 2017): some jurisdictions treat as ordinary income at the time, some don't. BitBooks would record the new asset (BCH) as a separate wallet with its own cost basis.
- Airdrops: typically ordinary income at receipt
- Wrapped BTC, sidechains: tax treatment varies
If your business deals with these, talk to a specialist. BitBooks records the data; the rules require specialist help.
Common questions
"My business has thousands of BTC transactions. How do I do gain calculations?"
Use a specialized crypto tax tool (CoinLedger, Koinly, etc.). Export from BitBooks, import to the tool, run the report. The tool computes gains using your chosen method.
For low-volume businesses (a few dozen BTC transactions per year), your preparer can do this manually.
"Will BitBooks build a capital gains report?"
It's on the roadmap. For now, the General Ledger export plus a separate tax tool gets the job done.
"What about converting BTC to a stablecoin (USDC, USDT)?"
In most jurisdictions, this is a taxable event (you sold BTC and acquired a different asset). The realized gain/loss applies. Record it as a Transfer in BitBooks, then a separate gain/loss entry per Recording a Bitcoin Sale.
"What if my jurisdiction doesn't tax crypto capital gains?"
A few jurisdictions don't (Portugal as of recent years, some specific exemptions). Your preparer applies local rules. BitBooks data still useful for general bookkeeping even if no specific tax computation is needed.
Where to go next
- Recording a Bitcoin Sale for the disposal-side accounting
- Tracking Bitcoin Value Changes for unrealized gain accounting
- Preparing Your Books for Tax Season for the year-end checklist
- Exporting Data for Your Accountant for what to send your preparer