☀️☀️☀️ 20% off with SUMMER26 ☀️☀️☀️

Polish tax reporting

Capitally produces the figures for a Polish return; it does not generate the PIT document itself. Two built-in presets cover a taxable brokerage account — Konto Inwestycyjne (PIT-38, D+1) and Konto Inwestycyjne (PIT-38, D-1). Either one converts every taxable event at NBP rates, applies the 19% rate, and groups realized gains by country so you can fill PIT/ZG; you copy the totals into the form or your e-filing software yourself.

This article covers what is specific to Poland. For how presets work in general, see Tax Presets; for the report layout and how tax groups are displayed, see Taxes Due Report.

There is a Polish-language walkthrough of the whole process on our YouTube channel — Jak rozliczać podatek z giełdy (PIT-38) z pomocą Capitally.

Setting up the Polish tax preset

Go to Settings → Taxes, find Konto Inwestycyjne (PIT-38, D+1) under Built-in presets, and assign it to every account whose results belong on the form. The preset ships with the rate, the cost basis method, the tax groups and the PLN.CB currency already configured — assigning it to accounts is the only step you have to take.

  1. Open Settings → Taxes. The built-in Polish presets are Konto Inwestycyjne (PIT-38, D+1), Konto Inwestycyjne (PIT-38, D-1), Konto Emerytalne (IKE, IKZE, PPK, OIPE) and Wynajem (ryczałt PIT-28). Pick one of the two PIT-38 presets — the difference between them is which day's NBP rate they use.
  2. Assign it to accounts. Each preset row has an on selector listing the accounts it applies to; pick the accounts that hold taxable investments there. The same assignment is also available as the Tax Preset field when you edit an account.
  3. Give IKE, IKZE, PPK and OIPE accounts the Konto Emerytalne preset. It applies a 0% rate while still collecting revenue and expense, so those accounts appear in the report with nothing due instead of dropping out of it.
  4. Open Reports → Taxes Due and check the year you are filing for.

Which exchange rate the report uses

The Taxes Due report always converts using the currency set on the tax preset. For both Polish PIT-38 presets that is PLN.CB — the official NBP rate — taken from the business day before the event. The amount comes from your transaction; only the rate comes from the NBP table.

There are two Polish currency options, and mixing them up is the most common source of "the numbers do not match NBP":

  • PLN — the forex market closing rate from our data provider, updated around 23:59 UTC. This is the default for viewing, not for filing.
  • PLN.CB, shown as Polish Zloty (NBP) — the official closing rate published by Narodowy Bank Polski, pulled directly from NBP. This is what both PIT-38 presets use.

The preset's currency wins in the Taxes Due report: changing the currency of the view does not change what that report calculates. Elsewhere — in Portfolio and in the Taxable Income Report — the currency is yours to pick, so select PLN.CB there if you want those views to line up with the tax figures.

Matching other Polish calculators: D+1 and D-1

If podatekgieldowy.pl or kalkulatorgieldowy.pl gives you a different number, the usual cause is naming rather than arithmetic. What those tools call D-1 is what Capitally calls D+1: the NBP rate from the business day before settlement. Capitally's D-1 takes the rate from the business day before the trade date.

The two names appear only in the preset names. What actually differs is the preset's currency date offset, which you can read on the preset row in Settings → Taxes:

  • Konto Inwestycyjne (PIT-38, D+1) — offset T+Settled-1. The tax is settled on the date ownership transfers (T+1 on US exchanges, T+2 on other markets), and the rate is taken from the business day before that. Seen from the trade date that lands about one business day after it, which is where the name comes from.
  • Konto Inwestycyjne (PIT-38, D-1) — offset T-1. The rate comes from the business day before the trade date, and settlement plays no part.
  • Other Polish calculators' "D-1" — settlement-based, rate from the day before settlement. That is the same convention as Capitally's D+1.

The offset is a single preset-wide setting, so it applies to dividends too. A dividend has no settlement gap — its settled date is the day it was credited — so under the D+1 preset a dividend is converted at the rate from the business day before the credit date. That alone can produce small differences against a tool that applies one fixed offset to everything.

Both interpretations are used in practice. The settlement-based one — Capitally's D+1 — is generally regarded as closer to the letter of the Polish rules; this comparison of the two methods sets out the reasoning. Which one you file with is a decision for you and your accountant.

Checking which rates were applied

Enable the Opening FX and FX Rate columns in the Taxes Due report. Opening FX is the rate applied to the opening transaction; FX Rate is the rate applied to the closing transaction, the dividend, or the market value. Add the Opening Transaction column and each row shows both legs with the rate used for each. The Show FX rates in Polish Zloty (NBP) toggle above the table flips the direction the rate is quoted in, so it reads the same way round as the NBP table.

When a figure does not match another tool or another tab, work through this in order:

  1. Confirm the Polish preset is actually assigned to the account the transaction sits in.
  2. Confirm you are reading the Taxes Due report, not the Taxable Income report — the latter converts at the currency and offset you selected in the view, in calendar days.
  3. Check the preset's currency and offset, both shown under its name on the Settings → Taxes list: it should read PLN.CB with T+Settled-1 (the D+1 preset) or T-1 (the D-1 preset).
  4. Compare Opening FX and FX Rate against the NBP table for those exact dates. If Capitally's rate is close but not identical, you are probably comparing against PLN, not PLN.CB.
  5. Compare methods before comparing totals — the D+1 versus D-1 naming above accounts for most differences against Polish calculators, and a different cost basis method accounts for most of the rest.
  6. What is left is normally FX source and timing. Different providers take rates at different moments of the day, which moves converted amounts by small amounts in both directions.

A negative value in the Tax Due column is not an error: the rate is applied to the result even when the result is a loss, so a negative figure is the loss for the period, with no payment to make.

Grouping sales by country for PIT/ZG

The Taxes Due report groups capital gains by whichever country property the preset's $group variable appends. Since March 2026 the built-in Polish presets group foreign capital gains — stocks, ETFs and options — by Market Country, the country of the exchange the trade happened on. They used to use Account Country, so a copy you made of the preset before then may still be grouping by the broker's country. Rather than take that from here, read the preset: opening it in Settings → Taxes shows its own documentation on the Details tab, and the Program tab shows the property the Set statement actually appends.

Gains at a Polish broker are grouped separately, under Dochody kapitałowe (PIT-38)/Dochody z giełdy w Polsce (PIT-8C), and should match the PIT-8C your broker sends you. Foreign gains land under Dochody kapitałowe (PIT-38)/Zagraniczna sprzedaż akcji/ plus the country — those are the per-country totals PIT/ZG asks for.

To change which country property is used, work on a copy of the preset:

  1. Go to Settings → Taxes and open the Polish PIT-38 preset you use.
  2. In the else block — the one that handles non-Polish accounts — find the Set statement that appends to the $group variable.
  3. In the property picker, choose Account Country (name), Market Country (name) or Asset Country (name).
  4. Save. Because the original is built in, the button reads Clone and Save and your edit is stored as a separate preset; accept the offer to move the accounts across.

The three properties answer three different questions: Account Country is where the broker or account is, Market Country is where the trade was executed, Asset Country is where the asset is domiciled. Which one belongs on PIT/ZG is a reading of the rules, so settle it with your accountant before changing the preset.

Dividends are grouped separately from sales and continue to use the asset's domicile — Dochody kapitałowe (PIT-38)/Zagraniczne dywidendy/ plus the company's country of origin or the ETF's country of registration. The full list of properties you can group by is in the Tax Preset Reference, and the mechanics of the Set statement are in Programmable Presets.

Reporting on part of a year

Tax reports are annual — Taxes Due is organized by country and year. To narrow one, change the date period above the report and it will only include events that fall inside it. 1fq selects the last full quarter, which is what you want for a quarterly settlement such as the rental ryczałt covered by the built-in Wynajem (ryczałt PIT-28) preset, and a typed range such as 2025-01 : 2025-03 pins an exact window.

This filters which taxable events are listed; it does not turn the annual report into a different form. For a full-year PIT-38 you want the whole tax year selected.

Exporting for your accountant

Export the report table as CSV or Excel, or copy it to the clipboard, from the export menu above the table. The export mirrors the screen — same columns, same order, same rows — so switch on Opening FX, FX Rate and the notes columns before exporting. See Exporting Data for the formats.

Two things are worth writing down while you still remember them: the preset's own note — its account of what it covers and where it stops — is shown in the Taxes Due report under Tax Presets applied, behind Learn more, and Add Note statements attach notes to individual tax events. The same note sits on the preset's Details tab in Settings → Taxes, and for the built-in Polish presets you can read it in the demo project without an account. Record which convention you filed under — D+1 or D-1 — and which country property you grouped by. Next April that is exactly what you will want to know.

Limits to know about

Three constraints matter when you file from Capitally: it produces figures rather than the PIT form, NBP rates only exist from 2 January 2002 onwards, and exchange rates cannot be edited by hand. None of them blocks a normal PIT-38, but the 2002 boundary can stop a calculation dead.