BitcoinDatabase.com
All posts
Buyer guides

1099-DA Reconciliation Software for Bitcoin CPAs

1099-DA reconciliation for bitcoin turns on the transferred-in lots the broker leaves without basis. On 28 September 2026, 1,709 deposits swept into one exchange wallet had sat a median 2.2 hours, and only 0.21% of the value behind them was over a year old one step back, so the holding period lives in the client's own wallet history.

By the BitcoinDatabase team

September 2026 · 8 min read

Query Console
btc
try:

Hit Run to query the Bitcoin blockchain.

Live from the chain for .

BTC

Balance trail

informational on-chain data · not financial advice

REST API · SQL · dashboards, one indexed dataset. Reading the chain ...

The short answer

1099-DA reconciliation means matching every sale the broker reported to a lot with a documented acquisition date and basis. For bitcoin the hard lots are the ones a client transferred in, because the broker leaves box 1g blank and the history lives in the client's own wallets. Crypto tax software does the matching. An on-chain data source supplies the wallet history the software cannot see. BitcoinDatabase covers that side from $49 a month, with full address history back to 2009 from $199.

This guide is for CPA firms and enrolled agents with clients who hold bitcoin and received a Form 1099-DA for 2025. The form reports gross proceeds, the IRS matches that figure by computer, and for a lot of bitcoin sales the basis box is empty. Your job is to fill the gap with records that hold up, for many clients, before the deadline. The right tooling makes that a repeatable process instead of a scramble.

We sell Bitcoin on-chain data, so weigh that. We do not prepare returns or give tax advice, and where crypto tax software or a specialist firm is the better buy, we say so.

What is 1099-DA reconciliation?

It is the process of tying each disposition on a client's Form 1099-DA to a specific lot, then reporting the broker's proceeds on Form 8949 with the basis, dates and holding period your own records support. The proceeds figure has to match what the broker filed. The basis and holding period do not have to match anything the broker filed, because for most bitcoin the broker never knew them.

For sales in 2025, brokers report gross proceeds and are not required to report basis. From 2026, basis reporting applies to covered securities, which the IRS instructions define as digital assets acquired after 2025 in an account where the broker provided custody. Anything bought earlier, or transferred in from a wallet the client controlled, is a noncovered security. The form marks it in box 9, and box 1g may be blank.

1099-DA reconciliation tools compared

ToolBest forWhat it gives the preparerPrice we could read
Exchange CSV exportsLots bought and sold on one exchangeTrades, deposits and withdrawals for that account onlyFree
Crypto tax softwareMatching 1099-DA lines to lots and filling Form 8949Gains, losses and box routing from imported accounts and walletsAnnual plans priced by transaction count
Specialist crypto CPA firmComplex or disputed histories, IRS noticesReconstructed basis and a reviewed returnPriced per engagement
Free block explorerOne or two known addressesHistory one address at a time, no totals at a dateFree
BitcoinDatabaseFirms rebuilding self-custody history for many clientsFull wallet history from an xpub, UTXO creation blocks, balances at a named block, CSV$49 a month; full history and SQL from $199

These are layers, not substitutes. The tax software is where the reconciliation happens and the return gets built. What it cannot do is invent the history of coins it was never shown. When a client says "I bought those in 2019 and kept them on a hardware wallet," someone has to produce that wallet's record, and that is the data problem this page is about.

Why doesn't my 1099-DA show cost basis?

Because the broker did not have it or was not required to report it. For 2025 sales, basis reporting was not required at all. For 2026 sales, it applies only to covered lots bought in the same custodial account after 2025. A coin deposited from a personal wallet arrives at the exchange with no purchase history attached, so the broker reports the sale as noncovered and leaves the basis to you.

A blank box 1g is not a zero. Report the proceeds as shown, then enter the basis from the client's own books and records. Treating blank as zero overstates the gain, and it is the most expensive mistake a hurried preparer can make on these forms.

What the chain shows about transferred-in coins

We measured what an exchange actually sees when customers deposit bitcoin. On 28 September 2026 we took 42 consecutive sweeps into one large exchange hot wallet, blocks 969,027 to 969,059. They pulled 1,709 customer deposits worth 2,191.47 BTC into the wallet. The median deposit had been sitting at its deposit address for 2.2 hours, and none was more than two days old. From the exchange's side, the history of those coins starts at the deposit.

Then we went one step further back. We sampled 120 of those customer deposits and dated the 206 coins that funded them. 69.9% had been created less than a day before they were sent, 87.9% less than 30 days before, and only 7 of 206, 0.21% of the value, were more than a year old. The oldest had not moved in 4,761.6 days, about 13 years.

Age of coins one step before depositCoinsShare
Under 1 day144 of 20669.9%
Under 30 days181 of 20687.9%
Under 365 days199 of 20696.6%
365 days or more7 of 2063.4% of coins, 0.21% of value

The lesson for a preparer is specific. The age of a coin on chain is a floor on the holding period, never the holding period itself. Every time a wallet spends, consolidates or moves coins between its own addresses, the on-chain age resets, even though ownership never changed. Many of those young coins were almost certainly held for years by the same client and simply moved on their way to the exchange. So one hop back tells you almost nothing. You need the client's whole wallet, every receiving and change address, to trace a lot back to the purchase.

How do I reconcile Form 1099-DA with my crypto records?

Work lot by lot, and keep the proceeds side fixed. A process that holds up across many clients looks like this:

  1. Import every 1099-DA and every exchange account the client used into your crypto tax software, so proceeds and dates come from the broker's own data.
  2. List every sale with box 9 checked or box 1g blank. Those are the lots that need outside evidence.
  3. For each one, find the deposit that brought the coins onto the exchange, then trace them back through the client's own wallet to the original receive. An extended public key (xpub, ypub or zpub) lets you derive every address the wallet used without touching private keys.
  4. Record the acquisition block, date and amount, and the price at that time, and import that wallet history into the tax software so the lot has a basis and a holding period.
  5. Report on Form 8949 with the right box. Short-term sales on a 1099-DA with basis shown go in box G, without basis in box H; long-term in boxes J and K. Sales with no 1099-DA go in boxes I and L.

Step 3 is where firms lose hours. Our xpub balance API derives a wallet from its extended public key and returns its addresses and balance in one call, and the Bitcoin address balance history API returns the full transaction list behind each address, so the tax software gets a complete import instead of the handful of addresses a client remembers. When the client's bank and exchange cash activity also has to land in their books, a bank statement to QuickBooks converter keeps that side of the file moving while the wallet trace runs.

What if the 1099-DA proceeds don't match my records?

Report the broker's proceeds anyway, then explain the difference with an adjustment. The IRS matches the proceeds on the form to your return, so a different number invites a notice. Real differences usually come from fees netted differently, a trade split across two form lines, a timezone that put a sale in the other tax year, or a wrong basis the broker reported for a transferred-in lot. Form 8949 has an adjustment column and codes for exactly this, so the proceeds tie and the gain is still right.

The timezone point matters more than it looks. When we measured the 2025 year-end cutoff, the last block before midnight UTC was 930,340 and the last before midnight Pacific was 930,389, 49 blocks and 147,438 transactions apart. Eastern was ambiguous by two blocks because block timestamps are not strictly increasing. A self-custody lot that moved near New Year can land in either tax year depending on which clock you use, so state the clock and the block height in the workpapers. Our Bitcoin audit trail API page shows how to pin a balance to a named block.

Do I need per-wallet cost basis for bitcoin?

Yes, from 2025. Basis has to be tracked wallet by wallet and account by account, not pooled across everything a client owns. Rev. Proc. 2024-28 gave taxpayers a one-time safe harbor to allocate their unused basis to specific wallets and accounts as of 1 January 2025. For a preparer that means the record of which coins sat in which wallet on that date is part of the file, and for self-custody wallets that record is on the chain. A balance at the first block of 2025 for each wallet, pinned by height, is the cleanest evidence you can attach.

How much does 1099-DA reconciliation software cost?

Crypto tax software for professionals is usually an annual plan priced by the number of transactions or clients, and it is worth paying for because it does the matching and the forms. The wallet data underneath costs less than most firms expect. A free explorer handles one known address. BitcoinDatabase is $49 a month on Developer, with one year of history and address lookups, and $199 on Growth for full address history back to 2009 plus SQL over the indexed chain, which is what a firm with dozens of self-custody clients needs. The expensive option is a specialist firm rebuilding basis by hand, priced per engagement, and the cleaner the wallet history you hand them, the fewer of their hours you buy.

If the client's history runs through several exchanges and wallets and ends in a dispute, our guide to crypto audit software for CPA firms covers re-performing balances at a period end, and the Bitcoin API for crypto tax software guide covers the data feed behind the tax tools themselves. BitcoinDatabase provides informational on-chain data only. It is not tax advice, and the preparer decides how each lot is reported.

Query the Bitcoin blockchain yourself

Pull balances, UTXOs, transactions, on-chain metrics and fund flows from the Bitcoin blockchain by REST API, SQL and dashboards. Address history since 2009, new blocks within seconds, no node to run.

Keep reading

More from the BitcoinDatabase blog

Buyer guides

Best Bitcoin API for Crypto Tax Software and Cost Basis

Crypto tax software needs the USD value of every transaction at the moment it confirmed, and the Bitcoin chain does not contain it. On 8 September 2026 we asked four public Bitcoin transaction APIs for the same confirmed transaction. All four returned HTTP 200 and not one carried a USD amount, a price, or any fiat field. Cost basis is a join, not a lookup. We cover where that join belongs, the block timestamp traps that corrupt it silently, what wallet-by-wallet tracking under Rev. Proc. 2024-28 means for your data model, and the five questions to ask a Bitcoin data vendor before you sign.

Read
Buyer guides

Crypto AML Compliance for Banks and Bitcoin Screening Software

Crypto AML compliance for banks means screening every bitcoin address that touches a customer account, at onboarding, on each transfer and on every OFAC update. On 7 October 2026, 440 of the 531 valid Bitcoin addresses on the SDN list were already empty, so exposure and evidence matter more than the match.

Read
Buyer guides

Bitcoin Reconciliation API for Exchanges and Custodians

On 10 September 2026 we reconciled a five-address cold-storage set two independent ways at block 966,451, from address totals and from 1,677 individual transactions, and the two answers matched to the satoshi. That match is the test a reconciliation data layer has to pass, and commercial balance feeds cannot take it: they round to two decimal places and refresh hourly on every plan. We cover the silent-zero trap in historical balance endpoints, why you reconcile at a block height and never a timestamp, and the five questions to ask a Bitcoin data vendor before you sign.

Read
Buyer guides

Crypto KYT Software for Exchanges and Money Transmitters

Crypto KYT software screens every deposit and withdrawal before you credit or sign. On 8 October 2026 the 531 valid Bitcoin addresses on the OFAC SDN list held 9,305.64 BTC, while 650 unlisted addresses paid straight from them held 42,992.34 BTC, so a list check alone misses most of the exposure.

Read

Query the whole Bitcoin blockchain

BitcoinDatabase indexes the public Bitcoin blockchain block by block and returns balances, UTXOs, transactions, on-chain metrics and fund flows by REST API, SQL and dashboards, with no node to run.

REST + SQL + dashboards · address history since 2009 · new blocks within seconds

Informational on-chain data only · not financial, investment or legal advice · AML features are compliance tooling to support your own review.