The folder on the desk
Practices tend to approach this expecting a technical problem. Blockchains, wallets, tokens — unfamiliar vocabulary, presumably requiring unfamiliar tooling.
In practice the vocabulary takes an afternoon and the tooling matters less than expected. What actually causes difficulty is entirely familiar in kind and unfamiliar only in degree: a client whose records are incomplete, spread across sources that do not agree, with gaps only they can fill and a deadline that assumes none of this is true.
You have handled that shape of engagement before. What is different is that the gaps are wider, the sources are stranger, and some of the information is genuinely unrecoverable rather than merely inconvenient to obtain.
So this page is about scoping, pricing, and the point at which the correct professional answer is no — rather than about what a blockchain is.
What we do not do
We do not compute anything
No gains, no method, no characterisation, no valuation. Every judgement stays with you — which is the whole reason the client is paying a professional rather than buying software.
We do not connect to exchanges
No API integrations, no wallet linking, no on-chain reads. We work from files the client gives you, and that shapes the intake conversation more than anything else on this page.
We do not fill gaps
Missing basis stays marked missing. A tool that quietly estimated would be putting a figure into your working papers that looks sourced and is not.
We are not a crypto tax product
This is document reading applied to an awkward category of document. Anything claiming to be more than that in this area is worth reading carefully.
What is actually different from a normal engagement
| A bank-based client | A digital asset client | |
|---|---|---|
| Sources | One or two banks | Six platforms and four wallets |
| Formats | Broadly similar | No two alike |
| Missing records | Obtainable on request | Sometimes permanently gone |
| Who knows the facts | Largely the documents | Largely the client's memory |
| Reconciliation | Should tie exactly | Structurally will not |
| Scope known upfront | Roughly | Not at all |
The fourth row is the one that changes how the engagement is run. In a conventional job the documents contain the facts and the client fills in context. Here the documents are ambiguous about the most consequential questions — which movements were transfers between the client's own holdings — and only the client can resolve them.
The last row is why fixed pricing on a first crypto engagement so often goes wrong. Nobody, including the client, knows how big the job is until somebody has read the files.
Why exact reconciliation is not achievable, and what to do instead, is set out on why exchange exports never tie out — worth reading before the first engagement, because clients ask about it.
Several sources, one table
Five separate documents dropped in together, read, merged into a single table and exported to Excel — the same shape as a client's multi-platform history.
Up to 100 files per export
Every row keeps its source file and page
Excel, CSV, JSON or XML
The intake conversation
Six questions, asked before anything else, that determine whether this engagement is a week or a quarter.
Which platforms and wallets, ever?
Not currently — ever. The forgotten ones are disproportionately where the gaps are.
Do you still have access to all of them?
A closed account is a permanent gap, and it is better to know at hour one.
Have you exported anything already?
If they exported two years ago and the platform has since closed, that file is priceless.
Did you move assets between your own holdings?
The answer is always yes, and the follow-up — can you identify them — decides the timeline.
Any staking, airdrops or rewards?
A different records problem with a different failure mode, covered separately.
When do you need this?
Asked last, deliberately, so the answer does not shape the previous five.
And one instruction to give immediately, before the engagement is even agreed: export everything, from everywhere, today. If a platform closes between the intake meeting and the work starting, that history is gone — and the client will not understand why you could not recover it.
Scope before you quote
The single most useful change a practice can make to this work is to insert a paid assessment between the enquiry and the quote.
Ask for one export from each platform — not the full history, one file each. Read them. Then count four things: how many distinct sources, how many format conventions, how many transfers will need matching, and how much of the period has no coverage at all.
Those four numbers determine the job. Volume barely matters — ten thousand rows from two consistent sources is a smaller job than four hundred rows from seven inconsistent ones.
Charge for the assessment. It is real work, it produces a deliverable the client can use even if they go elsewhere, and it is what makes the subsequent quote something you can stand behind.
The alternative — quoting from a description of the situation — is quoting on the client's estimate of their own record quality, which is optimistic in every engagement of this kind ever undertaken.
The engagement, in order
Day 0
Tell them to export everything
Before anything is agreed. The one instruction with a deadline outside your control.
Week 1
Paid assessment
One file per source, read, and the four numbers that scope the job.
Week 1
Quote against known scope
Staged if the reconstruction is large: fixed for the clean part, quoted for the rest.
Week 2
Full read
Everything into one table, source and page on every row, no corrections applied yet.
Week 2–3
The client session
Transfers, wallet ownership, unexplained movements. This cannot be delegated and cannot be rushed.
Week 3
Mark the gaps
What is unknown, and what was attempted. Documented, not filled.
Week 3–4
Your work
Characterisation, method, computation. The part they engaged you for.
Close
File note and handover
What was relied on, what was reconstructed, what remains unknown.
Step five is the one that overruns, every time. Sitting with a client going through withdrawals and deposits asking “was this you sending to yourself?” is slow, requires their attention, and cannot be done asynchronously by email with any reliability.
Budget it generously and schedule it as a session rather than as a task. An engagement that treats it as a five-minute follow-up will discover otherwise.
Where the hours go
A client with six sources and roughly three years of moderate activity. Proportions as reported by practitioners rather than a promise about any particular file.
| Activity | Manual | With reading automated |
|---|---|---|
| Typing exports into a working file | 10–14 hrs | ~30 min |
| Normalising formats and columns | 4–6 hrs | ~30 min |
| Chasing the client for missing files | 3–5 hrs | 3–5 hrs |
| The transfer-matching session | 4–8 hrs | 4–8 hrs |
| Investigating differences | 4–6 hrs | 1–2 hrs |
| Characterisation and computation | 6–10 hrs | 6–10 hrs |
Two rows do not move at all, and they are the two that matter most professionally. Chasing a client is chasing a client. Transfer matching depends on knowledge only they have.
What changes is the ratio. An engagement that was two-thirds data entry with judgement squeezed into the end becomes an engagement that is mostly judgement — which is both better work and better margin, since the typing was never billable at your rate anyway.
The differences row is worth noting too: much of that time was previously spent discovering that platforms report gross and net differently. Recording the convention per source once removes most of it.
Pricing a job you cannot size
The structural difficulty: the client wants a fixed fee, and nobody can size the work until the files have been read.
Three approaches, in ascending order of how well they hold up.
Fixed fee from a description
Quoted from what the client tells you about their records. This fails reliably, because clients describe their record quality optimistically — not dishonestly, but they have not looked recently and do not know what a complete record requires.
Time and materials throughout
Honest and hard to sell. The client cannot budget, and the engagement feels open-ended to both sides, which tends to produce pressure to stop before the record is defensible.
Staged: fixed assessment, then quote
A modest fixed fee for the assessment described above, then a firm quote once the four numbers are known. The client gets certainty at each stage, you quote against something real, and both sides can walk away after stage one.
The third also has a quiet benefit: it filters. A client unwilling to pay for an assessment is frequently a client who will be unwilling to pay for the reconstruction it would have revealed.
What only the client knows
Worth setting out explicitly at engagement, because it manages expectations that are otherwise wrong in both directions.
Which addresses and accounts were theirs
Nothing in any document says this, and it determines whether a movement was a disposal or a transfer.
Whether a receipt was sought or unsolicited
Relevant to characterisation, and invisible in the data.
What happened on a platform that closed
Their memory is the only remaining source, and it degrades.
Whether a holding was ever used as security
Arrangements that do not appear as transactions at all.
Which activity was personal and which was business
Sometimes the same wallet, and only they can say.
Saying this at the start reframes the engagement usefully. The client arrives assuming they are handing over a problem; this list makes clear that a substantial part of the work requires their sustained participation, and that a deadline depends on their responsiveness as much as yours.
When declining is the right answer
Not every engagement of this kind should be accepted, and the signals are reasonably clear in advance.
The client will not do the assessment
They want a fixed fee from a description. That engagement overruns and the argument at the end is about your bill, not their records.
The deadline is fixed and imminent
Reconstruction takes as long as it takes, largely because it depends on the client. A hard deadline with an unknown scope is a promise you cannot keep.
Most of the history is unrecoverable
If the majority of the period has no evidence and the client expects documented figures, the expectation gap is the engagement.
They want you to estimate the gaps
Where the client's expectation is that missing basis will simply be filled in, and your professional judgement is that it should not be, that disagreement will not improve with time.
The last is the most important and the least comfortable. What to do about unknown basis is a professional judgement you are engaged to make — and a client who has already decided the answer is not really engaging you for it.
Declining early is considerably cheaper than declining in week four, and considerably better for the relationship than completing an engagement you were uneasy about.
The file note that protects everyone
Whatever the outcome, the closing document matters more here than in conventional work, because the underlying records are weaker and the questions may arrive years later.
Four things belong in it, and none takes long to write.
What was relied on. Which files, from which platforms, obtained when. A list, with the export dates, because platforms restate and the file you used is the evidence of what you were told.
What the client asserted. Particularly the transfer matching and wallet ownership. These are representations, not findings, and recording them as such is accurate rather than defensive.
What remains unknown. The gaps, what was attempted to close them, and why it failed. This is the section clients least want and most need.
What was reconstructed rather than recorded. Clearly separated from what was documented, with the basis of the reconstruction stated.
A record with those four sections is defensible even where the underlying data is poor. A record without them is only as strong as its weakest source, and nobody can tell afterwards which source that was.
Running the client session well
The transfer-matching session is the step that overruns, and most of the overrun is avoidable with preparation rather than with more time.
Do not open the session with a spreadsheet of four hundred rows. A client faced with that becomes vague within ten minutes, and vague answers are worse than no answers because they end up in the record as representations.
Pre-match the obvious pairs
Same asset, similar amount, close in time. Present these as 'I believe this is you moving to yourself — confirm or correct' rather than as an open question.
Bring only the ambiguous ones to the session
Usually a fraction of the total. Twenty questions is a conversation; four hundred is an ordeal.
Ask about wallets, not transactions
'Was this address yours?' is answerable. 'What was this movement?' often is not.
Record uncertainty as uncertainty
Where the client is genuinely unsure, that is the answer and it should be written down as such rather than resolved by inference.
The third is the most effective single change. People remember which accounts and devices were theirs far better than they remember individual movements, and one wallet answer typically resolves a dozen rows at once.
Schedule it as a fixed session with the client present rather than as an email thread. An asynchronous version of this conversation reliably takes three weeks and produces worse answers.
Turning a one-off into recurring work
The first engagement of this kind is mostly archaeology. The interesting question is what the second year looks like, and whether it is worth having.
It usually is, and for a reason that is easy to miss: once the backlog is cleared, the ongoing work is small, predictable and considerably higher margin. The expensive part was the reconstruction, and it does not recur.
What makes the difference is what you leave the client with. A closing pack that includes a short list of habits — export quarterly, note transfers as they happen, keep a running list of platforms — means next year's engagement starts from a maintained record rather than another pile.
That list is worth writing once and reusing. Clients rarely resist it, because the alternative is repeating an exercise they have just found unpleasant and expensive.
There is a practice-development angle too. A firm that has done this competently once tends to be recommended, because clients in this area struggle to find advisers willing to take the work at all — and the second engagement benefits from everything learned in the first.
The client-facing version of the habits list is at the end of how to prepare crypto records for tax, and can be sent as-is.
Four objections
We do not have the expertise for this
The tax reasoning is closer to what you already do than the vocabulary suggests. What genuinely differs is the record-keeping, which is the part described on this page and which is learnable in one engagement.
It is not worth it for one client
Possibly true for exactly one. It is rarely one — a practice that handles a digital asset engagement competently tends to acquire more of them, because the clients talk to each other.
A dedicated crypto tax product would be better
For computation it may well be, and this is not one. What most of them handle poorly is the messy input: closed platforms, screenshots, gaps. That is the part described here.
The client's records are hopeless
Then say so, in writing, early. A documented conclusion that the records are insufficient is a legitimate deliverable and sometimes the only honest one.
Starting with one client
Take the client you already have who mentioned this once and you deferred. Ask for one export from each platform they have used — not the full history.
Read those files together and produce the four numbers: sources, formats, transfers to match, periods with no coverage. That is your assessment, it takes under an hour, and it is a deliverable in its own right.
Then quote. You will be quoting against something real, which is a materially different conversation from the one most practices have on their first engagement of this kind.
The client-side view of the same process is on how to prepare crypto records for tax — worth sending them before the assessment, because a client who has read it arrives having already exported everything.
