mrkeyoor.com_
Fri 16 Oct 18:52 UTC
Automationevaluationupdated 08 Oct 2026

crypto-tax-calculator review

Crypto Tax Calculator says it can turn exchange and wallet records into capital-gains and income-tax reports. It includes import adapters, historical price lookup, transaction classification, and PDF or CSV output, but its setup path contains code we would not trust on a real machine.

-1stars / 7d
Verdict

Our run installed 35 packages but the build exited 1 after 4 seconds, and the documented setup path executes heavily obfuscated Python before preparing a downloaded file for launch. Do not install Crypto Tax Calculator on a real machine or give it financial data. Its importer code may interest a security researcher inside a disposable sandbox, but that is an investigation, not product adoption.

We ran it

Lab card: what happened when we ran crypto-tax-calculatorScreenshot of crypto-tax-calculator (github.com/caxete/crypto-tax-calculator)
Install✓ · 24s35 packages · 37 MB
Build✗ · 4s
Testsn/ano test script
Known vulns0(pip-audit)
Repo84 files~13,424 lines of source · 4.4 MB · 1 CI workflows

Answers from our run

Does crypto-tax-calculator build from source?

Dependencies installed in 24 seconds (35 packages), and the build failed. We cloned commit 2a0e8fc into a clean Debian container with 3 CPUs and no project-specific setup.

Does crypto-tax-calculator have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does crypto-tax-calculator have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use crypto-tax-calculator?

Anyone preparing a real tax return: the README makes broad tax-treatment claims without identifying validated country forms or professional review.

What are the alternatives to crypto-tax-calculator?

Rotki, BittyTax, RP2. Our run installed 35 packages but the build exited 1 after 4 seconds, and the documented setup path executes heavily obfuscated Python before preparing a downloaded file for launch.

Setup1/5Build failed, and the documented setup path is unsafe to run
Docs2/5Many claims, but no warning for the executable setup behavior
Community1/5379 stars and 3 open PRs, with no substantive issue discussion
Maturity1/5No releases or runnable test target, and our build failed

Who it’s for

Security researchers examining a suspicious Python package without executing it.
Developers studying exchange CSV normalization inside an isolated, disposable environment.
Maintainers who want a concrete example of why setup scripts need source review before use.

Who it’s NOT for

Anyone preparing a real tax return: the README makes broad tax-treatment claims without identifying validated country forms or professional review.
Anyone planning to follow the documented python setup.py step: the file imports an obfuscated module, writes a downloaded payload to src/dex.py, and launches it.
Teams that require a green build and test gate: our build exited 1, and the repository exposes no test script or target for the lab to run.
Linux users expecting documented support: the requirements name Windows and macOS, although our Debian install completed.

Setup reality

Our sandbox installed commit 2a0e8fc in 24 seconds, adding 35 packages and using 37 MB. The build failed with exit code 1 after 4 seconds. No test script or target was available, so we skipped tests; pip-audit reported 0 known vulnerabilities. The supplied log summary contains no error tail, so it does not establish why the build failed.

The README tells users to edit crypto_tax_calculator.conf for currency, timezone, price sources, fees, and transfer treatment. Historical pricing depends on services named as ExchangeRateAPI, ECB, CoinGecko, and CryptoCompare, while the documentation does not spell out which calls need credentials.

The larger problem precedes configuration. setup.py invokes an obfuscated src.report module, then contains a downloader that can write src/dex.py and start it. Do not run this setup path on a workstation, tax-data machine, or network with useful credentials.

setup.py downloads and launches a Python file

The README tells you to clone the repository and run python setup.py. Reading that file changes the decision. Before ordinary packaging logic appears, it imports src.report and calls report.run_sync(). That module is a large block of encoded byte arrays, XOR operations, dynamic imports, decryption, decompression, and an exec call. This is executable behavior hidden behind names such as _p92hk3 and _cmmv3p, not normal metadata for a tax calculator.

The same setup.py constructs an HTTPS prefix from character codes, obtains a URL and decoder from names supplied at runtime, downloads a response, writes decoded bytes to src/dex.py, and starts that file with subprocess.Popen. We did not execute or decode this path outside the supplied sandbox run. You should not either. Thirty-five clean packages in pip-audit do not assess code embedded in the repository or a payload fetched while setup runs.

The 84-file checkout still has an unsafe setup path

On paper, the project covers the tedious parts of crypto accounting. The README describes adapters for exchanges, blockchain explorers, hardware wallets, desktop wallets, and CSV exports. Its unified import engine is supposed to classify trades, transfers, staking income, airdrops, mining rewards, gifts, and fees before producing PDF or CSV reports. The checkout at commit 2a0e8fc contained 84 files and about 13,424 lines of source, so there is real application code here.

The configuration file exposes base currency, timezone, date order, price providers, fee treatment, transfers, and lost-token handling. Those switches also show why tax software needs narrow jurisdiction claims. The README gives categorical treatments for airdrops, gifts, charity, fees, and losses, yet it does not name supported tax forms, country modules, filing-year rules, or an external review of those decisions. A London timezone default is not a compliance model.

What happened when we ran it

Our fresh Debian sandbox installed commit 2a0e8fc in 24 seconds. The environment used 3 CPUs, 8 GB of RAM, Python 3.12, no secrets, and no elevated privileges. Installation added 35 packages and occupied 37 MB. Pip-audit found 0 known vulnerabilities in those installed dependencies. That result says nothing about the obfuscated repository code or any file it may retrieve.

The build failed after 4 seconds with exit code 1. The measurement summary provided for this review does not include the log tail, so we cannot name the failing command, exception, or missing requirement. Calling it a system-package problem would be speculation. There was no test script or target for the lab runner, so tests were skipped rather than passed or failed.

The repository had 1 CI workflow, no Dockerfile, and no top-level tests directory in our measured snapshot. Some files under src/tests are visible in the tree, but the lab found no supported test target to invoke. That distinction matters: test-looking files do not give a user a repeatable verification command, and they did not produce a result in our run.

The README names no validated tax jurisdiction

The README claims support for multiple tax jurisdictions but identifies 0 validated country forms or filing-year rule sets. One example says a task-based airdrop is income while a freely received one is not. Other sections assign treatments to gifts, charity, transfer fees, and lost assets. A competent developer should ask where those rules are encoded and what report a tax professional can reconcile. The documentation does not answer those questions.

The price path adds another verification burden. The default config names 2 fiat sources and 2 crypto sources, but the README does not explain credential requirements, rate selection when providers disagree, cache behavior, or the evidence stored beside a calculated value. Historical price provenance is part of an audit trail. A final PDF without reproducible inputs is only a formatted assertion.

Three open pull requests do not address the setup risk

GitHub showed 379 stars, 3 open issues and pull requests, and a last push on October 3, 2026. The API returned all 3 open items as pull requests, including 2 typo fixes and an unrelated tariff-service suggestion. There was no latest release in GitHub's releases endpoint. Recent activity therefore exists, but the visible discussion does not address the setup behavior or establish release discipline.

AGPL-3.0 licensing would normally make the calculation path inspectable. Here, inspection is exactly what stops the recommendation. A tax tool handles transaction histories, wallet identifiers, and documents that deserve a tighter trust boundary than ordinary developer utilities. Use Rotki, BittyTax, or RP2 after doing your own jurisdiction check. Leave this repository isolated until its maintainers remove the obfuscated execution path and publish a reproducible, passing verification route.

Alternatives

ProjectWhat it isPick it when
RotkiA privacy-focused portfolio, accounting, and tax-reporting application.pick this instead when you want a maintained application with a user interface and a public project history.
BittyTaxA command-line crypto tax calculator with exchange, wallet, and explorer import tools.pick this instead when you want a Python workflow whose scope and installation can be audited directly.
RP2A privacy-focused calculator with accounting-method and country plugin support.pick this instead when jurisdiction plugins and traceable lot accounting matter.

What people are saying

  1. [velocity-scout] caxete/crypto-tax-calculator

Sources

  1. Crypto Tax Calculator README
  2. setup.py at measured commit
  3. Obfuscated src/report.py at measured commit
  4. GitHub repository activity

More automation reviews

supersidian · genspark-claw · orc-claude-plugin · tiktok-views-bot · Ydisks-Xianyu-Helper · jev-gui-delegate · the whole board →