Bitcoin DCA and taxes: tax lots and cost basis
Dollar-cost averaging has one consequence almost nobody mentions when they recommend it. Every single purchase is its own acquisition to record: a date, a cost, a quantity. Where tax is tracked lot by lot, each one also becomes its own tax lot: a parcel of Bitcoin with its own cost basis (what you paid for it) and its own holding clock. Buy weekly for three years and you are not holding "some Bitcoin". You are holding 156 purchases, each of which has to be on record. Some countries pool purchases into one averaged holding instead, which changes the arithmetic but not the record-keeping. This page explains the concepts so the paperwork stops being a surprise.
Last reviewed Oct 12, 2026.
This is general educational information, not tax advice. Tax treatment of Bitcoin differs enormously between countries, changes over time, and depends on facts specific to you. With one exception, nothing here states a rate, a threshold, a filing requirement or a country's rules as fact, because we are not in a position to. The exception is a short, dated note on the United States further down, which only repeats what the IRS has published and links to it.
Everything below is framed as a concept. It is vocabulary and mechanics, meant to help you understand your own situation and have a shorter, cheaper conversation with someone qualified. Before you act on any of it, consult a tax professional licensed in your own jurisdiction.
What a tax lot is
A tax lot is a single purchase of an asset, recorded as three things: how much you bought, what it cost you, and when. That cost is the lot's cost basis, and it is usually the purchase price plus the fees you paid to acquire it.
The confusing part is that Bitcoin is fungible in every practical sense. The satoshis you bought in 2019 are indistinguishable from the ones you bought last Tuesday, and your wallet shows one balance. Accounting does not care. Where tax is tracked lot by lot, each purchase stays a separate parcel with its own history until you dispose of it. Other systems merge the parcels on paper: they pool identical coins into one holding with an averaged cost, so a sale is measured against the pool and not against a purchase you pick. Either way every purchase still has to be recorded. The cost basis calculator page has a short entry on pooling. Which system applies to you is a question about local rules.
In a lot-based system each lot also carries its own holding period: the clock that starts on the day you acquired it. Many tax systems treat gains differently depending on how long the specific parcel was held. The clock belongs to the lot, not to your account. So a stack built by DCA holds lots at every possible stage of that clock at once.
Why DCA multiplies the paperwork
A lump-sum buyer has one purchase to keep track of. A DCA buyer adds one with every buy, forever. The arithmetic is trivial and the result is not:
| Buying cadence | 1 year | 3 years | 5 years | 10 years |
|---|---|---|---|---|
| Daily | 365 | 1,095 | 1,825 | 3,650 |
| Weekly | 52 | 156 | 260 | 520 |
| Every two weeks | 26 | 78 | 130 | 260 |
| Monthly | 12 | 36 | 60 | 120 |
Purchases per year times years. Daily figures ignore leap days. Each purchase is one record to keep and, where tax is tracked lot by lot, one lot. Under pooling the purchases are still recorded one by one but share an averaged cost.
Weekly buying for three years is the headline case: 52 × 3 = 156 purchases. One hundred and fifty-six acquisition dates and 156 costs to keep on record. In a lot-based system that is also 156 cost bases and 156 independent holding clocks. If you ever sell, gift, spend, or swap even a fraction of that stack, something has to decide which of those 156 parcels the disposal came out of, and that decision changes the number you report. In a pooling system the rules make that decision for you, and the calculation still runs on the same records.
None of this makes DCA a bad idea. It gives DCA an administrative cost, and that cost is worth knowing about on day one. Setting up a folder and a spreadsheet takes ten minutes at the start. Leaving it until year four means reconstructing three exchanges' worth of history from memory.
What counts as a disposal
A disposal is the event that turns an unrealized paper gain into a realized one that the accounting has to deal with. Buying and holding generally does not do that; parting with the asset generally does. The concept most people get wrong is how many everyday actions count as parting with it. Depending on the jurisdiction, the list commonly includes:
- •Selling Bitcoin for fiat currency, meaning ordinary money like dollars or euros.
- •Trading Bitcoin for another crypto asset. That often counts as a disposal of the Bitcoin even though no cash changed hands.
- •Spending Bitcoin on goods or services. Buying a coffee can be a disposal of a fraction of a lot.
- •Gifting or donating, in some frameworks and not others.
Moving coins between wallets you control is usually a transfer rather than a disposal, because you have not given anything up. It is still the single most common place cost-basis records get destroyed. The receiving platform has no idea what those coins cost you, and if you did not keep the record yourself, nobody has it. Whether any of the above applies to you is a question for a professional where you live. The point here is only that "disposal" is broader than "sold for cash".
FIFO, LIFO, HIFO and specific identification
When you dispose of part of a stack made of many lots, something must decide which lots the disposal is matched against. These four names are just the answers to that question. They are accounting conventions, not tax strategies in themselves, and they belong to lot-based systems: a pooling system does not ask the question. Which of them you are permitted to use, and what you must document to use it, depends entirely on your jurisdiction.
- •FIFO (first in, first out). The oldest lots leave first. Simple and predictable. In a rising market it tends to match your cheapest coins against the sale, which means the largest gain but also the longest holding period. Some systems apply the order inside each wallet or account, not across everything you hold. The United States note below is one example.
- •LIFO (last in, first out). The newest lots leave first, so the coins you just bought are the ones considered sold. Not permitted everywhere.
- •HIFO (highest in, first out). The most expensive lots leave first, which minimizes the gain on that disposal. It is usually not a standalone method but a way of applying specific identification, with the documentation burden that implies.
- •Specific identification. You nominate exactly which lots the disposal came from. It is the most flexible approach and the most demanding. It generally requires contemporaneous records, meaning ones written at the time, identifying the specific units. That is why lot-level record-keeping is worth doing even if you never intend to use it.
The same sale, three answers
Round, made-up numbers chosen to make the arithmetic obvious. These are not market prices and not a recommendation of any method.
| Lot | Order acquired | Amount | Price paid | Cost basis |
|---|---|---|---|---|
| Lot A | Bought first (oldest) | 0.01 BTC | $20,000 | $200 |
| Lot B | Bought second | 0.01 BTC | $60,000 | $600 |
| Lot C | Bought third (newest) | 0.01 BTC | $40,000 | $400 |
Now you sell 0.01 BTC at $80,000, for proceeds of $800. One sale, one amount of Bitcoin, one price. The realized gain depends entirely on which lot the accounting says it came from:
| Method | Lot used | Basis | Realized gain |
|---|---|---|---|
| FIFOFirst in, first out | Lot A | $200 | $600 |
| LIFOLast in, first out | Lot C | $400 | $400 |
| HIFOHighest in, first out | Lot B | $600 | $200 |
- •FIFO: The oldest lot is used up first. Often the default when no other method is chosen or documented.
- •LIFO: The newest lot goes first. Whether it is permitted at all depends on your jurisdiction.
- •HIFO: The most expensive lot goes first, which minimizes the gain on this disposal. It is normally a specific-identification strategy rather than a method in its own right.
Notice the second-order effect. The highest-cost lot here happens to be the middle one by date, so HIFO does not reliably shorten or lengthen your holding period. That depends entirely on where your expensive buys happen to sit in time. Whether a shorter or longer holding period helps or hurts depends on how your jurisdiction treats them. And a smaller gain today is not automatically the better outcome. Which is, again, a question for a professional and not for a web page.
United States: what the IRS has published
Read from the IRS pages linked below on Oct 12, 2026. This covers US federal tax only. It describes published rules, it is not advice, and parts of it are still being phased in.
- •Lots are tracked wallet by wallet and account by account. Rev. Proc. 2024-28 says the 2024 final regulations "apply the specific identification or FIFO rules to units held within a single wallet or account", for acquisitions and disposals on or after January 1, 2025. If you do not identify specific units, the IRS FAQs say they leave "in order of time from the earliest date on which units of the same digital asset in this wallet were acquired by you". So oldest first means oldest in the wallet or account the coins left, not oldest across everything you hold.
- •Moving coins between your own wallets is not a taxable event. That is the IRS wording: its FAQs call a transfer between wallets, addresses or accounts that all belong to you "a non-taxable event", except for any digital assets used to pay for the transfer.
- •Brokers report sales on Form 1099-DA, but not always your cost. The IRS says brokers must report gross proceeds for transactions on or after January 1, 2025, and basis on "certain transactions" on or after January 1, 2026. Under the 2026 instructions for the form, basis is required only for a "covered security": a digital asset acquired after 2025 in an account where that broker provided custody, and held in that account until it was sold. Anything acquired before 2026, or transferred in from somewhere else, is "noncovered", and reporting its basis is voluntary. So the form can arrive with no cost figure for those coins.
Sources:
Record-keeping is the real burden
Choosing a method takes an afternoon. Being able to evidence it takes years of discipline, and that is the part DCA makes harder. A lump-sum buyer needs one receipt. A weekly buyer needs a complete, unbroken chain of hundreds of them, surviving every exchange they ever used.
The failure modes are boringly predictable:
- •The exchange shut down, or you closed the account, and the export went with it. Export your history on a schedule, not when you need it.
- •You withdrew to self-custody and the basis did not follow. The blockchain records the movement, not what you paid.
- •Fees were left out of the basis. Acquisition fees are commonly part of what a lot cost you; dropping them overstates gains on every one of your lots at once.
- •You bought in one currency and report in another. The value at the time of each acquisition is what matters; converting everything at today's exchange rate is a different, wrong number.
- •Small spends went unrecorded. Paying for something in Bitcoin is easy to forget and, in many frameworks, is a disposal like any other.
The practical version of all this is unglamorous. Keep a running ledger with one row per acquisition: date, amount of BTC, price, fee, total cost, and where it happened. Add one row per disposal, and back the whole thing up somewhere that is not the exchange. Do that from the first buy and the eventual conversation with a professional is short. Start it in year four and it is archaeology.
How this site's CSV export fits in
The calculator on the homepage can export its purchase-by-purchase breakdown as CSV. That is genuinely useful for seeing the lot structure of a schedule before you commit to it. Open the file and every simulated buy is a row, which is exactly the shape a lot ledger takes. If you set a starting stack, it appears as one extra row, labeled as such, that is not a purchase. A plan whose end date is still in the future exports the buys dated up to today and leaves out the ones still to come. The columns are:
| Column | What it holds |
|---|---|
| Date | The purchase date as yyyy-MM-dd, in UTC. |
| BTC Price | The simulated price for that day, to two decimal places, in your selected display currency. |
| Amount Invested | The amount put in on that date: the gross contribution, before any fee is taken out. |
| BTC Bought | The Bitcoin acquired by that single purchase, after fees, to eight decimal places. Where tax is tracked lot by lot, this is the size of the lot. |
| Cumulative Invested | Running total invested up to and including that row. |
| Cumulative BTC | Running total of Bitcoin held after that row. |
| Portfolio Value | Cumulative BTC valued at that row’s price. |
| Type | “buy” for a scheduled purchase, or “starting stack” for coins you said you already held when the schedule begins. A starting stack row is a position carried in, not a purchase. |
| Price Kind | “observed” where the price source reported a price for that day, “estimated” where the price was filled in. Only in the file when the plan runs on market prices. The note under this table has the details. |
The currency columns are labeled with whichever display currency you have selected. In any currency other than US dollars the file ends with one more column, Exchange Rate For Every Row: the one rate, in that currency per US dollar, that every figure in the file was converted at. The file is written with a UTF-8 byte-order mark so spreadsheets read the encoding correctly.
The descriptions above are for buy rows. On a starting stack row, Date is the schedule's start date, BTC Price is the average cost you entered (or that day's price if you left it blank), Amount Invested is what the stack cost with no fee applied, BTC Bought is the size of the stack, and Portfolio Value uses that day's price.
Price Kind is in the file when the plan runs on market prices, which is the calculator's default (the Live price mode). "estimated" means the price was not reported for that day: it is a point on a straight line between two reported prices, or an earlier price carried forward to a day that has none yet. On the Kraken price source most days are estimates, because that series is built from weekly closes; the methodology page explains each series. The cell is blank on a starting stack row whose average cost you entered. A plan run at one fixed price you typed (the Manual price mode) has no Price Kind column.
What the export is not:
- •It is a simulation of a hypothetical schedule, not a record of trades you actually made. Your real basis comes from your real exchange records.
- •There are no disposals in it. It only ever accumulates, so it cannot tell you a realized gain under any method.
- •There is no separate fee column. The fee reduces the Bitcoin acquired rather than appearing as its own line, so the file does not show the fee component of a lot's cost.
- •Non-USD figures are converted at one exchange rate for the whole file, not the rate on each historical date. That is fine for getting a feel for the numbers and wrong for anything resembling a tax record.
- •It is not a tax report, and this site does not produce one.
If you want to see the average cost of a set of purchases worked out rather than the lot structure, the Bitcoin cost basis calculator does that directly. The caveat there depends on the system you are in. Where tax is tracked lot by lot, an average across purchases is a useful summary number and not the per-lot basis your accounting needs. Under pooling it is close to the figure the calculation itself uses.
See the purchases your schedule would create
Run a schedule in the calculator, open the purchase breakdown, and export it. Every row marked "buy" is one purchase and, where tax is tracked lot by lot, one lot. It is the quickest way to understand what you are signing up to administratively before you set up a recurring buy.
Open the calculatorCommon questions
What is a tax lot in Bitcoin?
A tax lot is one purchase of Bitcoin, recorded three ways: how much you got, what you paid for it (usually including fees), and the date. Bitcoin itself is fungible, so every satoshi looks like every other one. Accounting does not work that way. Where tax is calculated lot by lot, each purchase stays a distinct parcel, with its own cost basis and its own acquisition date, until you dispose of it. Some countries instead pool identical coins into one holding with an averaged cost. The purchases still have to be recorded there, but they are not matched one by one. Rules differ by country. This is general educational information and not tax advice.
How many tax lots does dollar-cost averaging create?
One record per purchase and, where tax is tracked lot by lot, one tax lot per purchase. Buying weekly for three years is 52 x 3 = 156 purchases. Buying daily for three years is roughly 1,095. In a lot-based system each one carries its own cost basis and its own holding-period clock. In a pooling system they share one averaged cost but still have to be recorded. Either way DCA generates far more record-keeping than a single lump-sum purchase.
What is the difference between FIFO, LIFO and HIFO?
They are ordering rules, used where tax is tracked lot by lot, that decide which lots a disposal is matched against. FIFO uses the oldest lots first, LIFO the newest first, and HIFO the highest-cost lots first. Each lot has a different cost basis, so the choice changes the realized gain or loss on the same sale. It also changes which acquisition dates are used, and that can change whether the gain counts as short-term or long-term. Which methods are permitted, and what documentation they require, varies by jurisdiction. Some jurisdictions pool purchases instead and offer no choice at all. Consult a qualified tax professional where you live.
Is moving Bitcoin to my own wallet a taxable disposal?
Moving coins between wallets you control is generally treated as a movement rather than a disposal, because you have not parted with the asset. But it is exactly the kind of question where local rules and your own circumstances matter. It is also the moment where cost records most often get lost: an exchange cannot see what coins cost you if they arrived from outside. Keep the records and ask a professional in your jurisdiction.
Does the Bitcoin DCA Calculator produce a tax report?
No. The calculator simulates a hypothetical purchase schedule and can export that simulation as CSV: one row per simulated buy up to today, plus one labeled row if you set a starting stack. The columns are date, price, amount invested, BTC bought, running totals and a row type. When the plan runs on market prices there is one more, saying whether each price was observed or estimated. A file in a currency other than US dollars also carries the one exchange rate used for every row. That shape is useful for seeing how purchases accumulate. It is not a record of your actual trades, it does not track disposals, and it is not a tax report. Use your exchange records and, where appropriate, dedicated tax software or a professional.
Keep reading
- Bitcoin cost basis calculatorWork out the average cost of a set of purchases.
- The DCA calculatorBacktest a schedule and export the purchase-by-purchase breakdown.
- Self-custodyWhere withdrawals happen, and where basis records tend to go missing.
- MethodologyWhat the calculator models, and the fact that taxes are not among it.
Once more, plainly: this page is general educational information about accounting concepts. It is not tax advice, legal advice or financial advice. Tax rules for Bitcoin differ by country, differ by your personal circumstances, and change. Nothing here should be relied on for filing anything. Consult a qualified tax professional in your own jurisdiction before making decisions about cost-basis methods, disposals or reporting.
Not financial advice. Bitcoin is volatile and you can lose money. Past performance does not guarantee future results.