Fed H.10 Exchange Rate History: Download Federal Reserve Daily Rates 2016 to 2025 as CSV, Excel or API

Reviewed by Madhushan, Fintech Developer — November 2026

The Federal Reserve's H.10 release is the standard public source for daily US dollar exchange rates: it is what tax preparers use for a transaction-date rate, what analysts use for a clean long series, and what many accounting policies name for translation. The Fed's own download tool works, but it hands you one wide file with its own codes and "ND" markers. This guide shows the series already tidied, and how to use it.

What H.10 is

The Federal Reserve describes the rates as "noon buying rates in New York for cable transfers payable in foreign currencies", "certified by the Federal Reserve Bank of New York for customs purposes as required by section 522 of the amended Tariff Act of 1930". The schedule: "On Mondays at 4:15 p.m. the Federal Reserve Board releases daily bilateral exchange rates and U.S. dollar indexes for the previous business week." If Monday is a federal holiday, the release moves to the next business day.

Three practical consequences:

The tidy series: one CSV per year

The central-bank-exchange-rates repository holds the official H.10 tables under data/fed/history/, one file per year from 2016:

https://raw.githubusercontent.com/AllRates-Today/central-bank-exchange-rates/main/data/fed/history/2025.csv

date,base,quote,type,value
2025-01-02,AUD,USD,reference,0.6208
2025-01-02,EUR,USD,reference,1.0261
...
2025-01-02,USD,JPY,reference,...

The base and quote columns make the direction explicit: EUR,USD,1.0261 is dollars per euro, USD,JPY is yen per dollar. Holidays are simply absent, with no "ND" rows to filter. The files cover 22 currencies. Licence: CC BY-NC 4.0, free for research, personal filing and internal non-commercial use with attribution; commercial systems use the API.

Excel and Google Sheets

In Excel: Data > Get Data > From Web, paste the raw URL, and Power Query loads a table you can filter by base or quote. In Google Sheets:

=QUERY(IMPORTDATA("https://raw.githubusercontent.com/AllRates-Today/central-bank-exchange-rates/main/data/fed/history/2025.csv"),
       "select Col1, Col5 where Col2 = 'EUR'", 1)

pandas: one frame, one direction

import pandas as pd
base = "https://raw.githubusercontent.com/AllRates-Today/central-bank-exchange-rates/main/data/fed/history/{}.csv"
df = pd.concat(pd.read_csv(base.format(y), parse_dates=["date"]) for y in range(2016, 2026))

# normalise everything to "foreign currency units per 1 USD"
inv = df.base != "USD"
df["ccy"] = df.quote.where(~inv, df.base)
df["per_usd"] = df.value.where(~inv, 1 / df.value)
wide = df.pivot(index="date", columns="ccy", values="per_usd")

print(wide.loc["2025-12-31", ["EUR", "GBP", "JPY", "CAD"]].round(4))
# EUR 0.8521, GBP 0.7437, JPY 156.8000, CAD 1.3712
print(wide.loc["2025"].mean()[["EUR", "GBP", "JPY"]].round(4))   # 2025 averages
print(wide["EUR"].asof("2025-12-25"))                            # holiday -> Dec 24 rate

Two details in that snippet are the ones that cause wrong numbers elsewhere. The inversion puts all currencies on one basis before you average or compare. And asof returns the last available rate for a holiday or weekend date, which is the usual fallback for a transaction dated on a non-business day.

Check values

DateEUR (USD per EUR)GBP (USD per GBP)JPY per USDCAD per USDINR per USD
Dec 31, 20241.03511.2521157.371.440085.55
Dec 31, 20251.17361.3447156.801.371289.84
2025 average (250 days)1.13061.3192149.571.397387.15
2025 low1.02091.2158140.811.355684.27
2025 high1.18481.3754158.311.460191.03

One date, as an API call

The latest released table:

curl "https://allratestoday.com/api/open/central-bank/fed"
# "rate_date": "2026-11-06", "cadence": "weekly",
# "rates": [ { "base": "EUR", "quote": "USD", "type": "reference", "value": 1.1154 }, ... ]

A past date or a range:

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://allratestoday.com/api/v1/central-bank/fed/2025-12-31"

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://allratestoday.com/api/v1/central-bank/fed/history?symbol=EUR&from=2025-01-01&to=2025-12-31"

Add ?format=csv, xml or xlsx to any table endpoint. Dated tables and history are on paid plans; a history request counts as one call per currency per month of data.

What the series is used for

For the FBAR and Form 8938, do not use H.10: those forms call for the Treasury year-end rate. The three tables are compared in exchange rates as of December 31, 2025.

FAQ

Where can I download Federal Reserve H.10 historical exchange rates?

The Federal Reserve offers the series through its H.10 pages and data download program. The same official daily tables are available as one tidy CSV per year from 2016 in the AllRates-Today central-bank-exchange-rates repository, and by date through the AllRatesToday API.

How often is H.10 published?

Weekly. On Mondays at 4:15 p.m. the Federal Reserve Board releases daily rates for the previous business week, or on the next business day if Monday is a federal holiday.

Which H.10 currencies are quoted in dollars per unit?

The euro, the UK pound, the Australian dollar and the New Zealand dollar. All other currencies in the release are quoted in currency units per US dollar.

Why is there no H.10 rate for some dates?

No rate is published on US federal holidays or weekends. The Fed's files mark those dates ND for no data. Use the last available rate before the date.

Can I use H.10 rates for the FBAR?

No. The FBAR and Form 8938 instructions point to the Treasury rate for the last day of the year. H.10 is the usual source for transaction-date rates and for computing averages.

H.10 by date, in any format

The Federal Reserve H.10 table for any day since 2016 as JSON, CSV, XML or Excel. Dated tables and history on paid plans.

See plans

Related Articles