Poland is the largest economy in Central and Eastern Europe that has kept its own currency, and the zloty is one of the region’s most traded currencies. Polish e-commerce sellers, software houses billing foreign clients and companies with euro-denominated costs all depend on EUR/PLN, followed by USD/PLN and – for historical reasons – CHF/PLN. The fxapi PLN exchange rate API returns those rates live and back to 1999.
PLN facts for developers
- Where it’s used: Poland.
- Symbol and formatting:
złafter the amount, a space as thousands separator and a comma as decimal separator:1 234,56 zł. - Minor unit: 2 decimals (grosze).
- Central bank: Narodowy Bank Polski (NBP), the National Bank of Poland. NBP publishes its own daily average rates, which many Polish tax rules reference.
- Regime: free float since 12 April 2000 – the sample date on this page – when Poland abandoned its crawling band. Poland joined the EU in 2004 but has not adopted the euro and is not in ERM II.
- Events in the historical data: the zloty weakened sharply in late 2008 and early 2009. When the Swiss National Bank dropped its franc floor in January 2015, CHF/PLN jumped – a painful moment for the many Polish households with Swiss-franc mortgages.
Get PLN rates with the fxapi API
Polish invoicing commonly uses the rate from the business day before the invoice or tax-point date. This JavaScript snippet (Node 18+) fetches the previous day’s rates with /v1/historical (all plans) and formats the result for a Polish invoice:
const pln = new Intl.NumberFormat("pl-PL", { style: "currency", currency: "PLN" });
function previousDay(isoDate) {
const d = new Date(`${isoDate}T00:00:00Z`);
d.setUTCDate(d.getUTCDate() - 1);
return d.toISOString().slice(0, 10);
}
async function ratesForInvoice(invoiceDate, currencies = ["EUR", "USD"]) {
const qs = new URLSearchParams({
date: previousDay(invoiceDate),
base_currency: "PLN",
currencies: currencies.join(","),
});
const res = await fetch(`https://api.fxapi.com/v1/historical?${qs}`, {
headers: { apikey: process.env.FXAPI_KEY },
});
if (!res.ok) throw new Error(`fxapi ${res.status}`);
return (await res.json()).data;
}
const rates = await ratesForInvoice("2026-09-15");
const amountEur = 2400;
console.log(pln.format(amountEur / rates.EUR.value)); // EUR amount in PLN
Weekends and holidays need a business-day calendar on top – adapt previousDay to your rules. See SaaS billing and invoicing, the historical exchange rates API and the JavaScript guide. Neighboring currencies: Czech koruna and Hungarian forint.
Things to watch
- Official vs market rate. For Polish VAT and CIT documents the required rate is usually NBP’s – use fxapi for pricing, analytics and non-statutory reporting.
- Base direction. With
base_currency=PLNthe value is euros per zloty; divide (as above) or requestbase_currency=EURto get zlotys per euro. - Rounding. Round to grosze only at the end – see currency rounding and precision.
Popular PLN pairs
Request any of these pairs – or any other combination of the 190+ supported currencies – with base_currency=PLN:
| Pair | Latest rate request |
|---|---|
| PLN/EUR | /v1/latest?base_currency=PLN¤cies=EUR |
| PLN/USD | /v1/latest?base_currency=PLN¤cies=USD |
| PLN/CHF | /v1/latest?base_currency=PLN¤cies=CHF |
| PLN/GBP | /v1/latest?base_currency=PLN¤cies=GBP |
| PLN/CZK | /v1/latest?base_currency=PLN¤cies=CZK |
| PLN/HUF | /v1/latest?base_currency=PLN¤cies=HUF |
| PLN/SEK | /v1/latest?base_currency=PLN¤cies=SEK |
Monthly averages and fluctuation for PLN
# Monthly average PLN rates for 2025 (IAS 21 / ASC 830)
curl -G "https://api.fxapi.com/v1/average" \
-d date_from=2025-01-01 -d date_to=2025-12-31 -d period=month \
-d base_currency=PLN -d currencies=EUR,USD,CHF \
-H "apikey: $FXAPI_KEY"
# How did PLN move over the last year?
curl -G "https://api.fxapi.com/v1/fluctuation" \
-d date_from=2025-10-01 -d date_to=2026-10-01 \
-d base_currency=PLN -d currencies=EUR,USD,CHF \
-H "apikey: $FXAPI_KEY"See the historical exchange rates API, average rates API and documentation for every parameter.
PLN is one of 190+ currencies in fxapi, the foreign exchange rates API for developers – live rates, daily history since 1999 and monthly averages with one API key.
Frequently asked questions
How do I get the EUR to PLN exchange rate via API?
/v1/latest?base_currency=EUR¤cies=PLN with your key in the apikey header. The value is zlotys per 1 euro.Are fxapi rates the same as the NBP average rates (Table A)?
Does fxapi have zloty rates before 1999?
How do I get the rate from the day before an invoice date?
/v1/historical?date=YYYY-MM-DD. The historical endpoint is available on every plan, including Free.