Books your CPA can follow.
Professional bookkeeping for crypto traders. Wallets and exchange accounts come in as evidence. What you decide about each row is the books. Every gain, lot and report is a calculation you can trace back to both — then you close the year, lock it, and hand your CPA one bundle.
Public wallet addresses only — we never ask for private keys. Informational software, not tax or legal advice.
| When (UTC) | Account | Asset | Qty | Evidence | Your books | State |
|---|---|---|---|---|---|---|
| 2025-03-01 10:00 | Ledger cold | ETH | −1.5 | chain scan | transfer_out ⇄ to Coinbase | locked |
| 2025-03-01 10:20 | Coinbase | ETH | 1.499 | coinbase csv | transfer_in ⇄ from Ledger cold | locked |
| 2025-05-01 00:00 | Coinbase | SOL | 0.5 | coinbase csv | income_staking | locked |
| 2026-02-10 14:02 | Ledger cold | BTC | −0.25 | chain scan | sell · rule proposed — not posted | drafted |
| 2026-02-11 09:30 | Ledger cold | ETH | −0.0021 | chain scan | — nothing decided yet | unreviewed |
Three things, kept apart.
Tax tools guess a category for every row and ask you to trust the total. Books work the other way round: the software records what it saw, you record what it was, and the arithmetic is something anyone can check.
Imports are what we saw — nothing more.
Chain scans (Bitcoin, Ethereum, Base, Arbitrum, Optimism, Polygon, Solana), Coinbase exports, any CSV, manual entries. Every row keeps its raw record and is never edited. A re-sync can add rows or flag a change; it can never rewrite what you decided.
Your decisions are the books.
Categories, transfer matches, funding sources, cost-basis overrides, lot picks and "ignore" flags are yours (or your CPA's). Rules you write can propose — or post for you only when you switch that on. Every change is audited: who, what, when, old value, new value.
Every number is a function of the two.
FIFO, HIFO, LIFO or Specific-ID, per wallet or universal — deterministic, no judgement, no model in the math. Where the books are incomplete you get a warning, never a guess. Close a year and its figures freeze; corrections are dated adjustments in the open books.
How it works
A client file holds one set of books. Most people are through the first year in an afternoon.
Bring in the evidence
Name your wallets and exchange accounts, group them (personal, trading, cold), sync the chains, drop in exports. Every row lands unreviewed with its price on the day as evidence.
Post the books
Categorize in bulk, accept transfer matches so a wallet-to-wallet move is one movement, not two taxable events, record where money came from, override a basis when you know better — with a reason.
Run the numbers
Lots, gains by holding period, income by type, fees, P&L by account and by token — recomputed from posted books only, with every gap called out.
Close the year, hand it over
A checklist blocks the close until nothing is left unreviewed. Then the year locks. Your CPA gets the Closing Ledger PDF, the country's forms, and one bundle where every line ties to its evidence, lots and audit trail.
Built for the person who has to sign it.
Invite your CPA into the file. They see the same books, can post alongside you, and get an export that reads like a working-paper file — not a tax dump.
- Ledger with provenance. Every posted line next to its evidence id and key, the lots it opened or consumed, its links, who posted it, and the line version.
- Locked years. A closed period can't be changed in place — the database refuses. Corrections are append-only adjustments with before, after, reason and date.
- Audit log on everything. Categories, matches, lot picks, rules, closes, reopens — with source: manual, a client rule, an import refresh, or a close.
- Form 8949 / Schedule D for the US; country statements for 34 jurisdictions; a local-currency statement for 100 more. Country rules are shown as labelled steps, never hidden inside a total.
- DRAFT on every page until the period is closed — so nobody files from an open year by mistake.
├─ closing-ledger.pdf
├─ ledger.csv — every posted line + evidence id + lot ids
├─ disposals-8949.csv
├─ income.csv · fees.csv · pnl.csv
├─ lots-open.csv · country-lines.csv
├─ adjustments.csv · audit.csv
└─ README.txt — how the ids tie together
Country statements for 34 jurisdictions.
Tax-year calendars, holding thresholds, exemptions and inclusion rates for each, computed in your reporting currency. Everywhere else, a clear local-currency statement.
Digital-asset tax rules are still settling in some countries. Where a country's official method isn't supported yet (average-cost pooling, for instance) the report says so plainly and recommends a local specialist.
Pricing
One payment per client file, per tax year. Nothing renews by itself. Every plan keeps the whole trust layer — append-only evidence, the audit log, locked years, adjustments, and a seat for your CPA.
- Generic local-currency statement
- Evidence, audit log, locked years
- Trader + CPA seats
- Generic local-currency statement
- CSV exports
- Rules that propose
- Form 8949 / Schedule D and 34 country statements
- Closing Ledger PDF + CPA bundle
- Analytics
- Rules that auto-post
- Everything in Core
- Nightly wallet re-sync
- Multi-year history in one file
A posted line is a row you (or your CPA) have categorised — evidence you haven't reviewed doesn't count. Upgrading mid-year charges only the difference. Secure delivery — bank-statement-style release of your reports to your CPA, no attachments in email — is $25 per tax year on any paid plan and included with Pro (coming soon). KŌINItax customers get 25% off their first year of Pro with code KOINITAX. Refunds: full refund within 7 days if no PDF or CPA bundle was downloaded for that year. Prices in US dollars; payment by card via Stripe. Plans are bought inside the app, from the Plan tab of a client file.