Skip to main content

Polish investment tax calculator (PIT-38) for stocks and cryptocurrency

Project description

PIT-38 — Polish Investment Tax Calculator

CI codecov GitHub release Python 3.10+ License: MIT

🇵🇱 Wersja polska

A command-line tool for calculating Polish income tax on stocks and cryptocurrency (PIT-38 form). It imports transaction history from popular brokers, converts foreign currencies to PLN using official NBP exchange rates, and computes your tax liability.

Supported Brokers

Broker Stocks Crypto
Revolut Yes Yes
E*Trade Yes
IBI Capital Yes (SELL-side, PDF input)
Binance Yes
Manual CSV Yes Yes

For broker-specific quirks see docs/BROKERS.md.

Quick Start

Install

pipx install pit-38

Or from source:

pipx install .

Calculate stock tax

pit38 stock -f transactions.csv -y 2025

Calculate crypto tax

pit38 crypto -f transactions.csv -y 2025

Import from broker

Convert your broker's export into the standardized CSV format:

pit38 import revolut-stock  -i revolut_export.csv -o transactions.csv
pit38 import revolut-crypto -i revolut_export.csv -o transactions.csv
pit38 import etrade         -i etrade_export.csv  -o transactions.csv
pit38 import binance        -i binance_export.csv -o transactions.csv
pit38 import ibi-capital    -i ~/ibi_orders/      -o transactions.csv   # PDF input (single file or directory)

You can combine multiple files from different brokers:

pit38 stock -f revolut.csv -f etrade.csv -y 2025

Manual CSV format

You can also prepare transaction files manually. See the example formats:

Tax Rules

This calculator implements Polish tax law for capital gains (PIT-38). For a detailed description of the rules, see:

How It Works

  1. Import — broker plugins convert proprietary CSV exports into a standardized format
  2. Exchange — foreign currency amounts are converted to PLN using NBP average rates (table A) from the last business day before each transaction
  3. Calculate — stock profits use the FIFO method; crypto uses yearly cost/income aggregation
  4. Tax — 19% flat tax rate is applied, with automatic deduction of losses from previous years

Contributing

Contributions are welcome — including first-time open-source PRs and new broker plugins. See CONTRIBUTING.md for dev setup, test conventions, PR guidelines, and a walkthrough for adding a new broker plugin.

Quick dev setup:

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/

This project follows the Contributor Covenant v2.1.

Disclaimer

This tool is provided for informational purposes only and does not constitute tax advice. Always verify your calculations with a qualified tax advisor before filing your PIT-38 declaration.

Community


Buy Me A Coffee

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pit_38-2026.4.25.tar.gz (58.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pit_38-2026.4.25-py3-none-any.whl (88.0 kB view details)

Uploaded Python 3

File details

Details for the file pit_38-2026.4.25.tar.gz.

File metadata

  • Download URL: pit_38-2026.4.25.tar.gz
  • Upload date:
  • Size: 58.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for pit_38-2026.4.25.tar.gz
Algorithm Hash digest
SHA256 ef423244d16b2b5c91b464e09ed6699281c3057a3cb23a43e039c8088c935cea
MD5 4a41d17e5bd175fcbe09456c1ce9888a
BLAKE2b-256 2f05adfe4db9ad87f38142f1574d038c19361bde9089c04d2ae58bf7a9c5c136

See more details on using hashes here.

File details

Details for the file pit_38-2026.4.25-py3-none-any.whl.

File metadata

  • Download URL: pit_38-2026.4.25-py3-none-any.whl
  • Upload date:
  • Size: 88.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for pit_38-2026.4.25-py3-none-any.whl
Algorithm Hash digest
SHA256 96a87b2242f84d8140bdfeeb1ae6ba2cd80b735c82e3131337b083634c7a1a09
MD5 96aa24adeb6f8535d02648074bee5198
BLAKE2b-256 d32ed5c85b874cc5b7928546692ec88deb2506d97a1f2fc50472d37048d22dcf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page