In this article
After this article, you can
- Distinguish an export copy from a separate operation on another account.
- Sum records without losing entries or counting them twice.
Terms at hand: CFD (contract for difference) · PIT-38 (Poland) · Tax residency · Position notional (notional value) · Commission · Position size (lot quantity)
Preparing a Polish return from foreign-currency transactions starts with the records. Identify each product, revenue and cost recognition date, currency and supporting report before summing amounts. The worked examples below show how to reconcile those entries.
Step 1: check whether you will receive a PIT-8C
PIT-8C is a Polish information return concerning specified income. Check whether your actual contracting entity supplies it and what the relevant part covers. Neither a brand name nor a report labelled tax statement establishes that it is PIT-8C. Keep other supporting records and reconcile every relevant account.
Confirm whether the specific broker entity provides PIT-8C. If it does not, that alone gives no exemption; prepare the required records yourself. Receiving a statement also does not guarantee a complete return. Check all accounts and any information missing from Twój e-PIT.
A transaction ID need not be globally unique
Two accounts can use the same record number. Two exports from one account may also contain the same operation. Resolve this before summing amounts.
Scroll sideways to see the full diagram
Fictional records of a Polish resident for 2025, with private instruments within Article 30b(1). PLN amounts are already correctly classified as revenues; this small extract has no costs or other records. IDs are unique only within each account, and export II contains an identical A / TX7 copy. MF — PIT-38 brochure for 2025 confirms that Part C includes revenues and costs from PIT-8C and other documents. Our record key is a checking method, not an MF-mandated format.
Keeping every row gives PLN 1,300, counting PLN 500 twice. Removing duplicates solely by TX7 could instead lose B’s distinct PLN 300. The correct extract total is PLN 800. For real exports, check identifier definitions and document scope; similar dates or equal amounts do not prove duplication.
Step 2: pull the transaction history from the foreign account
Obtain the full reporting-year statements, settlement history and any corrections. Record operation IDs, instrument, currency amounts, settlement dates, separately charged fees and financing. Opening and closing dates or lot size alone do not establish all tax events. Identify repeated exports before combining accounts; do not count the annual summary and the same operations again.
Step 3: convert the amounts into zloty at the correct rate
Article 11a requires a separate conversion for revenue and cost. Identify the governing tax event before selecting its preceding-working-day average NBP rate; it need not be the opening or closing date printed by the platform. Check the instrument’s settlement terms and any separately settled flows.
Convert costs using the average NBP rate from the last business day preceding the date the cost was incurred, as required by Article 11a. That date need not be the position’s closing date. Table A contains commonly used currencies, while Table B also publishes average rates for other currencies; neither is a bank’s bid or ask quote.
- Download the relevant archived average NBP tables for the currencies in your records. Tables A and B are average-rate tables; Table C contains buying and selling rates.
- Add a column to your own sheet holding the date that governs the rate — the last business day before the date of the revenue or the cost.
- Convert each revenue and cost separately, then total their PLN columns. A monthly average or one rate applied to annual net profit does not reproduce Article 11a.
- Check a handful of rows by hand, especially around public holidays and long weekends — that is where the wrong date creeps in.
Step 4: establish revenue, costs, and income
For qualifying private Article 30b(1) instrument income, report revenue and eligible costs separately. A deposit of your own money, withdrawal or margin block is not itself a CFD settlement. Nor is CFD notional a securities purchase price. Identify realized settlements and separately charged flows before classifying them; an open position may already have settled financing or other amounts.
Examine documented costs under the applicable rules, including Articles 22 and 23. Do not deduct spread or commission twice if already embedded in prices or reported amounts. A computer, subscription or course is not automatically eligible, but a categorical rejection without examining the legal connection is also misleading. See what really counts as a deductible cost in forex and whether forex attracts transaction tax (PCC) or anything beyond PIT-38.
A conversion worksheet with separate columns
Assume correctly classified private CFD settlements: revenue USD 100 at an illustrative PLN 4.00/USD, a separate USD 40 cost at PLN 4.10/USD, and an eligible USD 2 commission not already included, at PLN 4.05/USD. Revenue is PLN 400; costs are PLN 164 + PLN 8.10 = PLN 172.10; income before deductions is PLN 227.90. The net USD 58 cannot be converted at one arbitrary rate to reproduce these entries.
In a second hypothetical case, USD 1,000 revenue at PLN 4.20/USD and an eligible USD 1,000 cost at PLN 4.00/USD leave zero in USD but PLN 200 income. Reversing those rates yields a PLN 200 loss. The rates are illustrative, fees are omitted and the events are already correctly recognized. The PLN difference is a valuation result, not another broker payment.
Step 5: complete the Polish return and any required annex
PIT-38 covers specified capital income, including qualifying derivative instruments. Its Part C combines relevant revenues and costs from PIT-8C and other documents; it does not provide a separate general CFD subsection distinct from securities disposal. Confirm the current form and source classification before entering amounts.
PIT/ZG applies when the relevant foreign-source income and the form’s instructions require it. A foreign broker’s address alone does not establish the source country or automatically require the annex. Virtual-currency results are separately reported and cannot simply offset the qualifying derivative result.
Step 6: use up losses from earlier years
For eligible Article 30b(1) losses, examine the following five tax years and the amount already used. Article 9(3) permits the annual 50% route or the one-off route up to PLN 5 million, with the remaining amount subject to the stated limits and period. Do not net private CFD losses against salary, separately taxed dividends or interest, or virtual-currency income. The mechanics are covered in how to settle a forex loss on PIT-38.
Step 7: file by 30 April
The general filing and payment deadline is 30 April of the following year, subject to the applicable non-working-day rule. For the 2025 return it was 30 April 2026. Reconcile all records with Twój e-PIT rather than assuming its proposed return is complete. Automatic acceptance of an available PIT-38 is not a substitute for adding relevant missing income or costs. MF describes a special payment-notice procedure for automatically accepted returns.
Keep UPO, the calculation sheet, statements and conversion records through the applicable retention period. If the deadline has passed, first establish whether a return already exists; a correction and a first late filing are different procedures. Check payment arrears, interest and the appropriate remedial steps for your circumstances. Also examine DSF-1 if the qualifying combined income exceeds PLN 1 million; PIT-38 alone does not discharge that separate obligation.
Plan the filing workload
A reusable worksheet can preserve the conversion method and checks. Each new filing still requires the correct tax-year form, actual data and reconciliation of any changes; no fixed reduction in preparation time is established here.
What to do tomorrow
- Export the transaction history for the last full year. Open your broker's panel, select the transaction report for the period from 1 January to 31 December, and save it as CSV. Do it now rather than in April — access to archived data is often restricted after an account is closed or a platform is changed.
- Download the applicable NBP average-rate archive. Record each tax date, preceding working day, table date and number. Check public holidays and the publication schedule for the currency; a spreadsheet formula still needs validation.
- Separate commissions from the result on positions. Keep two independent columns — revenue and transaction costs — instead of one net figure. PIT-38 needs both numbers separately, and pulling them apart again in April costs hours of wasted work.
- Check whether you are carrying an unused loss from earlier years. Open your returns from the last five years and write down the capital-source losses and how much of each you have already deducted. If you have income this year, that is where the simplest lawful reduction of your tax bill is sitting.
Check your understanding
One short exercise
About 2 min · you can try again
Records are A / TX7 = PLN 500, B / TX7 = PLN 300 and an identical A / TX7 copy = PLN 500. IDs are account-specific. What is distinct revenue?
- PLN 1,300
- PLN 500
- PLN 800
Check the answer and explanation
PLN 800
A / TX7 and B / TX7 are different keys. Remove only A’s identical copy, leaving 500 + 300.
Frequently asked
What should I do if the broker supplies no Polish PIT-8C?
Confirm the actual contracting entity and obtain complete records. A missing PIT-8C gives no exemption, while receiving one does not prove that all required entries are present. Classification and the Polish return depend on the actual transactions.
Is a foreign broker enough to require Polish PIT/ZG?
No. Establish the source and income category, then apply the annex instructions and any relevant treaty. Broker location alone does not decide this. PIT/ZG is a Polish form, not a worldwide requirement for foreign accounts.
Which dates and rates belong in a Polish conversion worksheet?
Identify the recognition date for each revenue and cost separately, then use the applicable preceding-working-day average NBP rate. Do not assume every cost has the position’s closing date or use one annual exchange rate. Other countries have their own reporting-currency rules.
Can a pre-filled Polish return omit relevant transactions?
Yes. Reconcile all relevant accounts and documents rather than treating the pre-filled return as complete. Use the official form, instructions and filing/payment dates for the actual tax year. Those Polish dates do not apply to every international reader.
Sources & bibliography
-
Poland’s Ministry of Finance Printable Polish PIT forms, including PIT-38 · Official Polish personal-income-tax forms and instructions. www.podatki.gov.pl ↗
-
NBP Foreign exchange rates — NBP Table A · The National Bank of Poland’s published average foreign exchange rates. www.nbp.pl ↗
-
Poland’s Ministry of Finance Twój e-PIT — Poland’s online PIT service · Poland’s online service for personal income-tax returns. www.podatki.gov.pl ↗
-
Poland’s Ministry of Finance PIT-38 information brochure for the 2025 tax year · Poland, 2025 return: separate revenue and costs, event-based conversion, available pre-filled returns, loss relief, rounding and the conditions for a country-specific PIT/ZG annex. www.podatki.gov.pl ↗
-
Polish legislature — official Journal of Laws Personal Income Tax Act — Articles 9, 11a, 22, 23, 30b, 30h and 45 · Poland: statutory income categories, separate foreign-currency conversion dates, conditional costs and loss relief, filing and the separate solidarity levy; not a determination for every currency transaction. eli.gov.pl ↗
-
National Bank of Poland Foreign exchange rates — tables and archives · NBP lists average-rate Tables A and B, buying/selling Table C and their archives. The article’s numbers are hypothetical rates, not retrieved market observations. nbp.pl ↗
