FlowParse
Guide 11 August 2026 21 min read

How to prepare crypto records for tax

Not what is taxable — that depends where you are, it changes, and it is somebody's profession. This is the other half: assembling a record complete enough that the tax question can actually be answered. One of these steps has a deadline nobody warns you about.

FlowParse
flowparse.io

Two halves, and only one of them is written about

Almost everything published on crypto tax is about rules: what counts as a disposal, how income is characterised, which reliefs apply. That writing is necessary and it is not this.

Because before any rule can be applied, somebody has to know what actually happened. Which assets, acquired when, for what, moved where, sold on which day. That is a records problem, it is entirely separate from the rules, and it is where nearly all the effort actually goes.

It is also the half that cannot be outsourced. An adviser can tell you how a disposal is treated; they cannot tell you what you paid for something on a platform that closed in 2021.

So this guide covers the records only, in the order that avoids doing work twice — and it starts with the one step that genuinely cannot wait.

FlowParse
flowparse.io

What this guide is not

Not tax advice

Nothing here says what is taxable, when, or at what rate. Those answers depend on your jurisdiction and your circumstances, and they change.

Not jurisdiction-specific

Rules differ enormously between countries and this guide names none of them. What is universal is that a record has to be complete before any rule can apply to it.

Not an exchange integration

FlowParse reads files you already have. There is no API connection and no on-chain lookup, which is exactly why step one is what it is.

Not a calculator

No gains are computed, no method is chosen, no asset is valued. The output is a list of what happened, sourced.

The step with a deadline nobody mentions

Eight of the nine steps below can be done whenever you have an afternoon. One cannot, and it is worth separating it out before the list begins.

Platforms restrict how far back you can export. They close. They exit markets. They get acquired and migrate accounts without the full history. When any of that happens, the data is not delayed or awkward to obtain — it is gone, permanently, from everywhere.

And the moment you discover you needed it is years later, when you are computing a disposal of something you bought back then.

So: export everything today, before reading any further if you like. Do not organise it, do not clean it, do not even open it. Get the files off the platforms and into storage you control.

Every other step on this page will still be possible in a year. This one may not be.

1 · Export everything

From every platform, the longest history each will give you, in whatever format they offer. Take CSV if offered, PDF if not, screenshots if nothing else.

Do not filter by what you think matters. A platform you used briefly in 2019 for a small amount may hold the only record of an acquisition you still hold today.

Where an export is limited to a recent window, take it anyway and note the limitation. Knowing that a platform will only give you two years is itself a finding, and it tells you where the gaps in your record will be.

Name the files so you can tell later where each came from — the platform and the date range. It takes seconds now and saves genuine confusion when you have forty files.

FlowParse
flowparse.io

2 · List every place you have held anything

Write the list down. It is longer than you remember, and the forgotten entries are disproportionately likely to matter.

Prompts that reliably surface things people miss: an exchange used once and abandoned, a wallet on an old phone, a hardware device in a drawer, an account opened for a promotion, a platform that migrated your balance somewhere else, a small amount received from someone as a gift.

Also list the places you can no longer access. A closed exchange still belongs on the list, because the holdings that came out of it need a basis and you now know where the gap is.

This list is the completeness check for everything that follows. Without it, you will build a record and have no way of knowing whether anything is missing from it.

3 · Read it all into rows

Now the mechanical part. Everything into one table with the same columns: asset, date and time, quantity, what was given up and in which currency, fee and fee asset, platform, and the source file and page.

Up to 100 files go through in one pass, which for most people is the whole history in one or two runs. Screenshots and scans go through OCR.

Do not correct anything at this stage. Read it as reported, including the rows that look wrong, because a correction applied while reading becomes invisible while one applied afterwards stays visible as a correction.

The one thing to preserve carefully is which source each row came from and what convention that source used. Different platforms mean different things by the same column, which is the subject of why exchange exports never tie out.

4 · Mark the transfers

This is the first step that requires you rather than a document, and it is the one that most often gets skipped.

When you moved an asset from one place you control to another, the sending platform recorded a withdrawal and the receiving one recorded a deposit. Nothing links them. Left unmarked, the record shows a disposal and a fresh acquisition — a gain that never happened and a basis that is wrong.

Go through the withdrawals and match each to its deposit: same asset, similar amount, close in time, and a difference that is roughly the network fee. Mark the pair as one movement.

Where you genuinely cannot tell whether something was a transfer or a disposal, mark it as uncertain rather than guessing. An uncertain row is a question for your adviser; a wrongly confident one is an error they will never find.

FlowParse
flowparse.io

5 · Separate the fees

Fee amount and fee asset as their own fields, on every row, never folded into the trade amount.

The reason is not that fees are large — individually they rarely are. It is that whether a fee forms part of what an asset cost you is a judgement your adviser makes, and both possible answers need the number.

Watch for the platforms that report net amounts without showing the fee. Those rows are quietly understated and, because they are consistently understated, nothing about them looks wrong.

Where a fee was charged in a third asset, record both the amount and the asset. A fee column containing “0.4” with no asset beside it is not information.

The detail, including why this is not done automatically, is on asset and fee splitting.

6 · Identify the income events

Some of your holdings arrived without being bought: staking rewards, airdrops, referral payments, forks, interest-like distributions.

These behave differently from purchases in one important respect — there is no acquisition amount to record, because nothing was given up. Whatever basis they carry has to come from somewhere else, and how that works depends on your jurisdiction.

Mark them as receipts rather than acquisitions, with the date and quantity, and leave the cost field empty rather than zero. Zero is a claim; empty is an honest description.

Many of these events also have no document at all — a reward that simply appeared in a balance. What to do about that, and why it is the hardest part of the whole exercise, is on staking and airdrop records.

7 · Flag unknown basis, do not fill it

By this point some acquisitions will have no cost attached. The platform closed, the export did not go back far enough, the trade was denominated in another asset whose own basis is also unknown.

The temptation is to look up a historic price and fill the cell. Resist it, and the reason is specific: an estimated figure sits in the same column as documented ones and becomes indistinguishable from them the moment you close the file.

Six months later nobody — including you — can say which numbers came from a document and which came from a chart. The whole record loses the property that made it worth building.

Mark it unknown, and add a short note of what you tried: which platform, whether an export was attempted, why it was not available. That note is what turns an awkward gap into a documented one.

Whether an estimate is acceptable in your situation, on what evidence, and how it should be disclosed is a question for your adviser. Making the gap visible is what lets them answer it.

FlowParse
flowparse.io

8 · Keep the original files

The spreadsheet is the claim. The exports are what support it, and the two need to be kept together.

Store the originals somewhere you control — not on the platform they came from, and not only inside a tool. We delete your uploaded file immediately after reading it and we are not an archive; that is deliberate, and it means this step is entirely yours.

Keep them organised by platform and period, matching the naming you used in step one. The point is that somebody can find the file behind a specific row without asking you.

How long to keep them is a question for your adviser, and the honest general answer is: longer than you would guess, and longer than the platforms will.

9 · Hand it over

Export the table — Excel, CSV, JSON or XML — and give it to whoever computes the tax, along with a short note of what is uncertain.

Ask them first what shape they want. Some have a template, most want one row per event, and a few want the raw exports as well. Five minutes of asking saves a round trip.

Include the uncertainties explicitly rather than hoping they go unnoticed. A list saying “these four acquisitions have no documented basis, here is what I tried” is a professional handover; the same file without the note is a trap.

And keep a copy of exactly what you sent. When a question comes back in eighteen months, the version you handed over is the one that matters.

FlowParse
flowparse.io

A worked fragment

Invented rows, realistic shape. Four events that look like four independent things and are not.

SourceAppears asActually is
Exchange AWithdrawal of 2.0Half of one transfer
Wallet exportDeposit of 1.9985The other half, less network fee
Exchange BDeposit of 1.9985Same holding, moved again
Exchange BSale of 1.9985The only actual disposal here

Read naively, this is a disposal on Exchange A, two acquisitions, and a disposal on Exchange B — two taxable disposals where there was one, and two acquisitions with no cost because nothing was paid for them.

Marked correctly, it is one holding that moved twice and was sold once, carrying its original basis from wherever it was first acquired, with a small network fee along the way.

The difference between the two readings is step four, and nothing in any document distinguishes them. Only you know that both wallets were yours.

What your adviser actually needs

Worth knowing before you build the record, because it is narrower than most people assume.

A complete list of events

Not analysed, not categorised — just complete, with nothing quietly omitted because it looked unimportant.

The dates, exactly

Ordering matters for almost every method, and a date that is a day out can change which lot was disposed of.

The uncertainties, listed

What you do not know is as useful to them as what you do, and it is the part they cannot discover on their own.

The source behind any figure

So that a question about one row takes a minute rather than a re-export.

Note what is absent from that list: any attempt at classification. People often spend hours deciding what each event was before handing it over, and that is precisely the work their adviser is qualified to do and they are not.

The division that works is simple. You establish what happened; they decide what it means.

Doing several years at once

Most people come to this having not kept records for a while, so the realistic starting position is several years of history at the same time.

Work backwards from now rather than forwards from the beginning. The recent years are the ones where exports are still available and where memory still helps with step four — and they are also the years most likely to be asked about first.

Expect the oldest period to be the worst and to stay the worst. Some of it will end up marked unknown, and that is the correct outcome rather than a failure.

One thing genuinely improves with a multi-year run: transfers become easier to match, because you can see an asset leave one platform and appear on another in a way that is invisible when looking at a single year.

Budget an afternoon for the exports, an afternoon for the reading, and rather longer than you expect for step four. The matching is the part that takes real time, and it is the part no tool can do for you.

Where a tool helps, and where it cannot

Worth being explicit, because the market in this area promises a great deal and the division is fairly clean.

TaskCan be automated?Why
Reading documents into rowsYesMechanical, and the bulk of the hours
Normalising formatsYesRules, once the conventions are known
Splitting fees outYesThe document states them
Matching transfersNoRequires knowing which wallets were yours
Deciding what is incomeNoA judgement about facts and law
Filling an unknown basisNo — and should not beThere is nothing to read

The first three are most of the elapsed time and none of the difficulty. The last three are all of the difficulty and cannot be delegated to anything.

That division is worth holding onto when evaluating any product in this space. A tool that claims to do row four is claiming to know which addresses belong to you, which it cannot. A tool that quietly does row six is putting a number into your record that nothing supports.

It also sets a realistic expectation for this guide. Automation compresses steps three and five to minutes; steps four, six and seven still take an afternoon of your attention, and no amount of tooling changes that.

Keeping it current, so this is the last time

Everything above assumes a backlog. The more valuable outcome is not clearing it once — it is never accumulating another one.

Three habits do almost all the work, and none of them takes meaningful time.

Export quarterly. Not because you need the data quarterly, but because it removes the failure that has no remedy. Four exports a year and a closed platform stops being a catastrophe.

Note transfers when you make them. One line: date, asset, from where, to where. Written at the moment it happens, this takes seconds; reconstructed two years later it takes hours and is a guess.

Keep a running list of platforms. Add to it when you open something, never remove. It is the completeness check that makes every future exercise finite.

The second habit is the one that matters most, because transfer matching is the only step that gets dramatically harder with time. Everything else degrades gradually; that one falls off a cliff once memory goes.

A holder who does these three will find the next annual exercise takes an hour rather than a weekend — and, more importantly, will not have any permanently unrecoverable gaps.

FlowParse
flowparse.io

Seven mistakes

Leaving the exports until you need them. Platforms close and windows shut without warning.

Skipping the list of places. You cannot know a record is complete without knowing what it should contain.

Not marking transfers. Produces disposals that never happened and acquisitions with no cost.

Folding fees into amounts. Destroys the information both possible treatments need.

Estimating unknown basis. The estimate becomes indistinguishable from evidence within a month.

Classifying events yourself before handing over. That is the adviser's work, and doing it badly costs more than not doing it.

Keeping the spreadsheet without the source files. The spreadsheet is the claim, not the support.

If someone else is doing this for you

Many people reading this will engage an accountant rather than do it themselves. Two things are worth knowing, because they change what the engagement costs and how long it takes.

Steps one and two are still yours. Nobody else can export from your accounts, and nobody else can list the platforms you have used. An adviser who receives those two things has a scopeable job; one who has to extract them from you over three weeks of emails does not.

Step four will need a session with you. Transfer matching depends on knowing which wallets were yours, and that knowledge exists only in your head. Expect to be asked, expect it to take an hour or two, and expect the answers to be worse the longer it is left.

Arriving with everything exported and a written list of platforms typically shortens the engagement substantially — not because the adviser works faster, but because the waiting stops.

It also changes what they can quote. An adviser who can see the material can price the work; one who is quoting from your description of it is pricing a risk, and that risk is priced into the fee.

The practitioner's view of the same engagement, including what they will ask for and why, is on crypto bookkeeping for accountants — worth reading before the first meeting.

Checklist

Every platform exported, oldest history first

Export limitations noted where they exist

Written list of every place ever held

Closed platforms on the list too

Everything read into one table

Source file and page on every row

Transfers matched and marked as one movement

Uncertain movements marked uncertain

Fee amount and fee asset separate

Income receipts marked, cost left empty

Unknown basis flagged with a note of what was tried

Original files in your own storage

The first item is the only one with a deadline. Everything else on this list will still be doable next month; that one may not be.

Frequently asked questions

Start with step one, today

Export everything from every platform while you still can. Reading and organising it can wait; obtaining it cannot.

Keep reading