How to file forex taxes in Poland — step by step
March, day before PIT-38 deadline. Trader: "must file". Opens 1500 trades in Excel. After 4 hours: panic, conversion errors, doesn\'t know if correct. Here are 7 steps to file Polish forex taxes — from data download to online submission.
Step 1: Get PIT-8C from Polish broker
Polish brokers (XTB, TMS) automatically generate PIT-8C by Feb 28. Download from platform or email. Contains:
- Sum of realized P&L in PLN
- Loss eligible for deduction
- Costs (commissions, fees)
If your Polish broker hasn\'t sent PIT-8C by March 5 = report. Legal obligation.
Step 2: Download CSV from foreign brokers
IC Markets, Pepperstone, Saxo Bank — download Account Statement / Transaction History for full calendar year (Jan 1 - Dec 31). CSV format preferred. Contains:
- Open date, close date
- Symbol (EUR/USD, GBP/JPY)
- Volume (position size in lots)
- Open price, close price
- P&L in account currency (USD/EUR)
- Commissions, swap
Step 3: Convert to PLN
Each closed trade requires P&L conversion to PLN at NBP rate of close day:
- Download rate tables A from nbp.pl for full year (Excel/CSV)
- In Excel add column "Close Date PLN Rate" — VLOOKUP to NBP table
- Add column "P&L in PLN" = P&L_USD × rate
- Verify 5 random trades manually
Step 4: Sum net P&L
In Excel:
- Sum P&L in PLN for whole year
- Subtract costs (broker commissions in PLN)
- Net realized P&L in PLN = PIT-38 basis
Step 5: Enter on PIT-38
Open PIT-38 (online via podatki.gov.pl):
- Section D: Income from sale of securities
- Enter sum of revenue (positive P&L)
- Enter cost of revenue (negative P&L + commissions)
- Net = tax base
- Tax 19% × base = tax due
Note: PIT-38 covers income tax on capital gains. It is also worth checking whether forex is subject to transaction tax (PCC) and other levies beyond PIT-38 — most traders are exempt from PCC, but the rule has exceptions.
Step 6: Check ORD-U
If capital at foreign broker > 10,000 EUR (on Dec 31) = mandatory ORD-U:
- Deadline: April 30 (same as PIT-38)
- Fill online or paper
- List: broker name, account number, address, country, balance
Step 7: File online
"Twój e-PIT" system automatically pre-fills PIT-38 (based on PIT-8C from XTB). Confirm or supplement with foreign broker data. Submit. Confirmation in 24h. Deadline April 30.
Practical time and costs
Sources & bibliography
-
Ministerstwo Finansów PL Formularze PIT do druku (PIT-38) · oficjalne formularze i instrukcje www.podatki.gov.pl ↗
-
NBP Kursy walut — tabela A · średnie kursy NBP do konwersji walut www.nbp.pl ↗
-
Ministerstwo Finansów PL Twój e-PIT · system online składania PIT www.podatki.gov.pl ↗
Frequently asked
What if broker doesn't give PIT-8C?
Most foreign brokers (IC Markets, Pepperstone) don't give PIT-8C — Polish-specific form. Calculate yourself: download transaction CSV, convert to PLN, sum. Polish brokers (XTB, TMS) provide PIT-8C automatically by Feb 28. Some foreign brokers (Saxo Bank Poland) may also generate, check your broker.
How to calculate conversion rate?
NBP average rate A from trade day. Polish PIT requires per-transaction conversion (not monthly average). Download rate tables from nbp.pl/kursy, use rate A (average), not B (buy/sell). Practice: in Excel use VLOOKUP for rate map. For forex P&L take rate from close day (realized P&L).
Can I file PIT-38 on paper?
Yes, but since 2023 online preferred. Paper PIT-38 filed at tax office by April 30. Online (podatki.gov.pl + e-Deklaracje) faster, automatic confirmation, status tracking. Most Poles file online. Twój e-PIT — MF service, automatically pre-fills form (based on PIT-8C), confirm online.
What if I miss deadline?
April 30 is deadline. After: czynny żal (active regret) — can file late with explanation (e.g. illness), usually no penalty. Without czynny żal: penalty 1/30 minimum wage per day (~120 PLN/day in 2024). Plus statutory interest on tax (~12% annual). Practically: always file czynny żal if late, saves penalties.