Bitfork Tax

Bitfork Tax

Methodology

A tax tool you can't audit is a tax tool you shouldn't trust. This is the complete, versioned description of how your report is computed. It runs entirely in your browser from Polymarket's public API — and this page is the specification it implements.

Version

Methodology v1.0 — 2026 tax year. This page is the authoritative description of how Bitfork Tax computes your report. Any change to the computation ships with a version bump and a changelog entry here; reports always state which version produced them.

1. What counts as an asset

Every Polymarket outcome token (an ERC-1155 id, such as “Yes” on one market or “No” on another) is treated as its own asset class. Shares of the same outcome token are fungible with each other and pool together; shares of different tokens never pool.

USDC is treated as cash. Fees and rewards move money without creating a disposal of an outcome token, so they are handled as income or basis adjustments, not as trades.

2. Acquisitions

Buying shares sets their basis at the purchase price you paid. A split (depositing USDC for a matching Yes/No pair) creates shares at $1.00 of basis per pair; in v1 the full basis is attributed to the outcome side recorded in the activity feed — see Limitations.

Liquidity rewards are ordinary income at their USDC value when received.

3. Disposals

Selling realizes proceeds equal to the sale price times the shares sold. Redeeming a winning position realizes $1.00 per share. A merge (combining a complementary Yes/No pair) realizes $1.00 per pair. A position that resolved against you is worthless: it realizes zero proceeds, and the full basis becomes a capital loss.

Disposals are matched FIFO — oldest shares are sold first — by default. The UK pack uses Section 104 average-cost pooling instead, as HMRC requires. HIFO and specific-id are planned as selectable methods.

4. Holding period

A disposal is long-term when the disposed shares were held for more than one year, measured from each lot's acquisition date to the disposal date; otherwise it is short-term. Prediction-market positions are usually short-term, but long-held resolutions do occur and are reported as such.

5. Country packs

United States: Form 8949-style CSV with short/long-term split, in the context of the first Form 1099-DA year.

United Kingdom: Section 104 average-cost pooling across each outcome token, SA108-style output, with the annual exempt amount noted (not applied automatically).

Germany: FIFO with the Spekulationsfrist — disposals of positions held longer than one year are shown separately as tax-free, and the €1,000 Freigrenze is noted. Amounts remain USD; check the EUR figure with your advisor.

International: generic FIFO report with term split, for any other jurisdiction.

6. Limitations (read this)

Splits attribute the full basis to the outcome side present in the activity feed; the complementary side's basis is a documented v1 simplification. NegRisk conversions are counted but not basis-reorganized. Shares transferred in from another wallet have no tracked acquisition and are excluded from totals with a warning — never guessed at zero.

Wallets with more than 50,000 activity rows are truncated and the report warns you. Very high-frequency traders should split their analysis by tax year.

7. What this is not

Bitfork Tax is an informational report, not tax advice, and not a substitute for a professional. Tax rules vary by jurisdiction and change; verify the output against your situation before filing. The full honesty list of what our systems can and cannot see lives on the transparency page.

Methodology v1.0 · 2026 tax year

Implemented by lib/pm/engine.ts and verified by hand-computed test vectors that ship with the codebase. Informational only \u2014 not tax advice.

Compute my report — free preview