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"Brokers where this comes up
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.