LearnGuide

IRS yearly average exchange rates, recomputed from daily data

The IRS has no official exchange rate, it accepts any posted rate used consistently. We recomputed its 2025 yearly average table from daily data and matched it within a tenth of a percent, then computed two currencies the table stops short of.

7 Aug 2026 · 5 min read

US taxpayers reporting foreign income convert amounts to dollars, and the IRS publishes a yearly average exchange rate table for that. Two things about that table are less known: the IRS states it has no official exchange rate and generally accepts "any posted exchange rate that is used consistently", and the table covers a fixed list of currencies and years. Both facts matter the moment your currency or year is missing. This guide recomputes the IRS averages from daily data so you can see the method, then shows how to produce the same average for any of our supported currencies and any year back to 1999.

  • The IRS accepts "any posted exchange rate that is used consistently" and states it has no official exchange rate.
  • Its yearly average table is quoted as foreign currency units per 1 USD, to convert foreign income to dollars, divide by the average.
  • Averaging our daily USD-base series over 2025 reproduces the IRS table within roughly a tenth of a percent: EUR 0.887 vs 0.886, GBP 0.759 vs 0.759, JPY 149.655 vs 149.632, CAD 1.398 vs 1.398.
  • The same one-line computation works for any supported currency and year, back to 1999 for many currencies, including ones the IRS table does not carry.
  • Rates are indicative and this is not tax advice; pick one posted source and use it consistently.

What the IRS actually requires

The rule is looser than most people expect. Per the IRS yearly average currency exchange rates page: "Generally, it accepts any posted exchange rate that is used consistently", and the same page states the IRS has no official exchange rate of its own. The published table is a convenience, not a mandate. The direction convention matters: the table lists foreign currency units per 1 US dollar, so you divide a foreign amount by the yearly average to get dollars.

The 2025 table, recomputed from daily data

A yearly average should be reproducible: take every daily observation for the year, average them. Here is the IRS 2025 figure next to the arithmetic mean of our own daily USD-base series (ECB business-day fixes plus live-source dailies) for the same year:

CurrencyIRS 2025 averageRecomputed from daily data
Euro (EUR)0.8860.887
UK Pound (GBP)0.7590.759
Japanese Yen (JPY)149.632149.655
Canadian Dollar (CAD)1.3981.398
Australian Dollar (AUD)1.5511.552
Swiss Franc (CHF)0.8310.831
Indian Rupee (INR)87.13387.166
Mexican Peso (MXN)19.21219.213

Every row lands within about a tenth of a percent. The residual comes from calendar choices, which days count, and how holidays are handled, not from different market data. The point of the exercise: the IRS average is an ordinary average of daily rates, and you can produce one yourself for anything the table leaves out.

Two currencies we carry that the IRS 2025 table does not list: the Philippine Peso and the Indonesian Rupiah. Computed the same way for the 2025 full year: PHP 57.509 and IDR 16,478.44, each foreign units per 1 USD, divide to convert.

Compute it for any currency and any year

Fetch daily rates from the range endpoint and average them with jq. This full-year example needs a Plus or Pro API key:

Yearly average from daily rates, EUR, full year 2025
curl -s "https://api.exchangerate.dev/v1/range?base=USD&symbols=EUR&start_date=2025-01-01&end_date=2025-12-31" \  -H "Authorization: Bearer YOUR_API_KEY" \  | jq '[.data[].rates.EUR] | add/length'# 0.8867047450980384  <- foreign units per 1 USD; divide income by this

Swap the symbol and the dates for any other currency or year; daily history runs back to 1999 for many currencies on Plus and Pro. For a mid-year arrival or departure (a partial tax year), change the date range and the same expression yields a partial-period average. Every response carries `source` and `market_session` so you can state exactly what kind of observations your average was built from; a stronger consistency story than a screenshot of a table.

Not tax advice

This article describes how published exchange-rate averages are computed and reproduced. It is not tax, legal, or financial advice, and exchangerate.dev rates are indicative, published for reference and analytics, not an official or settlement rate. Rules differ for specific transactions (property sales, foreign tax credits, functional-currency elections). For anything beyond straightforward income conversion, ask a tax professional.

Questions

Does the IRS have an official exchange rate?

No. The IRS states it has no official exchange rate and generally accepts any posted exchange rate that is used consistently. It publishes a yearly average table as a convenience for converting foreign income.

How do I convert foreign income to US dollars with a yearly average rate?

The IRS table is quoted as foreign currency units per 1 US dollar, so divide the foreign amount by the yearly average. For example, foreign wages of 10,000 EUR with a 0.886 average is 10,000 / 0.886 = about 11,287 USD.

What if my currency or year is not in the IRS table?

Use any posted exchange rate consistently. A defensible choice is the arithmetic mean of a full year of daily rates from a documented source, the computation in this guide reproduces the IRS's own listed averages within about a tenth of a percent and works for any supported currency back to 1999.

Should I use the yearly average or the spot rate on the day?

The IRS instruction for its table is to divide yearly amounts by the yearly average; rates prevailing on specific dates apply to specific transactions. Which applies to your situation is a tax question, not a data question, this guide is not tax advice.

Are exchangerate.dev rates official?

No. Rates are indicative, live market data and public reference rates with source and market_session labels on every response. They are published for reference and analytics, not as an official or settlement rate.

Keep reading

Start with a free API key

5,000 requests a month on the free plan. No credit card.

Get a free key