Crypto Tax & Portfolio Reconciliation

Your crypto data
is wrong.
We'll prove it — and fix it.

Litmus Ledger runs your exchange exports through a rigorous validity test. When it fails — and it usually does — we diagnose exactly what's broken and produce auditable corrections you can approve.

Join the waitlist Closed beta · Invite only

Other tools
tell you something
is wrong.

Exchange exports are incomplete, ambiguous, duplicated, and inconsistent. Every crypto tax tool can surface the resulting errors — mismatched balances, unclassified transactions, negative positions.

None of them tell you why. None of them fix it.

Litmus Ledger turns every reconciliation failure into an actionable diagnosis: what failed, which source rows caused it, what correction is proposed, and what evidence supports it.

litmus — reconciliation

$ litmus run --portfolio binance.csv kraken.csv


Parsing 2 sources · 4,831 events

Running reconciliation...


✗ FAIL Completeness

23 orphan events · no backing flows

rows: binance.csv:1204, 1391, 2018...


✗ FAIL Conservation

Σ Δflows ≠ balance delta by −$12,431

likely cause: missing deposit 2023-08-14


✓ PASS Admissibility

✓ PASS Feasibility


Running correction pipeline...

Four checks.
One verdict.

A portfolio history passes the Litmus Test when it satisfies all four validity criteria. Most portfolios fail at least one. The test tells you exactly which criterion failed — down to the source row.

01 / COMPLETENESS

All events explained

Every observed balance change must be accounted for. No orphan events. All endogenous flows matched to trades, fees, or deposits.

No events without backing flows
02 / CONSERVATION

Assets conserved

Assets are not created or destroyed. Balance deltas must match total flow changes. Internal transfers must net to zero.

Δflows=Δbalance\sum \Delta\text{flows} = \Delta\text{balance}
03 / ADMISSIBILITY

Valid at all times

No negative balances. No positions without collateral. No funding charges on closed positions. Every point in time must be valid.

balance(t)0  t\text{balance}(t) \geq 0 \;\forall\, t
04 / FEASIBILITY

All transitions valid

Every transition must be physically possible. You must send before you receive. You must borrow before you repay.

sendreceive    borrowrepay\text{send} \to \text{receive} \;\cdot\; \text{borrow} \to \text{repay}
"Other tools tell users that something is wrong.
Litmus tells them exactly what — and helps them fix it."

Product thesis · Litmus Ledger

Upload once.
Know everything.

STEP 01

Upload your exports

Drop in CSV exports from any exchange — as many as you want, even overlapping in time. Deduplication is automatic.

Binance · Kraken · Coinbase · +more

STEP 02

Run the litmus test

We parse, reconcile, and validate your data against the four-criterion test. Failures are mapped to exact source rows with proposed corrections.

Completeness · Conservation · Admissibility · Feasibility

STEP 03

Approve and export

Review the diagnosis, approve proposed corrections, and export clean records with a full audit trail. Hand it off to your tax tool with confidence.

TaxBit · Koinly · Cointracker · +more

Be first to
know your data.

We're inviting a small group of crypto traders who want to fix their data for good. If your portfolio history is a mess, we want to help.

Closed beta · Free for early users · No credit card