Release

Tax engine accuracy: elections everywhere, income-lot basis fix, snapshot-first balances

Your tax method and elections now apply on every calculation path, income from staking and rewards is no longer double-counted on disposal, tax years can start on a custom date, and balances display snapshot-first with provenance badges.

  • ZA
  • FIFO

Highlights

  • Elections honoured on every call path

    Your chosen accounting method and tax elections now flow through every calculation the engine runs — summaries, disposals, exports and reports all agree, with no path silently falling back to defaults.

  • Income-lot cost-basis fix

    Staking rewards, mining and worked-for airdrops join your holdings at their market value on receipt, so a later disposal is measured against that basis. Income is taxed once as income — not again as a full-proceeds gain. Update, 24 July 2026: an airdrop or hard-fork coin you did nothing to earn now has its own treatment. See that release note.

  • Custom tax-year start

    Set a custom financial-year start date and the whole engine — summaries, disposals, reports — respects your fiscal window instead of assuming the default individual year.

  • Snapshot-first balances with provenance

    Balance displays now prefer exchange-reported snapshots, show where each figure came from with provenance badges, and warn when CSV imports imply negative balances (a classic missing-history signal).

  • Stronger transfer matching

    Transfer-typed movements participate fully in self-transfer matching, year-end holdings anchor to snapshots, and the completeness review can pull unmatched movements straight from your ledger.

What shipped

A correctness-focused wave across the tax engine and balance displays.

Elections apply everywhere

Previously, a handful of calculation paths could ignore your configured accounting method or tax elections and quietly use defaults. Every engine entry point now resolves your elections the same way, so the numbers you see in the dashboard, the disposal schedules, the CSV exports and the generated report are computed under one consistent set of rules.

Income is taxed once

Crypto received as income — staking rewards, mining, an airdrop or hard-fork coin you worked for — enters your holdings at its market value on the day you received it. When you later dispose of it, the gain is measured against that basis. This fixes cases where income coins showed a full-proceeds gain on disposal, effectively counting the same value twice.

Update, 24 July 2026. The rule above is for income you worked for. An airdrop or hard-fork coin you did nothing to earn now has its own treatment: no income, and a base cost that depends on whether you hold on capital or revenue account. See Fortuitous-receipt airdrops, paragraph 42, and swap valuation.

Your fiscal year, your dates

If your tax year doesn't follow the default individual year, you can now set a custom start date and the engine derives every year window from it. Disposal tax years are also derived from each transaction's own date, which corrects edge cases around year boundaries.

Balances you can trace

Balance panels now display exchange-reported snapshots first, fall back to computed history where no snapshot exists, and badge each figure's provenance so you can tell which is which. CSV imports that imply a negative balance are flagged — that almost always means part of your history is missing, and it's better to know before you rely on the numbers.

Also in this release

  • Transfer-typed movements now participate fully in self-transfer matching.
  • The Data Completeness review can list unmatched movements directly from your ledger.
  • Report exports respect your profile's default classification, and disclosure copy across the product was tightened to describe exactly what Coinfig does and does not do.

As always: Coinfig is a calculation and reporting tool, not tax advice. If a specific treatment is unclear for your situation, confirm it with a qualified tax practitioner.