The NBP rate

The rate for PIT-38: not the trade date, but the day before income arises

Every foreign-currency amount is converted at one specific rate. Being two business days out changes the tax — and around New Year it changes which tax year the trade falls in.

What the statute says

The NBP mid rate from the preceding day
Art. 11a ust. 1 ustawy o PIT: income is converted at the rate of the last business day PRECEDING the day income arises.
Costs the same way, on their own day
Art. 11a ust. 2 — the business day before the cost is incurred. Buy and sell therefore carry different rates even for the same share.
For a sale, the day of income is settlement
Ownership passes with the book entry on the account, not at the moment of the trade. By default that is two business days after the session.

How we compute it

We use the settlement date where the broker gives it
Freedom24 and EXANTE state it outright. Where it is missing we report the gap rather than guess the day — a guessed date is a guessed rate.
Rates from a store, not one request per trade
NBP tables are the same for everyone, so we fetch them once. A thousand trades does not mean a thousand requests to NBP.
A missing rate is a refusal, not an approximation
If even one row has no rate, we compute nothing. Art. 11a does not admit an “approximately right” rate, and a silently skipped row is understated income.

Where people get it wrong

The trade-date rate
The commonest mistake and the most innocent-looking. With a moving rate the difference across a few hundred trades becomes real, and a late-December sale moves the whole proceeds into another tax year.
The broker’s rate instead of NBP’s
Statements often carry their own złoty conversion at the broker’s rate at trade time. It has no place in the return: the statute names the NBP rate and only that.
One rate for both buy and sell
Converting the whole gain at the sale-date rate ignores that the cost arose earlier and at a different rate. The currency movement between those days is part of the income.
Weekends and holidays
NBP publishes no table on non-working days. “The preceding day” is the last BUSINESS day, not yesterday’s calendar date.

Run this once

claude mcp add --transport http taxroam https://taxroam.com/mcp --header "Authorization: Bearer $TAXROAM_KEY"

Tax · Poland · Brokers · Pricing

Brokers where this comes up

All broker guides

Questions about the rate

I sold on 30 December. Which tax year is it?

The settlement day decides. With the standard two business days the income falls in January — that is, the following year.

My broker already converted everything to złoty. Can I use that?

Not for the return. That is the broker’s rate on a different day; the statute names the NBP mid rate from the day before income arises.

What about crypto?

NBP publishes no rates for it. The złoty value must come from the exchange statement — we do not invent one.