Tax Season With an Automated Ledger: 20 Minutes, Not 20 Hours
The difference between a miserable April and a boring one isn't your tax rate — it's whether the year's transactions exist as structured records or as an archaeology project across two marketplaces, an email archive, and your memory. Good records are built in July, automatically. Here's what they buy you.
First, the framing (and the disclaimer)
Nothing in this post is tax advice. Whether and how skin profits are taxable depends entirely on your country, your volume, and sometimes on distinctions — hobby versus trade, collectible versus intangible — that only a local professional can settle. The general shape in many jurisdictions, covered in the questions every trader eventually asks, is that realized gains in real money are the taxable event of interest: you sold an item on a cash marketplace and money came out. Steam wallet balance, which can never become cash, usually lives in murkier territory. Your professional decides what's owed. What this post is about is the part that's your job regardless of jurisdiction: being able to answer questions. Every tax regime, whatever its rules, wants the same three answers per disposal — what did you acquire it for, when, and what did you receive for it?
The 20-hour version
Without records, reconstructing a year looks like this: scrape purchase histories from each marketplace's UI (some paginate, some truncate, some only go back so far), cross-reference bank and payment-provider statements to figure out what you actually paid in your home currency, guess at which of 300 identical cases was the one you sold (cost-basis matching), and rebuild EUR purchases into USD amounts using exchange rates you didn't record at the time. People who trade actively and record nothing genuinely spend evenings on this — and the output is still approximate, which is the worst thing evidence can be. The time cost is just manual trading's hidden tax, deferred to April and paid with interest.
The 20-minute version
Now the same year with an append-only purchase ledger — every buy recorded at execution time as a structured entry (JSONL, one JSON object per line, trivially machine-readable) with the exact item name, timestamp, venue, and money-exact price. The April workflow collapses to roughly:
- Export. The ledger is already a file. If it's committed to git, its history is tamper-evident too — every entry carries the date it was written, which is exactly the property you want records to have when someone official reads them. That's the quiet payoff of receipts-or-it-didn't-happen investing.
- Sum the realized side. Filter the year's sales (from your cash-out venue's statements — selling is the one side a buy-only ledger doesn't cover, so keep those exports too), match each against its acquisition cost from the ledger, and sum the differences. With structured data this is a spreadsheet formula or ten lines of script, not a weekend. Cost basis stops being a guess because every unit's purchase price actually exists.
- Attach receipts. Ledger extract, marketplace statements, payout records from cashing out. Hand the bundle to your professional. Answer their two questions. Done.
Twenty minutes is not a marketing number — it's roughly what "filter, join, sum, export" takes when the data was captured correctly at write time. All the labor happened silently, at purchase time, all year.
The detail that bites: native currency
One subtlety deserves its own section because it ruins reconstructions: currency. European venues price in euros; your tax return almost certainly isn't denominated in euros (or if it is, your dollar-priced buys have the mirror problem). A gain must generally be computed in your home currency, at rates relevant to when the transactions happened — not at whatever the rate is in April. Records that only say "bought for €1.20" are incomplete; records that say "bought for €1.20, converted at that day's rate, home-currency cost $1.31" are done. This is why a well-built ledger records the native-currency amount, the conversion rate applied, and the converted figure per entry — the same FX fairness machinery that makes cross-venue price comparison honest turns out to be exactly what tax reconstruction needs. Retro-fitting exchange rates onto a year of undated approximations is where most of the 20 hours goes.
What to keep, in general
Whether your records come from software or a disciplined spreadsheet, the keep-list is stable across jurisdictions:
- Every acquisition: exact item name, date-time, venue, native price, home-currency price, rate used.
- Every disposal: the same, plus fees charged by the venue — seller fees on cash marketplaces (typically a few to a dozen percent depending on venue) are usually relevant to the gain calculation, and they're deductible context your professional will want.
- Every deposit and payout between your bank and marketplace balances — the fiat boundary is what ties the skin ledger to the money the tax authority can see.
- Nothing summarized-only: summaries help you, but raw entries are what survive questions. Ledgers beat memory precisely because they were written by a process, contemporaneously, with no April-flavored hindsight.
And a habit: reconcile quarterly, twenty minutes at a time, instead of annually in a panic. Records that are checked while the year is warm get fixed while fixing is possible.
The honest conclusion
Tax is the least fun corner of skin investing and the one where automation's advantage is most lopsided, because record-keeping is the single task humans do worst and machines do perfectly: unglamorous, repetitive, valuable only later, and ruined by a single skipped week. A bot that logs every purchase as a matter of mechanical routine isn't doing anything clever — it's just incapable of the thing that destroys April, which is deciding that tonight it'll skip the bookkeeping. If skin profits are real enough to enjoy (the unsexy chapter covers why pretending otherwise is a bad plan), they're real enough to document. Let the documenting be the machine's problem, all year — so April is a filter and a sum, not a dig.