all articles

Understanding Bitcoin Block Explorers for Accounting

Learn how to read Bitcoin transactions, understand UTXOs, and use block explorers to get your crypto accounting right.

Category

Accounting

Published

Aug 3, 2026

Read time

8mins read

Table of contents

Join our community platform

A global network solving the hardest challenges in web3 accounting & finance at their organizations

Become a member

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:

BTC Transaction Table Preview
Input Address Input Amount
bc1qsg8zgzg2xznph287xy7uped0ugjmwsf5q9lanpv0ql8va7hfemcs69l3nq 0.01349028 BTC
bc1q64x9v0aq9dmqvk0sqhmwkltkmdvvcpsdgl04tvvx0rdly34rdavsa78w4p 0.00278883 BTC
bc1qau3785yw5n06zk74xevd4ufq03z9gksxsf7mesjv7alum7s6sykq44e8z8 0.02619426 BTC
bc1q64x9v0aq9dmqvk0sqhmwkltkmdvvcpsdgl04tvvx0rdly34rdavsa78w4p 0.03699967 BTC
bc1q6td9d8uvhc980zaqv0lvexyv6xsz0njg03pxl4v6g7vcz9tz06sspem9n6 0.03627834 BTC
Output Address Output Amount
bc1qu6pm5y0r22vr23qqn2uqg8ddtvny8v4sjdcfgzduhymdfea48cls770hl6 1.79700606 BTC
bc1qczct2ztt3zv47w66zc89yqhj57c2e6ma637t6a8yaqneta4zg8fq4vpz03 0.20787722 BTC

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.

More Articles

View all articles

Evaluating Fund Administrators for Digital Asset Portfolios: A Practical Framework

Fund administration for digital assets is a different job. Learn where traditional admins fall short and how to evaluate a specialist for your crypto fund.

Read more

A Guide to Understanding Centralized Exchanges (CEX) Data

Learn how to interpret CEX account state and transaction data for accurate crypto reconciliation, covering Cash Balance, Equity, and Unrealized PnL.

Read more

How to Close Stablecoin Invoices in Xero

How to Close Stablecoin Invoices in Xero With and Without a Clearing Account Using a Subledger

Read more