How to file forex taxes in Poland for 2024 — a complete PIT-38 guide
Every year, between mid-February and the end of April, a Polish forex trader faces the same form — PIT-38. For some, it is a thirty-minute task of copying four numbers from a PIT-8C issued by a domestic broker. For others, it is a several-day marathon involving a spreadsheet, NBP exchange rates and several hundred trades spread across three foreign platforms. This article walks through the 2024 filing step by step, from the moment you check your post in February to the moment you click "Submit" inside the Twój e-PIT service at the end of April.
Why forex goes on PIT-38, not PIT-37 or PIT-36
The Polish tax system treats forex gains as capital income — a category that also covers gains from equities, CFDs, cryptocurrencies and investment funds. Article 30b of the Personal Income Tax Act governs this regime. The rate is 19% flat, meaning it does not depend on the size of the gain or on other income sources during the year.
This is the critical distinction from PIT-37 (employment contracts, civil contracts, work contracts — progressive scale at 12% and 32%) and PIT-36 (business activity — usually 19% flat or a lump-sum rate). A trader combining a regular job with forex files both forms: PIT-37 on salary, PIT-38 on capital gains. Each form has its own tax base and its own personal allowance — and PIT-38 has no allowance at all, so every zloty of net realised gain feeds the 19% base.
PIT-38 covers all capital gains together in one pool. That means a forex loss can be offset against a profit from equities or cryptocurrencies in the same year, and vice versa. This is meaningful flexibility that many European systems lack, where gains from different asset classes are reported separately. The reverse is also true: a forex loss cannot be offset against salary or business income — capital sits in a sealed bucket.
PIT-8C from a Polish broker — what you receive and how to copy it
If you trade through a Polish broker regulated by the Polish Financial Supervision Authority (KNF) — XTB, mBank Brokerage, TMS Brokers, BOSSA, DM BOŚ — your life is incomparably easier than for most traders worldwide. By the end of February you receive PIT-8C, a consolidated summary of capital income for the preceding year, electronically signed by the broker. Brokers send it two ways: by traditional mail to your registered address, and inside the client portal as PDF and XML.
The XML version is the one that actually matters for online filing. Inside Twój e-PIT you log in via Profil Zaufany (Trusted Profile) or online banking, and the system automatically pulls data from PIT-8C — revenue, costs, income, tax — and shows you a pre-populated PIT-38 form. Your role is to verify the numbers, add any deductible costs the broker is unaware of, and press "Submit".
It is worth checking whether the broker has included all your accounts on PIT-8C. Some traders hold a euro-denominated account plus a separate zloty account at the same broker; the broker may issue two separate PIT-8C forms or one consolidated form. If you see only one, but you traded on two accounts, write to the settlements department before March 15. A complaint after that date starts colliding with the April 30 deadline.
Foreign broker — self-reporting step by step
IC Markets, Pepperstone, Saxo Bank, Interactive Brokers, Tickmill, Fusion Markets — none of them issue PIT-8C, because none of them are entities subject to Polish tax law. They do, however, provide detailed annual reports: IC Markets has an "Annual Statement" in the Reports section, Pepperstone sends out a "Year-End Statement" in late January, and Interactive Brokers generates an "Activity Statement" on demand in the client portal. Each report contains a list of closed trades with open and close dates plus P&L in the account currency.
The self-reporting procedure has six stages. First, download the CSV with transactions for the full 2024 year. Next, from nbp.pl, download the average rate A tables for 2024 — most conveniently as one file via the "Average exchange rate tables 2002-2024" option. Third stage: assign to each closed trade the NBP rate from the last business day preceding the close — in a spreadsheet, VLOOKUP or INDEX/MATCH solves this cleanly. Fourth: convert each trade P&L to zloty. Fifth: sum all gains and losses net for the year. Sixth: enter that figure into PIT-38 under the "income from other sources" section.
A practical note: in forex, gain or loss realises at the moment the position closes, regardless of whether you withdraw funds from the broker or leave them on the account. That means if in 2024 you closed one hundred trades with a total gain of 50,000 PLN, but every zloty stayed at the broker, you still pay 19% on 50,000 PLN. Counter-intuitive but that is how the act works — tax follows realisation, not withdrawal.
Income — what actually feeds the tax base
The PIT-38 tax base is the difference between revenue and deductible costs. Revenue is the sum of realised gross gains across all brokers. Costs are every documented expense directly tied to generating that revenue — commissions, spread (auto-included in P&L), swap, platform fees, education costs, tools.
A concrete example. Tomasz trades on XTB and in 2024 realised 23 trades with total gross gains of 47,200 PLN. The broker took 1,800 PLN of commissions and 320 PLN of swap. Tomasz also paid 25 USD per month for TradingView Premium (paid from his TradingView corporate account, VAT invoice each month), which after conversion comes to 1,200 PLN per year. XTB's PIT-8C shows revenue of 47,200 PLN, costs 2,120 PLN (commission plus swap), income 45,080 PLN. Tomasz adds the TradingView costs — 1,200 PLN, which XTB is unaware of. The tax base drops to 43,880 PLN, and tax falls to 8,337 PLN instead of 8,565 PLN. The difference is 228 PLN — modest but a clean reward for fifteen minutes of paperwork.
Deductible costs — what is in and what is out
The Polish PIT Act does not list specifically the costs a trader may deduct. It operates on a general rule: a cost is an expense incurred to generate income or to preserve or secure its source, documented in a way that allows verification. In practice the catalogue is well established by interpretations issued by the National Tax Information Service (KIS).
- Broker commissions — indisputably deductible. Every broker's annual report breaks them out separately from P&L.
- Swap (rolling positions) — deductible when negative, taxable when positive. In practice already included in position P&L.
- Spread — automatically included in entry and exit prices, so it is not entered separately. Trying to deduct it twice is a common mistake.
- Subscriptions to analytical tools — TradingView, MetaStock, Bloomberg, MultiCharts — fully deductible provided you have a VAT invoice in your name.
- VPS (virtual private server) — if you run Expert Advisors or need a stable connection to the broker, the 100-300 PLN per month cost is fully deductible.
- Courses and books — deductible when invoiced and demonstrably tied to forex. "Forex 101" — yes. "A biography of Warren Buffett" — doubtful, the revenue service may challenge it.
- Accounting office — if you outsource the PIT-38 filing to a bookkeeping firm, their invoice is a cost.
What practically cannot be deducted on PIT-38 are personal laptop, home internet, electricity and telephone — mixed-use items that, for an individual filing PIT-38 (rather than business activity), are very hard to justify. Attempts to deduct them often draw a request for explanations. If your costs are large enough that laptop and internet actually weigh on the budget, it is probably time to consider converting to sole proprietorship or a limited liability company — at which point the catalogue widens substantially. I cover that in more detail in the article on deductible costs for forex traders.
Tax loss — carry-forward and the 50 percent trap
"The most common mistake among Polish traders is the belief that a losing year can simply be ignored. In reality, a loss declared on PIT-38 is the most valuable position on your capital ledger for the next five years — provided you actually declare it." — Krajowa Informacja Skarbowa, Information Bulletin for Taxpayers Earning Income from Securities and Derivatives, tax brochure, 2024.
The Polish legislator allows carrying capital losses forward for five subsequent tax years. There is, however, an important limit: in any single year you may deduct at most 50% of the original loss amount. This rule was introduced after 2018 — previously the entire loss could be absorbed in one year.
A concrete example. Marta closes 2024 with a 40,000 PLN loss. She files PIT-38 with zero tax and a declared loss. In 2025 she generates a net gain of 60,000 PLN. The maximum amount of loss she can deduct in 2025 is 50% of 40,000 PLN, that is 20,000 PLN. Her tax base is 40,000 PLN (60,000 minus 20,000) and the tax is 7,600 PLN. The remaining 20,000 PLN of loss carries forward to 2026 or later years (up to 2029 inclusive). Had the 50% limit not existed, she could have absorbed the full 40,000 PLN and paid only 19% on 20,000 PLN — that is 3,800 PLN. The difference between these two scenarios is 3,800 PLN.
The strategy is straightforward: if you carry a large loss, you optimise the current year's gain around twice the remaining loss balance. Marta, with 20,000 PLN of loss still to use, should aim in 2026 for at least 40,000 PLN of gains to absorb the full permissible 20,000 PLN. Above that — the saving potential is wasted. Experience shows that staying within the 50% limit over several consecutive years is the best way to absorb losses from weaker periods efficiently. I cover the details in the article on filing a forex loss.
The April 30 deadline — what actually happens that day
The April 30, 2025 deadline means PIT-38 must be sent — not received, not registered, not accepted. Sent. If you file online through Twój e-PIT or e-Deklaracje, the date and time recorded in the ministry's system are decisive. In practice the server is available around the clock until 23:59 on April 30. If you file on paper (rare) — the postmark date governs.
What if April 30 falls on a non-working day? Here is the catch many people miss. A tax deadline does not automatically shift to the first working day following a non-working day if April 30 itself is a statutory holiday. Check the calendar — in 2025 April 30 is a Wednesday, so there is no issue. But in 2022 April 30 fell on a Saturday and the deadline was formally extended to Monday May 2. The rule derives from article 12 paragraph 5 of the Tax Ordinance Act and applies only when the deadline falls on a Saturday, Sunday or statutory holiday.
If you miss April 30, you do not disappear underground. The Polish system recognises the institution of czynny żal — a written notice of failure to comply with a duty, accompanied by a short explanation (illness, travel, unfamiliarity with the rules). The czynny żal must be filed before the revenue service finds out through its own channels. If the office summons you for explanations before you file the czynny żal, the institution stops working and sanctions apply. A successful czynny żal removes the fine (which can reach 720 daily rates — in 2024 one daily rate is 116.67 PLN, so the maximum fine exceeds 84,000 PLN), but statutory interest on unpaid tax — around 14.5% annualised in 2024 — still accrues for every day of delay.
Twój e-PIT — the simplest online route
The Twój e-PIT service on podatki.gov.pl is the ministry's invention that changed the game for most Polish taxpayers. Since 2019 PIT-37 and PIT-38 forms have been automatically pre-filled based on data submitted by payers and brokers. Your role reduces to logging in, verifying the amounts, optionally adding deductible costs, and pressing "Accept".
Login happens via one of three routes: Profil Zaufany (Trusted Profile — the most common, set up once at a tax office or via your bank), e-Dowód (if you have an ID card with an electronic chip), or online banking (most Polish commercial banks integrate with gov.pl login). The mObywatel app also works if you have a Profil Zaufany activated there.
After logging in you select PIT-38 for the 2024 tax year. The system displays a pre-populated form with PIT-8C data (if you have a Polish broker). If you have only foreign brokers, the form is blank and you enter data manually. The section for foreign income sits in fields 32-37 of PIT-38 — you enter the summed values converted to zloty. If in doubt, every screen carries a ministry tooltip explaining the meaning of each numbered field.
After submission you receive Urzędowe Potwierdzenie Odbioru (UPO) — a document with an individual number and a time stamp. Save it locally and in the cloud. UPO is your only proof that you filed PIT-38 on time. If a dispute over timeliness emerges later, UPO resolves it instantly. Keep the form itself with attachments for five years from the end of the year in which the tax payment deadline passed — that is the standard limitation period.
Common mistakes that cost unnecessary money
After several years working with traders, I see recurring mistakes that cost anywhere from a few hundred to a few thousand zloty each. The most common: ignoring a loss-making year. Traders conclude that since there is no gain there is nothing to file — but a loss not declared on PIT-38 in the year it occurred is gone permanently. The second mistake: converting trades at an annual or monthly average rate rather than at the rate from the business day preceding the close. This breaches the act and during an audit triggers a five-year retroactive correction with interest.
The third mistake is omitting a foreign broker "because there is no PIT-8C". The absence of PIT-8C does not release you from the duty to file — the revenue service learns about your accounts through CRS (Common Reporting Standard), the international automatic exchange of tax information that covers Cyprus, Ireland, the United Kingdom, the Netherlands and most EU member states. IC Markets registered in Cyprus reports your balance to the Polish revenue service automatically once a year. Failing to report such an account is pure Russian roulette. The exact scope of CRS and FATCA, and the question of whether a foreign broker will report your account to the tax authority, is covered in a dedicated article.
The fourth mistake: missing the ORD-U attachment or PIT/ZG, when required. If at any point during the year your foreign account balance exceeded 10,000 euro, you also file an ORD-U return. This is a separate form from PIT-38, filed with the tax office by the end of the third month following the tax year (that is, by the end of March). Missing ORD-U triggers a fine independent of the correctness of the underlying income filing. The fifth mistake is failing to file a correction after spotting an error — the situation where a trader hopes "it will somehow blow over". A PIT-38 correction is free, easy, with no time limit (up to the five-year limitation), and does not draw the tax authority's attention when you submit it voluntarily. Waiting for the office to discover the mistake is the worst scenario.
"A tax return is not an exam you can fail — it is a procedure where it is enough to collect data as you go. A 2,850 PLN loss from failing to file PIT-38 in a loss year is a donation to the budget that nobody asked you to make." — Krajowa Informacja Skarbowa (Polish National Tax Information service), Practical Guide for Capital-Income Taxpayers, 2024.
What to do tomorrow
- Create a "Forex 2025" folder on your drive. Build the structure: /broker-polish/, /broker-foreign-1/, /broker-foreign-2/, /invoices-costs/, /nbp-rates/, /pit-archive/. Each folder has a purpose, and you do not stash documents in your inbox. Return to it monthly, not once in April. A single habit decides whether April 30 is just another working day or a panic night over the spreadsheet.
- Download the NBP A rate table for the current year. Go to nbp.pl/kursy, fetch the CSV of average A rates for 2025 (or 2024 if filing the prior year), and save it to /nbp-rates/. In Excel build a VLOOKUP that, given a trade close date, returns the rate from the preceding business day. Without this table every foreign trade requires a manual rate lookup — with it, reconciling one hundred trades takes an hour instead of a day.
- Check whether your foreign broker issues an annual report. Log into each non-Polish broker portal and find the Reports / Statements / Tax section. IC Markets has an "Annual Statement", Pepperstone a "Year-End Statement", Interactive Brokers an "Activity Statement" generated on demand. If a broker has no such section, email support requesting an annual summary by mid-February. Lack of documentation is not a defence during an audit — you are obliged to demonstrate gain or loss.
- Save the UPO from last year\'s PIT-38 submission. If you have filed PIT-38 in previous years, find the Urzędowe Potwierdzenie Odbioru (Official Acknowledgement) in Twój e-PIT archive or in your inbox, and save it to /pit-archive/. The UPO is the proof of submission and the start point of the limitation period for the tax liability. Without UPO, in case of audit you have no argument that the return was actually filed.
- Declare losses for the current year even if you close it in the red. Only a loss declared on PIT-38 in the year it occurred can be offset against gains over the next five years (maximum 50 percent of the annual loss in any single year). Skipping this in a loss year is a direct 19 percent tax donation to the budget when you earn money next year. Thirty minutes spent on a "zero" return saves thousands when later profits arrive.
Sources & bibliography
-
Ministerstwo Finansów PIT-38 — instrukcja i formularz, rok podatkowy 2024 · Oficjalna instrukcja Ministerstwa Finansów; formularz w wersji aktualnej dla zeznania składanego do 30 kwietnia 2025. www.podatki.gov.pl ↗
-
Ministerstwo Finansów Twój e-PIT — usługa online dla podatników · Usługa auto-uzupełniania PIT-38 danymi z PIT-8C; logowanie przez profil zaufany lub e-dowód. www.podatki.gov.pl ↗
-
Narodowy Bank Polski Tabele kursów średnich walut obcych A · Dzienne kursy referencyjne NBP używane do konwersji transakcji walutowych na PLN przy rozliczeniu PIT-38. www.nbp.pl ↗
-
Internetowy System Aktów Prawnych — Sejm RP Ustawa o podatku dochodowym od osób fizycznych, art. 30b · Artykuł 30b definiujący opodatkowanie dochodów z odpłatnego zbycia papierów wartościowych i instrumentów pochodnych liniową stawką 19 procent (podatek Belki). isap.sejm.gov.pl ↗
-
Krajowa Informacja Skarbowa KIS — infolinia podatkowa (telefon +48 22 330 03 30) · Oficjalna infolinia Krajowej Administracji Skarbowej; źródło indywidualnych interpretacji w sprawach podatkowych. www.gov.pl ↗
Frequently asked
What if my foreign broker provides no annual statement?
Every regulated broker provides at least transaction history in the client portal — usually as CSV or PDF export for a chosen period. IC Markets offers an "Annual Statement" report in the Reports section, Pepperstone issues a "Year-End Statement" in late January, Interactive Brokers generates an "Activity Statement" on demand. If the broker really provides nothing, you have two options: rebuild the transactions from the platform (MT4/MT5 → account history → export to HTML or CSV) or email broker support requesting an annual summary. The second route is worth taking by mid-February to stay within the April 30 window. Lack of documentation is not a defence during an audit — you are obliged to demonstrate your gain or loss, and the revenue service assumes that if you traded, you have the data.
Do I have to file PIT-38 if I ended the year at a loss?
Yes, for two reasons. First, the formal duty — anyone who has had any capital income files PIT-38 regardless of the net result. Failing to file, even when losses zero out the gain, breaches the regulations. The second reason is practical and far more important: only a loss declared on PIT-38 in the year it occurred can be offset against gains in the following five years. If you closed 2024 with a 30,000 PLN loss and did not declare it, then earned 100,000 PLN in 2025, you will pay 19% on the full amount rather than on 85,000 PLN (after deducting the maximum 50% of the loss, that is 15,000 PLN). That is a direct loss of 2,850 PLN in tax purely from omission.
Which exchange rate should I use to convert USD or EUR trades into zloty?
Polish PIT mandates a specific rate: the average exchange rate of the National Bank of Poland (table A) from the last business day preceding the day income was realised. For forex, the "day income was realised" is the day the position was closed — the moment when gain or loss becomes realised. Example: you close a position on Thursday, September 5, 2024 with a 500 USD profit. You apply the NBP average rate A from Wednesday, September 4 (or the preceding business day if Wednesday was a holiday). Each trade is converted individually — no monthly or annual average is permitted. This becomes labour-intensive at one hundred or more trades — the cleanest solution is an Excel spreadsheet with a map of rates downloaded from nbp.pl, joined via VLOOKUP or INDEX/MATCH to the closing date.
What if I miss April 30 or find an error after submitting?
The system provides for both situations. If you have missed the deadline, you file a so-called czynny żal — a written notice of late compliance with a short explanation of the reason (illness, travel, unfamiliarity with the rules). The czynny żal must be filed before the tax office finds out and summons you for explanations. A successful czynny żal removes the fine, although statutory interest on the tax for each day of delay still applies. The second case — an error spotted after submission — is handled by filing a PIT-38 correction. Log in to podatki.gov.pl, open the submitted form, click "Correction", fix the values, and resubmit. There is no deadline for filing a correction — it can be submitted until the five-year limitation period on the tax liability expires. If the correction increases the tax, you pay the difference with interest; if it decreases the tax, you receive a refund.