ECB Exchange Rates

App · Accounting & Finance · 7 actions

Official euro foreign exchange reference rates, straight from the European Central Bank - the rates tax authorities, auditors and contracts cite. Convert an amount between any two of the currencies the ECB tracks, look up a rate for today or for the day an invoice was raised, pull the whole daily table, chart a rate over time, and read the ECB's own monthly, quarterly and yearly averages for month-end bookkeeping. Rates go back to 1999. No account or API key required.

Actions

ActionWhat it does
Compare a rate between two datesSee how far a rate has moved between two dates, as a percentage and as a number.
Convert an amountConvert an amount of money from one currency to another at the European Central Bank's official reference rate - the rate tax authorities, auditors and contracts cite.
Get a rate over timeGet a rate between two currencies across a stretch of time - for a chart, a trend, or a loop over each day.
Get an average rateGet the ECB's own published average rate for a calendar month, quarter or year - the figure month-end bookkeeping, revaluation and tax filings are done at.
Get an exchange rateGet the European Central Bank's exchange rate between two currencies, the latest one or the one in force on a date you name.
Get every rate for a dayGet the whole table of euro reference rates the ECB published on one day - every currency it tracks, in one step.
List currenciesList every currency the ECB publishes a euro reference rate for right now, with the ECB's own name for each.

Compare a rate between two dates

See how far a rate has moved between two dates, as a percentage and as a number. The step to put in front of a condition: alert when a currency has moved more than two per cent since a deal was quoted, or since the start of the quarter. No API key required.

Inputs

Fromfrom_currencytext
The currency being converted from. Defaults to the euro.Default: EUR.
Toto_currencytext
The currency being converted into. Defaults to the US dollar.Default: USD.
Start datestart_datedateRequired
The earlier date to measure the move from. A weekend or holiday uses the last rate published before it.
End dateend_datedate
Optional. The later date to measure the move to. Defaults to the latest published rate.

Outputs

changenumber
How much the rate moved in absolute terms.
change_percentnumber
How much the rate moved, as a percentage of where it started. Negative when it fell. This is the number to compare against a threshold.
directiontext
Which way the rate moved: up, down or unchanged.
from_currencytext
The source currency's three-letter code, such as USD.
from_currency_nametext
The ECB's name for the source currency, such as US dollar.
from_ratenumber
The rate on the earlier date.
from_rate_datetext
The day the earlier rate was published for.
summarytext
The move as a sentence, ready to show someone.
to_currencytext
The target currency's three-letter code, such as USD.
to_currency_nametext
The ECB's name for the target currency, such as US dollar.
to_ratenumber
The rate on the later date.
to_rate_datetext
The day the later rate was published for.
Example output
{
  "change": -0.0129,
  "change_percent": -1.1,
  "direction": "down",
  "from_currency": "EUR",
  "from_currency_name": "Euro",
  "from_rate": 1.1721,
  "from_rate_date": "2026-01-02",
  "summary": "1 EUR bought 1.1592 USD on 2026-09-11, down 1.1% from 1.1721 on 2026-01-02",
  "to_currency": "USD",
  "to_currency_name": "US dollar",
  "to_rate": 1.1592,
  "to_rate_date": "2026-09-11"
}

Convert an amount

Convert an amount of money from one currency to another at the European Central Bank's official reference rate - the rate tax authorities, auditors and contracts cite. Use the latest published rate, or the one in force on a date you name, which is what an invoice or an expense claim needs. Works between any two of the currencies the ECB publishes, not just to and from the euro. No API key required.

Inputs

AmountamountnumberRequired
How much to convert, in the 'From' currency.
Fromfrom_currencytext
The currency being converted from. Defaults to the euro.Default: EUR.
Toto_currencytext
The currency being converted into. Defaults to the US dollar.Default: USD.
Dateon_datedate
Optional. The day to use the rate from. The ECB publishes on weekdays only, so a weekend or a bank holiday uses the last rate published before it - the one still in force. Leave empty for the latest rate.

Outputs

amountnumber
The amount that was converted.
converted_amountnumber
The amount in the 'To' currency, to two decimal places.
from_currencytext
The source currency's three-letter code, such as USD.
from_currency_nametext
The ECB's name for the source currency, such as US dollar.
ratenumber
The rate used: how many of the 'To' currency one of the 'From' currency bought.
rate_datetext
The day the rate was published for, as YYYY-MM-DD. Worth reading when a date was asked for: a weekend or holiday answers with the last weekday before it.
requested_datetext
The date that was asked for, or empty when the latest rate was asked for. Compare it with the rate's own date to see whether the ECB published that day.
summarytext
The conversion as a sentence, ready to show someone: '250 USD = 185.07 GBP'.
to_currencytext
The target currency's three-letter code, such as USD.
to_currency_nametext
The ECB's name for the target currency, such as US dollar.
Example output
{
  "amount": 250,
  "converted_amount": 185.07,
  "from_currency": "USD",
  "from_currency_name": "US dollar",
  "rate": 0.740295,
  "rate_date": "2026-09-11",
  "requested_date": "",
  "summary": "250 USD = 185.07 GBP",
  "to_currency": "GBP",
  "to_currency_name": "UK pound sterling"
}

Get a rate over time

Get a rate between two currencies across a stretch of time - for a chart, a trend, or a loop over each day. Choose the daily published rate or the ECB's monthly, quarterly or yearly averages. Comes back with the high, the low and the average over the range as well as the rates themselves. With no dates filled in it covers roughly the last month of daily rates, and the range it used is always reported back. No API key required.

Inputs

Fromfrom_currencytext
The currency being converted from. Defaults to the euro.Default: EUR.
Toto_currencytext
The currency being converted into. Defaults to the US dollar.Default: USD.
Start datestart_datedate
Optional. The first day to include. Defaults to a window that suits the chosen rate: about a month back for daily rates, a year for monthly, two years for quarterly and ten for yearly.
End dateend_datedate
Optional. The last day to include. Defaults to today.
Rate to showfrequencytext
Which rate to return for the range. The daily rate is the one the ECB publishes each weekday; the other three are its own averages over each month, quarter or year.One of: D (Daily rate), M (Monthly average), Q (Quarterly average), A (Yearly average). Default: D.

Outputs

averagenumber
The mean of the rates in the range. For a month's official average, use 'Get an average rate' - the ECB publishes that one itself.
countnumber
How many rates came back.
end_datetext
The last period that had a rate.
first_ratenumber
The rate at the start of the range.
frequencytext
Which rate was returned: D, M, Q or A.
frequency_labeltext
The same thing in words, such as Monthly average.
from_currencytext
The source currency's three-letter code, such as USD.
highnumber
The highest rate in the range.
high_datetext
When the highest rate was.
last_ratenumber
The rate at the end of the range.
lownumber
The lowest rate in the range.
low_datetext
When the lowest rate was.
rateslist
Every rate in the range, oldest first.
start_datetext
The first period that had a rate.
to_currencytext
The target currency's three-letter code, such as USD.
Example output
{
  "average": 1.16153,
  "count": 3,
  "end_date": "2026-09-11",
  "first_rate": 1.1638,
  "frequency": "D",
  "frequency_label": "Daily rate",
  "from_currency": "EUR",
  "high": 1.1638,
  "high_date": "2026-09-09",
  "last_rate": 1.1592,
  "low": 1.1592,
  "low_date": "2026-09-11",
  "rates": [
    {
      "date": "2026-09-09",
      "rate": 1.1638
    },
    {
      "date": "2026-09-10",
      "rate": 1.1616
    },
    {
      "date": "2026-09-11",
      "rate": 1.1592
    }
  ],
  "start_date": "2026-09-09",
  "to_currency": "USD"
}

Get an average rate

Get the ECB's own published average rate for a calendar month, quarter or year - the figure month-end bookkeeping, revaluation and tax filings are done at. Pick any date inside the period you want and the step works out which period that is. The ECB publishes a period's average once the period has ended, so this defaults to the last completed one. No API key required.

Inputs

Fromfrom_currencytext
The currency being converted from. Defaults to the euro.Default: EUR.
Toto_currencytext
The currency being converted into. Defaults to the US dollar.Default: USD.
Average overperiodtext
Which period to average across.One of: month (A calendar month), quarter (A calendar quarter), year (A calendar year). Default: month.
Any date in the periodin_datedate
Optional. Any day inside the month, quarter or year you want - 14 March 2026 means March 2026, or Q1 2026, or 2026. Defaults to the most recently completed period.

Outputs

average_ratenumber
The ECB's average rate over the period: how many of the 'To' currency one of the 'From' currency bought, on average.
from_currencytext
The source currency's three-letter code, such as USD.
from_currency_nametext
The ECB's name for the source currency, such as US dollar.
periodtext
The period averaged, as 2026-08, 2026-Q3 or 2026.
period_endtext
The period's last day, as YYYY-MM-DD.
period_labeltext
The same period in words, such as August 2026.
period_starttext
The period's first day, as YYYY-MM-DD.
summarytext
The average as a sentence: '1 EUR = 1.15931 USD on average over August 2026'.
to_currencytext
The target currency's three-letter code, such as USD.
to_currency_nametext
The ECB's name for the target currency, such as US dollar.
Example output
{
  "average_rate": 1.15931,
  "from_currency": "EUR",
  "from_currency_name": "Euro",
  "period": "2026-08",
  "period_end": "2026-08-31",
  "period_label": "August 2026",
  "period_start": "2026-08-01",
  "summary": "1 EUR = 1.15931 USD on average over August 2026",
  "to_currency": "USD",
  "to_currency_name": "US dollar"
}

Get an exchange rate

Get the European Central Bank's exchange rate between two currencies, the latest one or the one in force on a date you name. Comes back with the rate both ways round, so you never have to divide one into the other. No API key required.

Inputs

Fromfrom_currencytext
The currency being converted from. Defaults to the euro.Default: EUR.
Toto_currencytext
The currency being converted into. Defaults to the US dollar.Default: USD.
Dateon_datedate
Optional. The day to use the rate from. The ECB publishes on weekdays only, so a weekend or a bank holiday uses the last rate published before it - the one still in force. Leave empty for the latest rate.

Outputs

from_currencytext
The source currency's three-letter code, such as USD.
from_currency_nametext
The ECB's name for the source currency, such as US dollar.
inverse_ratenumber
The rate the other way round, for when the answer is needed as 'how many euros to the dollar'.
ratenumber
How many of the 'To' currency one of the 'From' currency bought.
rate_datetext
The day the rate was published for, as YYYY-MM-DD. Worth reading when a date was asked for: a weekend or holiday answers with the last weekday before it.
requested_datetext
The date that was asked for, or empty when the latest rate was asked for. Compare it with the rate's own date to see whether the ECB published that day.
summarytext
The rate as a sentence: '1 EUR = 1.1592 USD'.
to_currencytext
The target currency's three-letter code, such as USD.
to_currency_nametext
The ECB's name for the target currency, such as US dollar.
Example output
{
  "from_currency": "EUR",
  "from_currency_name": "Euro",
  "inverse_rate": 0.862664,
  "rate": 1.1592,
  "rate_date": "2026-09-11",
  "requested_date": "",
  "summary": "1 EUR = 1.1592 USD",
  "to_currency": "USD",
  "to_currency_name": "US dollar"
}

Get every rate for a day

Get the whole table of euro reference rates the ECB published on one day - every currency it tracks, in one step. The rates are how much of each currency one euro bought, exactly as published, which is what makes them citable. For a rate against something other than the euro, use 'Get an exchange rate'. No API key required.

Inputs

Dateon_datedate
Optional. The day to use the rate from. The ECB publishes on weekdays only, so a weekend or a bank holiday uses the last rate published before it - the one still in force. Leave empty for the latest rate.

Outputs

base_currencytext
Always EUR: every rate here is per one euro.
currency_countnumber
How many currencies were published.
datetext
The day these rates were published, as YYYY-MM-DD.
rateslist
One entry per currency, in alphabetical order by code - the shape to loop over or put in a table.
rates_by_currencyobject
The same rates keyed by currency code, for looking one up without searching the list.
requested_datetext
The date that was asked for, or empty when the latest rate was asked for. Compare it with the rate's own date to see whether the ECB published that day.
Example output
{
  "base_currency": "EUR",
  "currency_count": 3,
  "date": "2026-09-11",
  "rates": [
    {
      "currency": "GBP",
      "currency_name": "UK pound sterling",
      "rate": 0.85815
    },
    {
      "currency": "JPY",
      "currency_name": "Japanese yen",
      "rate": 178.56
    },
    {
      "currency": "USD",
      "currency_name": "US dollar",
      "rate": 1.1592
    }
  ],
  "rates_by_currency": {
    "GBP": 0.85815,
    "JPY": 178.56,
    "USD": 1.1592
  },
  "requested_date": ""
}

List currencies

List every currency the ECB publishes a euro reference rate for right now, with the ECB's own name for each. Takes nothing. Use it to check a currency code before converting, or to give an AI step the list to choose from. No API key required.

Inputs

None.

Outputs

codeslist
Just the codes, for checking whether one is in the list.
countnumber
How many currencies there are, the euro included.
currencieslist
The euro first, then the rest alphabetically by code.
datetext
The publication this list was read from, as YYYY-MM-DD.
Example output
{
  "codes": [
    "EUR",
    "GBP",
    "JPY",
    "USD"
  ],
  "count": 4,
  "currencies": [
    {
      "code": "EUR",
      "name": "Euro"
    },
    {
      "code": "GBP",
      "name": "UK pound sterling"
    },
    {
      "code": "JPY",
      "name": "Japanese yen"
    },
    {
      "code": "USD",
      "name": "US dollar"
    }
  ],
  "date": "2026-09-11"
}

On this page