
What the Client must do
- get transaction logs from all your exchanges, wallets, etc
- take an inventory of your crypto holdings, coin by coin, location by location, and take screenshots
What I must do
- format the raw data into a uniform format, and put the transaction logs together
- count how many of each crypto the transaction logs show the client holds at the end of the data
- compare the transaction log holdings to the true life holdings
- figure out how to make the transaction logs match real life, by bridging the gaps. Gaps are bridged by badgering the client to look for more data, investigation on the block chain (this is literally clicking through wallet addresses and wondering “does my client own this wallet?”), and as a last resort, inference.
- compute the gains/losses on the dispositions
- provide a tax report such that any trained tax preparer could fold the crypto data into a tax return.
- provide an “ending holdings” report to the client such that they know the cost basis of their ending holdings
My Constraint
- perform the above work in the same method as an IRS auditor, such that any IRS auditor could look at your raw data, look at my working papers, and look at my ending reports, and verify that my work is correct.
- Use the same tools that an auditor would use.
TLDR
matching up deposits and withdrawals is a big part of the process. For instance if you have a deposit of 10 bitcoins into Coinbase on January 10, 2017, I should see a withdrawal of 10 bitcoins out of a different exchange or wallet on January 10, 2017. If I don’t see a withdrawal to match the deposit, then that means that either the deposit is not merely a transfer, or I’m missing data. Unmatched Transfers Tell Me When I’m Missing Data. When a client really understands this, my work is 50% easier.
When I see a withdrawal and I don’t see a matching deposit, either i’m missing data OR you didn’t merely transfer the crypto from one place to another. Did you sell it to a friend for cash? Did you send the crypto to someone/somewhere and then get something else in return? Did you invest in a project? Did you post collateral?
I proposed a hypothetical to a client: “Pretend I’m doing normal accounting for a normal business, and I’m reviewing the bank statements. Pretend I see a deposit of $800 into a bank account, but I don’t know where the deposit came from. I ask, and the client says “Oh that came from a different bank account.” I asked my client, “what do you think I need in that scenario.” my client said “you need to know where that $800 came from in the first place”. My client did NOT understand my work. I would need the bank statements from that other account, and then I’d have to start all over again. Line up deposits and withdrawals, count out the ending balances, look at unmatched transfers. The clients who really understand this make my work 50% easier.
I check my work by counting how many bitcoins your transaction logs show you have, and how many you actually have in real life. And ETH, and DASH, and Z-Cash, and XRP, etc etc. Coin by coin, the actual number of tokens. Not their value. This is how I check if I’m missing data, or double counting something, or accidentally booked something as a “buy” when it was really a “sell”. 0 + all your purchases – all your sales – fees paid in crypto = how many crypto tokens you’re holding now. Coin by coin. I talked a client through this, and then asked him to take an inventory of his holdings, so that I could check my work, and he replied “my crypto is worth $500,000”. My client did NOT understand my work. I then explained it all again, that I use the balances to check my work. I said I need to know how many of each type of token he holds. He said “ok ok I’ll check”. He sent a note that night “I have 32 Bitcoins.” I looked at his data, and I knew it couldn’t be correct. I asked “you don’t have any ETH? you don’t have any XRP? you don’t have anything except bitcoins?” and he said yeah I’ve got all kinds of crypto.” I asked “what do you mean that you have 32 bitcoins?!” and he said “I have 32 bitcoins worth of crypto.” My client did NOT understand my work. I was so frustrated I took a tent and some food and walked into the forest for three days. Honestly, I was furious. My client wasn’t dumb, he just wasn’t listening.
I once asked a client if he had given me transaction logs from all of his wallets? and he said “Yes.” then i asked “the deposit of 10 ETH into wallet x, where did the 10 ETH come from?” and he answered “oh I sold some DASH and then transferred the ETH.” I was asking what wallet the 10 ETH came from. So I asked “What WALLET did the 10 ETH come from?” and he answered “another wallet I sometimes trade with.” It didn’t occur to him that I needed the transaction logs from that wallet. I couldn’t figure out why the data wasn’t working until I realized I didn’t have all the data. He said he gave me the transaction logs from all his wallets, but then there was another wallet, for which I didn’t have the logs. For some reason, when I said “All the data”, this client didn’t send all the data. I still don’t know why. I still feel a tad crazy when I think about that. What was happening? what do the sounds I make with my mouth sound like to other people?
I once had a client who was looking at a list of his unmatched transfers, and I was asking “where did the deposits get withdrawn from? and where did the withdrawals go to?” when he said, “oh, I have a bunch of wallets which have zero balance today. Do you need the transaction logs for those too?” and I said “ALL your transactions.” and he said “yeah, but, when you say all the transactions, even from wallets with zero balance?” for some reason, when I said “All the data”, this client didn’t send all the data. I still don’t know why. I don’t understand what I am saying wrong? I’M the common denominator. I’M the problem, but I don’t know what words I can say to mean “all” and folks will understand.
Many clients have been talking me through their accounting and they say things like “I basically only used this wallet.” and I taste a bit of copper in my mouth. I ask, slowly, “what do you mean by the word ‘basically’? and the clients say “well, the other stuff is small stuff.” An old friend of mine from the Marines was a counter-intelligence guy in the war. He says you can learn a lot from a guy’s sentence structure. The truth yearns to come out. In these situations I try to keep my cool, and I say “I use eight decimal places. if you have a transaction which is 0.00000001 of the cheapest crypto, I need to know about it.” and the client often goes “dude. that’s going to be hard” and I think ‘you have no idea buddy.’ I should learn my lesson and not accept clients who use the word “basically” when they’re describing their crypto activity.
Many clients take an inventory of their holdings and they skip their NFTs. They skip USDC. I can never understand why, but it happens a lot. I see the NFTs in the wallet, and I ask, “hey, your inventory doesn’t include these NFTs, do you not own them?” and the client replies “oh, yeah those are mine. I didn’t think you needed to know about those.” and I just can’t figure out what everyone else thinks the word “All” means. I tell folks “take an inventory of ALL your crypto” and then the folks leave a bunch of their crypto out. NFTs are crypto. USDC is crypto. USDT is crypto. All means all. I feel crazy when I say this stuff. But it happens so often. maybe I’m dead and this is what hell is? trying your best to do accounting but the clients hold back data?

