Folio v0.9 — CEX + On-chain Consolidation is liveSee what's new →

Bitcoin accounting that respects the UTXO model

Bitcoin doesn't have accounts. It has UTXOs. Cost basis on Bitcoin works fundamentally differently from Ethereum, and pretending otherwise is how teams get audit findings. We do it right.

L1Bitcoin Native: BTC Supported since 2024

The accounting trap on Bitcoin is the assumption that you can apply Ethereum-style "wallet balance" logic to a UTXO chain. You can't — and the IRS, HMRC, and DGFiP each have specific guidance on how to compute cost basis when each spend draws from a different unspent output. Wag3s implements a real UTXO-aware cost basis engine: every output you receive becomes a tracked lot with its acquisition date, and every spend selects from those lots according to your chosen method (FIFO, LIFO, HIFO, or specific identification). On top of that, we cover the modern Bitcoin stack — Lightning channels, Ordinals inscriptions, BRC-20 / Runes tokens, and Taproot-related new transaction shapes.

What's tracked on Bitcoin

UTXO-aware cost basis

Every receive creates a tracked lot. Every send selects from lots according to FIFO / LIFO / HIFO / specific ID — the auditor-defensible method.

Mining and staking-equivalent rewards

Block rewards and transaction fee receipts for miners. For pooled mining, we reconcile pool payouts against the underlying contribution.

Lightning Network channels

Open / close events, in-flight payments, channel rebalancing — with channel-balance reconciliation at month-end.

Ordinals inscriptions

Inscription mints, transfers, marketplace sales — cost basis tracked per inscription against the original sat.

BRC-20 / Runes

Token mints, transfers, swaps via the BRC-20 and Runes standards. Each balance change reconciled against the underlying UTXO.

Multi-sig & Taproot script paths

2-of-3 multi-sig, Taproot script-path spends, time-locked outputs — decoded and attributed.

Custody integrations

Coinbase Prime, BitGo, Anchorage, Fireblocks, Ledger Vault, Casa — wallet activity reconciled against custodian statements.

Common Bitcoin transaction patterns we classify

  • Receive (single or multi-output)
  • Send (with change output)
  • Coinbase reward (block subsidy + fees)
  • Pool payout (mining reward distribution)
  • Lightning channel open
  • Lightning channel close (cooperative or unilateral)
  • Lightning payment (settled or in-flight)
  • Ordinal inscription (mint with sat reference)
  • Ordinal sale (PSBT-based marketplace exchange)
  • BRC-20 mint / transfer
  • Runes etching / minting
  • Multi-sig spend (2-of-3, 3-of-5, etc.)
  • Taproot key-path spend
  • Taproot script-path spend
  • Time-locked output spend (CSV / CLTV)
  • Replace-by-fee (RBF) replacement
  • Child-pays-for-parent (CPFP) acceleration

What changes when you book Bitcoin

Cost basis must be lot-based, not wallet-balance-based

Saying "I bought 1 BTC at $30K and 1 BTC at $50K, and now I'm selling 0.5 BTC" is incomplete on Bitcoin. The 0.5 BTC came from a specific UTXO, which itself was a specific historical receive. Wag3s tracks every lot at the UTXO level so realized gain is computed correctly under the IRS, HMRC, and DGFiP rules.

Lightning is off-chain and the audit trail looks different

Lightning payments don't appear on the main chain — only the open and close events do. The intermediate flow is captured from your node's payment log. We reconcile both, so a finance team running a Lightning service has a defensible record at audit time.

Ordinals make sats individually identifiable

An Ordinal inscription is anchored to a specific sat. When that UTXO is spent, the sat moves to a new output, carrying the inscription. We track inscription movement separately from BTC balance — important for marketplace activity and cost-basis treatment of NFT-like assets.

BRC-20 balances live in the indexer, not in the chain

BRC-20 token balances are computed off-chain by indexers from the inscription history. We integrate with the standard indexers and reconcile balances at every snapshot. Discrepancies between indexers are surfaced for review.

Mining rewards are ordinary income on receipt

Block rewards are taxable as ordinary income on the date received. Wag3s books them at the fair-value on the block timestamp, with the block-reward amount and any fees broken out. For pooled mining, we reconcile pool payouts against the implied contribution.

Bitcoin accounting questions

How does Wag3s pick the right UTXO when I send Bitcoin?

It depends on the cost-basis method you've configured. FIFO selects the oldest lot first; LIFO the newest; HIFO the highest cost basis (minimizing realized gain). Specific-identification mode lets you choose the lot manually for each spend. The chosen method is applied consistently and documented in the audit trail.

Does Wag3s support Lightning Network accounting?

Yes. We import payment history from your Lightning node (LND, Core Lightning, Eclair) and reconcile channel state at every period close. Channel opens are booked as transfers, channel closes settle the lot accounting, and individual Lightning payments are tagged with their counterparty and purpose where decodable.

How are Ordinals classified for tax?

Ordinals are treated as collectibles in most jurisdictions. The mint event establishes cost basis (the inscription cost plus the sat); the sale event realizes gain or loss. We surface the inscription metadata so an auditor can identify the asset, and we handle the PSBT-based marketplace flow without losing trail integrity.

What about taxation of mining income?

Mining is ordinary income on receipt at fair-value. We book each block reward at the BTC price on the block timestamp. For pooled mining, the pool payout is the income event; we reconcile back to the user's hash-rate contribution where the pool exposes that data. Hardware depreciation, electricity, and other operating costs are tracked separately on the operating-company side.

How does Wag3s reconcile against my custodian's statement?

We pull the custodian's statement (Coinbase Prime, BitGo, Anchorage, Fireblocks) at month-end and compare the implied balance against our independently computed balance from the on-chain UTXO history. Variances are surfaced with the offending transaction for review — the same workflow you'd run on a fiat bank reconciliation.

Book Bitcoin the right way

Free during Alpha. Connect a wallet, see every transaction reconciled to journal entries.