guides15 min read

Bitcoin accounting: what native BTC puts in the books

Bitcoin accounting from the chain up: why a UTXO is not an accounting lot, why a change output is not income, and why the network fee is its own disposal.

M

Maksym Buhai

Accounting Engineer

August 24, 2026 · 15 min read

A cover showing one Bitcoin self-transfer as a small ledger: two input UTXOs spent, and a cold-storage output, a change output and a network fee created

Bitcoin accounting starts with a fact the chain hides: a wallet balance is a pile of spendable outputs, not a cost basis ledger. Native BTC has no issuer, no redemption promise and no built-in accrual, so quantity moves only on an identified receipt or spend, and the network fee is its own disposal.

Most of the work in bitcoin accounting is reconciliation rather than classification. A wallet balance and a lot ledger answer different questions. So the crypto accounting workflow has to keep cost basis history intact across transfers the chain records as brand new outputs, and produce a journal entry for the economic event rather than for the output.

Token type at a glance.

AttributeNative BTC
Token typeNative proof-of-work cryptocurrency
Issuer or counterpartyNone
RedeemableNot applicable
How value accruesNone. Quantity changes only when BTC is received or spent
Ledger modelUTXO
Own-wallet transferNormally no disposal, though the fee still leaves the holder
Primary accounting trapUTXO movements are not accounting lots
Typical IFRS classificationIAS 38, with IAS 2 in applicable cases such as broker-traders
Typical US GAAP treatmentASC 350-60 if in scope

What bitcoin accounting has to get right

Native BTC has no mechanism that changes your quantity on its own. It does not rebase, it carries no protocol conversion rate underneath the unit, and it represents no basket of underlying assets whose composition can drift. One BTC is divisible into 100,000,000 units called satoshis, and after acquisition that quantity changes only through identifiable events: receipts, mining rewards, purchases, disposals and fees.

That rules out most of what goes wrong. A price move changes fair value, not the number of satoshis, so there is no period-end quantity adjustment to look for and no accrual to accrete. Anyone used to a rebasing stablecoin or a yield-bearing wrapper will hunt for a mechanism that is absent here.

What bitcoin accounting has to get right instead is evidence. For each confirmed transaction the chain proves the identifier, the inputs and outputs, the amounts, the block placement and the confirmation depth. It carries no legal name, no invoice, no contract, no purpose, no fiat price, no cost basis and no accounting lot. Ownership, labels and change classification come from wallet descriptors and control testing, not from the chain.

Why a Bitcoin wallet balance is not a cost basis ledger

Bitcoin keeps no single public balance beside a holder's name. It keeps separate spendable outputs created by earlier transactions, each an unspent transaction output, or UTXO. A wallet finds the outputs its keys can spend and adds them up to display a balance. A transaction consumes one or more existing outputs as inputs, creates one or more new outputs, and leaves the difference between total inputs and total outputs as the network fee.

An output is always spent whole. It cannot be partially reduced the way a bank balance is. That is why change exists: to spend 0.15 BTC out of a 0.25 BTC output, the whole output is consumed and the remainder comes back to you as a new output. That change is value that came from you and is still yours. It is not revenue and it is not a fresh acquisition.

One Bitcoin transaction, what it consumes and what it createsTwo outputs you control, 0.38174625 and 0.04732918 BTC, are consumed whole. Three outputs are created: 0.40000000 BTC to cold storage and 0.02904401 BTC of change, both still yours, and 0.00003142 BTC taken as the network fee, which is the only value that leaves you.ConsumedCreated0.38174625 BTCan output you control0.04732918 BTCan output you control0.40000000 BTCcold storage, still yours0.02904401 BTCchange, still yours, not income0.00003142 BTCnetwork fee, the only value that leavesInputs 0.42907543 BTC, outputs 0.42904401 BTC. The difference is the fee, which Bitcoin stores in no field.

An address, a UTXO and an accounting lot answer three different questions. An address is a destination with spending conditions attached. A UTXO is a piece of value that can later be spent. A lot is the accounting record: acquisition history and basis for the units held. One UTXO can carry value from several lots once inputs are combined, and one lot can be spread across several UTXOs, so coin selection must never become the lot method by default.

A single transaction can merge purchased and mined outputs and return change to a fresh address, and the resulting output carries no tag saying which lot it represents. Treat every output as a new lot and you manufacture acquisitions; treat every input as a disposal and you manufacture sales. Either error rewrites basis and holding period for the whole position.

Some economic events leave no trace on the base chain at all. A custodian can buy, sell, lend or freeze credited BTC without moving its aggregate wallets. A pool can accrue a reward across hundreds of daily shares before one later payout. A Lightning channel moves value through signed off-chain states, so only the opening and the eventual settlement reach the chain.

Which events change a BTC position

Only a short list of events changes a BTC position, and each one has a single correct booking.

EventWhat it is economicallyHow it is booked
Receipt from a third partyAcquisition, or income if it settles a saleNew lot at cost, or at the applicable noncash consideration amount
Change returning to youValue you already ownedNo entry for the retained quantity, never income
Transfer between your own walletsNo change in beneficial ownershipLots carry across; only the fee units are disposed of
Consolidating or splitting outputsRecord-keeping geometryNo acquisition and no disposal
Paying a network feeDisposal of the fee quantityRelieve basis, take gain or loss, charge the fee to its purpose
Mining or pool rewardIncome in the reporting currencyRevenue or other income, and a lot at that value
Sale, swap or spendDisposalRelieve basis, recognise gain or loss

Address generation, message signing and signing a transaction you never broadcast are not events at all.

How to account for a Bitcoin network fee

A Bitcoin network fee is a disposal of the fee quantity, even when the transfer itself moved nothing outside the entity, so it relieves basis and takes gain or loss like any other disposal.

Bitcoin stores no fee field. The fee is derived as total inputs less total outputs, so an importer that sums only the explicit outputs loses it entirely and leaves the wallet quantity irreconcilable to the lot ledger by exactly the fee amount. Take a self-transfer that consumes 0.42907543 BTC of inputs and creates a 0.40000000 BTC cold-storage output plus 0.02904401 BTC of change. The fee is 0.42907543 - 0.42904401 = 0.00003142 BTC, and it appears nowhere as a labelled amount.

At a transaction-date price of $119,077.69 per BTC the fee is worth $3.74, and under FIFO it relieves $3.05 of basis.

AccountDebitCredit
Network fee expense, self-transfer3.74
Digital assets, BTC at FIFO basis3.05
Gain on disposal of BTC used as fee0.69

How to account for Bitcoin mining and pool payouts

A mining reward is income in the reporting currency when it is earned, and a conventional pool payout settles that income rather than creating a second one.

The first transaction in a block is a coinbase transaction, unrelated to the company Coinbase. It has no inputs, it creates BTC, and it also collects the difference between inputs and outputs across every other transaction in that block. It therefore holds two economically distinct components: the protocol-defined block subsidy, which halves every 210,000 blocks, and that block's transaction fees, which depend on user activity and vary enormously. Booking the receipt as one undifferentiated reward line is a common bitcoin accounting error, because the two components can be characterised and measured differently.

The Bitcoin Developer Guide states that a coinbase output cannot be spent for at least 100 blocks. That is a restriction on spending, not a rule about when the reward is earned, so maturity is not automatically the recognition date.

Bitcoin Developer GuideSource link

Most commercial mining runs through a pool, which measures contribution using private records called shares that are not Bitcoin transactions at all. A conventional custodial pool accrues the participant's allocation on its own ledger, deducts its fee, and pays out on-chain later. The accrual creates revenue and a receivable, the payout settles the receivable, and booking both counts the same reward twice.

Take a gross allocation of 0.04829508 BTC with a 2 percent pool charge of 0.00096590 BTC, leaving 0.04732918 BTC payable, valued at $101,321.82 per BTC. When the allocation becomes enforceable and measurable, it is revenue and a receivable.

AccountDebitCredit
Pool receivable4,893.35
Mining service revenue, gross4,893.35

The payout then settles that receivable. The retained pool charge is shown gross as contra-revenue rather than netted away, because it is consideration payable to a customer with no distinct service attached.

AccountDebitCredit
Digital assets, BTC pool lot4,795.48
Mining revenue, pool fee (contra-revenue)97.87
Pool receivable4,893.35

Pay-per-share arrangements can usually be estimated before any block succeeds; a success-based share usually cannot, and that drives when the amount stops being constrained. That is a separate question from the date that prices it, and measurement date is where the frameworks split: IFRS 15 requires noncash consideration at fair value but names no date, so the entity adopts and discloses a policy, while ASC 606-10-32-21 fixes it at contract inception. A pool participant cannot assume the payout-moment price is the US GAAP answer.

Bitcoin journal entries: a worked example

Northstar Mining Ltd. reports in US dollars and prices each event from a published one-minute candle close. The entries follow the IFRS cost model, and the FIFO subledger is a financial-reporting illustration, not a tax method.

Date and time (UTC)EventPrice per BTC
11 Feb 2025 15:30Purchase97,039.85
8 May 2025 18:45Pool payout101,321.82
16 Jul 2025 09:20Cold-storage transfer119,077.69
22 Sep 2025 16:10Sale112,830.75

Northstar buys 0.38174625 BTC into self-custody for cash.

AccountDebitCredit
Digital assets, BTC37,044.60
Cash37,044.60

The May allocation and payout fall in the same period, so they collapse into one entry.

AccountDebitCredit
Digital assets, BTC pool lot4,795.48
Mining revenue, pool fee (contra-revenue)97.87
Mining service revenue, gross4,893.35

In July, Northstar moves both outputs to cold storage. Nothing leaves the entity except the 0.00003142 BTC fee: $3.74 of expense, $3.05 of relieved basis, $0.69 of gain. Both lots survive the transaction even though both outputs are new.

In September it sells 0.07563879 BTC for cash.

AccountDebitCredit
Cash8,534.38
Digital assets, BTC7,339.98
Gain on disposal of BTC1,194.40

At no point does a UTXO boundary line up with a lot boundary. Sound bitcoin accounting reconciles quantity to the chain and basis to the subledger as two separate proofs.

Bitcoin under IFRS and US GAAP

Under IFRS, native BTC is normally an IAS 38 intangible asset, with IAS 2 inventory treatment where BTC is held for sale in the ordinary course, including the broker-trader case. Under the cost model it is carried at cost less impairment, so a price rise is not automatically recorded. Under US GAAP, in-scope holdings sit in ASC 350-60 and are measured at fair value with every change in net income. Two correct ledgers can therefore diverge in carrying value while their quantities agree to the satoshi, which is the subject of our FASB digital asset explainer.

The Committee concluded that a cryptocurrency is neither cash nor a financial asset, and that an entity applies IAS 38 to holdings of cryptocurrencies where IAS 2 does not apply.

IFRS Interpretations CommitteeSource link

When custody changes the answer

Sending BTC to an exchange creates an output the intermediary controls. Whether you still recognise BTC depends on the contract and the governing law: whether coins are segregated, whether the custodian may use them, who bears gains and losses, and what you would recover in insolvency. Some arrangements preserve beneficial ownership, others replace BTC with an unsecured contractual claim, and both look identical on an exchange screen.

Lending has the same shape. If the borrower may sell or reuse the BTC and owes only equivalent BTC later, the lender may hold a receivable rather than BTC, and the borrower recognises both an asset and an obligation to return BTC. Principal, interest and collateral are not netted merely because they share a ticker.

How Bitcoin is taxed in most jurisdictions

In most jurisdictions, selling BTC for fiat, exchanging it for another cryptoasset and spending it on goods or services are all disposals measured against basis, while moving BTC between wallets you own is not. Change outputs and consolidated outputs therefore preserve tax history.

BTC received for goods or services, and mining rewards, are income in the local currency at the value on receipt, with the character turning on the facts rather than on one rule. Tax basis, tax lots and the accounting lot table are three separate ledgers.

Beyond that, divergence is real and worth checking rather than assuming. Whether a network fee is itself a taxable disposal differs by jurisdiction, and so does the lot method: a book FIFO subledger is not a tax election anywhere. Our crypto tax accounting guide covers the jurisdiction detail, and a gap in published guidance never means the transaction is tax free.

Common Bitcoin accounting mistakes

Treating a UTXO as an accounting lot. Coin selection is a wallet decision. Letting it drive lot relief silently replaces your stated basis policy with an arbitrary one.

Booking change as income. Change is your own value coming back. Recording it as a receipt inflates revenue and resets the basis of units you already held.

Losing the fee. No field holds it. If your importer sums outputs, every transaction quietly understates what left the wallet.

Treating a self-transfer as a sale and repurchase. That invents a disposal and destroys the original basis and holding period, while missing the one real disposal in the transaction, which is the fee.

Counting a pool reward twice. The accrual creates revenue and a receivable. The payout settles it. Only one of the two is income.

Trusting the chain as a subledger. It proves outputs moved. It cannot prove ownership, purpose, invoice timing or classification.

Frequently asked questions

Does a coinbase output count as revenue before it can be spent?

No. The 100-block maturity rule is a spending restriction on a newly mined coinbase output, not a recognition date. Acceptance on the active chain, confirmation depth and maturity answer three different questions, and none of them is a free timing election. If a block later leaves the active chain, the entry has to be revised.

Is consolidating UTXOs an accounting event?

No. Combining twenty outputs into one changes the geometry of your wallet, not your position, and the lots survive unchanged. The only economic effect is the network fee, which is a genuine disposal of the fee quantity and should be booked as one.

What evidence should support a BTC ledger at year end?

Keep four layers: raw transaction data for the protocol facts; wallet descriptors and labels for ownership and change classification; custody and pool agreements for rights; and a reproducible price observation recording venue, product, timestamp and timezone, with the fallback defined before an outage rather than after it.

What should I check first when the numbers do not agree?

Triage by symptom. If the wallet total agrees but the lot ledger does not, inspect change and fees. If the lot ledger agrees but the economic position does not, inspect custody, loans and pool balances. If quantity agrees but carrying value does not, inspect the price convention and the reporting framework.

How Tokenbooks records native BTC

Tokenbooks reads Bitcoin at the level the chain works at: inputs and outputs, derived fees, self-transfer detection and change classification, with an accounting lot ledger that runs beside wallet state instead of being inferred from it. Transfers between your own wallets keep their basis, change never lands as income, and the derived fee follows your gas fee policy, either as its own disposal or as an expense.

If you want the wider foundation first, read our crypto accounting guide and the glossary entries for double-entry bookkeeping and fair market value. Then connect a wallet and check the lot ledger against your own reconciliation.

Frequently Asked Questions

Is moving Bitcoin between my own wallets a taxable disposal?
Usually no. Beneficial ownership does not change when you move BTC between addresses you control, so there is normally no disposal of the transferred quantity. The network fee is different, because those units leave you. Fee treatment varies by jurisdiction, so document the rule you applied.
Why does my Bitcoin wallet balance not match my cost basis records?
Because a UTXO is not an accounting lot. One transaction can merge purchased and mined outputs and return change to a fresh address, and the new output carries no acquisition history. Treating each output as a new lot resets basis, so cost basis tracking has to run separately from wallet state.
How should a Bitcoin network fee be recorded?
As a separate disposal of the fee quantity, then as an expense or an amount allocated to whatever the transaction achieved. Bitcoin stores no fee field, so the amount has to be derived as total inputs less total outputs. An importer that sums only outputs loses it entirely.
Is a mining pool payout revenue when it arrives?
Not if the reward was already earned. A conventional pool accrues your allocation on its private ledger and pays it later, so the accrual creates revenue and a receivable, and the payout settles that receivable. Booking both as income counts the same reward twice.
Does holding Bitcoin accrue like staking or a rebasing token?
No. Native BTC has no issuer paying interest, no rebasing balance and no conversion rate underneath the unit. Quantity changes only through identifiable events such as receipts, mining rewards, purchases, disposals and fees. A price move changes fair market value, not the satoshis you hold.

Related articles

This is not tax, legal, or accounting advice.
Tokenbooks builds accounting software; we are not a CPA firm and not a tax adviser. Treatment varies by jurisdiction, by entity, and over time, and the rules described here can change after publication. Confirm any position with your own accountant or tax adviser before you rely on it.