Skip to content
Polish Zloty · PLN

Polish zloty (PLN) exchange rate API

Polish zloty rates against 190+ currencies – live, historical since 1999 and averaged. Set base_currency=PLN for rates per 1 zloty, or base_currency=EUR for the EUR/PLN quote your finance team uses.

CodePLN
Symbolzł
Decimals2
HistorySince 1999
GET /v1/latest · base PLN
curl -G "https://api.fxapi.com/v1/latest" \
  -d base_currency=PLN \
  -d currencies=EUR,USD,CHF,GBP \
  -H "apikey: $FXAPI_KEY"
# PLN on a past date
curl -G "https://api.fxapi.com/v1/historical" \
  -d date=2000-04-12 -d base_currency=PLN \
  -d currencies=EUR \
  -H "apikey: $FXAPI_KEY"
ISO 4217 codePLN
Symbolzł
Minor unit2 decimals
IssuerNarodowy Bank Polski

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=PLN the value is euros per zloty; divide (as above) or request base_currency=EUR to 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:

PairLatest rate request
PLN/EUR/v1/latest?base_currency=PLN&currencies=EUR
PLN/USD/v1/latest?base_currency=PLN&currencies=USD
PLN/CHF/v1/latest?base_currency=PLN&currencies=CHF
PLN/GBP/v1/latest?base_currency=PLN&currencies=GBP
PLN/CZK/v1/latest?base_currency=PLN&currencies=CZK
PLN/HUF/v1/latest?base_currency=PLN&currencies=HUF
PLN/SEK/v1/latest?base_currency=PLN&currencies=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?
Call /v1/latest?base_currency=EUR&currencies=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)?
No. fxapi returns market mid rates. Polish tax and accounting rules often refer to the average rate published by Narodowy Bank Polski, so check with your accountant which rate a given document requires.
Does fxapi have zloty rates before 1999?
No. Daily data starts on 1999-01-01. The current code PLN dates from the 1995 redenomination, so it covers the whole history.
How do I get the rate from the day before an invoice date?
Subtract one day from the invoice date and call /v1/historical?date=YYYY-MM-DD. The historical endpoint is available on every plan, including Free.
Free plan · no credit card

Get your free exchange rate API key

300 requests a month, latest and historical rates, fluctuation and averages – free forever. Upgrade when you need faster updates or more requests.