Understanding Bitcoin Block Explorers for Accounting
Learn how to read Bitcoin transactions, understand UTXOs, and use block explorers to get your crypto accounting right.
.png)
Use AI to summarize this article
Even though Bitcoin is the oldest blockchain, the accounting for BTC transactions isn’t as straightforward as you might think. There’s several existing Bitcoin block explorers, but unless you understand the fundamentals of how the blockchain works, all of the numbers and hashes will be a soup of alphanumeric characters.
In this article, we’ll break down how to read a BTC transaction and review essential Bitcoin terminology that will make accounting for this legacy chain a breeze.
Why Bitcoin Doesn't Work Like Ethereum
Bitcoin’s plumbing is fundamentally different from other popular chains like Ethereum and Solana. At the network level, Bitcoin’s consensus mechanism is Proof of Work (i.e. throwing compute at an arbitrary puzzle to maintain network security), as compared to Proof of Stake, where users lock up their assets to secure the chain. The entire framework for how transactions work and money moves throughout the ecosystem is distinct as well.
Simply put, Bitcoin is based on a UTXO model while Ethereum, Solana and most other blockchains use an account model. UTXO stands for “Unspent Transaction Output,” and they exist because Bitcoin doesn’t track account balances - it tracks unspent "coins" or UTXOs. For now, let’s imagine UTXOs as individual physical bills, like a $1 and $5 bill, not as a standard checking account.
This concept is abstract so let’s explain it with an example:
- Let’s say Alice has two UTXOs in her wallet: 0.4 BTC and 0.3 BTC (total 0.7 BTC)
- She wants to send Bob 0.5 BTC
- What happens on-chain:
- Alice’s Bitcoin wallet selects both UTXOs (0.4 + 0.3 = 0.7) as inputs
- The transaction creates two outputs:
- 0.5 BTC → Bob
- 0.199 BTC → change back to Alice
- 0.001 BTC implicitly goes to the miner as fee (inputs minus outputs)
- Alice's two old UTXOs are destroyed; one new 0.199 BTC UTXO replaces them (different addresses)
Balances aren't "updated", rather the old UTXOs are spent and new ones replace them. That’s why the naming “UTXO” is so brilliant and descriptive in the first place - it’s literally describing money you haven’t spent yet that was a result of leftover change from a previous transaction. Practically speaking, UTXOs are Bitcoin addresses you can lookup on an explorer and see how much BTC is left within them. The confusing part is that one Bitcoin wallet can contain several - if not thousands - of individual UTXO addresses, which makes tracing detail on the block explorer so difficult.
By contrast, Ethereum and Solana are simpler to understand. Accounts on those blockchains work like a regular fiat checking account. If you have ETH or other tokens in your Ethereum wallet, it’s associated with one particular wallet address. For example,
- Alice has 50 USDC in her Ethereum address, 0x…
- She wants to send 25 USDC to Bob
- What happens on-chain
- Alice’s 0x…wallet sends 25 USDC to Bob; the remaining 25 USDC is still in her 0x…wallet
- Bob gets 25 USDC to his 0x…address
UTXOs don’t exist on Ethereum (thank goodness) - everything is stored at the wallet/account level, which is why accounting on Ethereum is much easier than Bitcoin.
Reading a Real Transaction on a Block Explorer
For this example, we’ll be using blockchain.com as our Bitcoin block explorer. However, there are several other BTC explorers to choose from, including:
We’ll be looking at this transaction hash: 2d59f0e800f41d49342fdc0601ba6f223bd7c0623672b5eef6d6b800a7dfb471

The explorer is structured to show “inputs” on the left side (“From”) and “outputs” on the right side (“To”).
This is a real example of a revenue transaction in which my client received 0.02498165 BTC to their address (their UTXO). You can split the transaction into the main pieces:
- The input was 2.49284959 BTC
- 0.02498165 BTC was deposited into my client’s wallet
- The change, 2.46785609 BTC, was deposited into a new UTXO that is still controlled by the sender/from address
- The fee is 0.00001185 BTC, which was paid by the sender and eventually goes to the Bitcoin miners
This is confusing for accountants because the original address & change address are different, but they both have the same owner and the same master key (Bitcoin wallet architecture and keys are beyond the scope of this article, but just know you can have multiple UTXOs all controlled by the same person).
An analogous Ethereum transaction is this one: 0x52879127eeacc01bfdb61966aa57b347c6209670402436952308e0d3e34b07da

A client is paying Hash Basis 1,000 USDC, but there aren’t any UTXOs. 1,000 USDC is added to my permanent wallet address (0x224522CaEcfCC0b0c2020DB35C9145a41a8B6c23) while my client’s USDC balance decreases by 1,000 USDC, all within their same account.
How to Read a More Complex Bitcoin Transaction
A more complicated BTC transaction can be examined here: e0c3496e69ce8877b74af9bbec2085b6e36d25f3c491d2ad7225668e3ad17cd3
This transaction has the following structure:
At a high level, all of the input UTXOs are being combined so that 1.79700606 BTC can be sent to bc1qu…770hl6 and the remaining BTC (0.20787722 BTC) can be parked in a new UTXO, bc1q…vpz03. Because this was a client transaction, I had the full context and knew it was to pay a marketing vendor 1.79700606 BTC. However, without the additional detail, the transaction would’ve been a mystery and I wouldn’t be able to distinguish between the true recipient and the new UTXO owned by my client. Every UTXO that your client owns needs to be tracked, so it’s a big effort to constantly track these UTXOs, especially when new ones are generated with every transaction. I’ve managed this pain point by (1) being added as a “view only” user on the client’s wallet so I can see every transaction and UTXO and (2) encouraging clients to use wallets that only ever use one UTXO (which is possible, depending on which wallet you choose).
This transaction highlights the importance of context and always being in constant communication with your clients about their activity. With Bitcoin at least, you can’t rely on the block explorer alone to give you the full accounting story.
UTXO Consolidation & "Dust"
“Dust” is a peculiar term that’s used during accounting for Bitcoin. Dust is tiny leftover UTXO amounts that are created during BTC transactions. Typically this “dust” is worth less than the transaction fee it would cost to spend that BTC. For example, let’s say you have 0.000005 BTC in your wallet, but to spend it, your transaction needs to pay a network fee of around 0.0000068 BTC. The dust is “stuck” because you economically can’t do anything with it.
When BTC fees are low, users will consolidate all of the dust that’s strewn across various UTXOs into a single new UTXO. You can usually spot a dust consolidation transaction because there’s hundreds of tiny UTXOs on the Input side and only one UTXO on the output side (the sum of all the inputs minus the miner fee).
For example, see the transaction here: ee80c40afc02188d755ff70ece0ada40e9176b91b16d1fba2092122f451d7ba0

Consolidation unlocks the dust amounts but the trade-off is privacy; anyone can now see what your main UTXO is. Taken to extremes, this could result in a “dusting attack” where attackers will spam addresses with dust to try and de-anonymize them. Coinbase wrote a whole article on this scam here.
Checking Balances: OKLink & Other Tools
A critical part of crypto accounting is ensuring the ending balances per your crypto subledger and general ledger tie out to the on-chain balance. The best on-chain balance checker I’ve found for Bitcoin is OKLink: https://www.oklink.com/historical-balance-check#chain=btc

A quick caveat though: a single address showing "0 balance" doesn't mean the wallet is empty. The funds may be spread across many UTXOs (this balance checker is looking at single UTXOs; it doesn’t know which ones are aggregated into one main wallet). For client accounting, it’s crucial to have access to the wallet logs as a whole so the total balance can be validated.
Best Practices for Bookkeeping Bitcoin Transactions
As mentioned above, the best case scenario is that you have access to your client’s Bitcoin wallet or their transaction logs so the accounting can be accurate and not block explorer-dependent. Several of my Bitcoin clients custody their tokens in well-known providers like Anchorage, BitGo or Fireblocks, which definitely simplifies the accounting because their logs are robust and descriptive. In addition, these larger custodians often expose APIs that connect directly to the client’s subledger, like Bitwave or Cryptio. With the API, these crypto subledgers pull only actual sends/receives (ignoring irrelevant change addresses).
However, if there’s no API and you’re forced to do Bitcoin accounting the “old-school” way (i.e. plugging in individual UTXO addresses), then having access to wallet logs is key. The crypto subledgers have as much context as the block explorers when syncing your raw BTC data (so basically none), which is why the human accountant is so important here. It’s our job to talk to the client, ask questions like, “What was this transaction for? Are there any new addresses this month?”, and always stay on top of ending balance checks. Without this diligence, your Bitcoin accounting will slide into chaos before you know it.
I find that with the combination of wallet logs + the block explorer, I can make any crypto subledger bend to my will. It definitely takes more research and investigation than your typical Ethereum send, but the chase is part of the fun. Happy Bitcoin accounting! 🪄
Mackenzie Patel is a CPA and the CEO/Co-founder of Hash Basis, a crypto-native accounting firm. She and her Co-founder started Hash Basis to share their crypto accounting & tax expertise with the blockchain industry.
She also serves as an instructor at the Crypto Accounting Academy, where she trains accounting professionals on navigating block explorers.
Additionally, Mackenzie is the host of Mr. Martino’s Ledger, a podcast about the history of accounting. She is based in San Francisco and loves hiking around Angel Island.





