US Treasury Reporting Rates API: Official Quarterly FX Rates as JSON
The U.S. Department of the Treasury publishes the Treasury Reporting Rates of Exchange once a quarter through its Bureau of the Fiscal Service. Every federal agency must use them to convert foreign-currency balances into dollars for official reports — and contractors, grant recipients, and auditors follow the same table so their figures reconcile against the agency's. This guide shows how to pull them as JSON, via REST or the zero-dependency ustreasury-exchange-rate npm package, with history back to 2001.
/api/v1/central-bank/ustreasury/latest).What the Treasury publishes
- ~145 currencies against the dollar, quoted as units per US$1.
- One table per quarter, dated at quarter end — 31 March, 30 June, 30 September, 31 December.
- Mid-quarter amendments for currencies that move sharply, issued for those currencies alone rather than as a new table.
- History back to March 2001, including currencies that no longer exist — the Austrian schilling, the German mark, the old Turkish lira and Venezuelan bolívar.
The amendment problem, and how the API handles it
This is the part that trips up anyone reading the raw feed. Because an amendment covers only the currencies that moved, the most recent publication date is usually not a table — it might carry three currencies. Take the newest date at face value and you get three rates where you expected a hundred and forty-five.
The API returns the table in force instead: the quarter's rates with any later amendments already applied, and each row carrying the date it was actually published. So a currency amended in mid-July shows its July date, while the rest of the table still shows the quarter-end date — the state an agency would be reporting on today, without you reconstructing it.
Get the rates in force (REST)
curl "https://allratestoday.com/api/v1/central-bank/ustreasury/latest" \
-H "Authorization: Bearer YOUR_API_KEY" The current table is available on every plan, including the free tier (300 requests/month, no credit card).
The npm SDK
npm install ustreasury-exchange-rate import { getRate, getLatestRates } from 'ustreasury-exchange-rate';
// One pair at the official Treasury reporting rate
const pair = await getRate('USD', 'EUR', { apiKey: 'art_live_...' });
console.log(pair.rate, pair.rate_date);
// The full table in force
const table = await getLatestRates({ apiKey: 'art_live_...' });
console.log(table.rate_date, table.rates.length); Zero dependencies, TypeScript types included, and it runs anywhere fetch exists — Node 18+, Bun, Deno, and edge runtimes.
Rates for a reporting date
import { getRatesForDate, getHistory } from 'ustreasury-exchange-rate';
// The table in force on a reporting date, amendments applied
const day = await getRatesForDate('2026-06-30', { apiKey: 'art_live_...' });
// Quarter-by-quarter series for one pair
const series = await getHistory(
{ source: 'USD', target: 'EUR', from: '2001-03-31' },
{ apiKey: 'art_live_...' }
); Historical dates and series need a paid plan; the current table stays free.
Why quarterly rates beat daily ones here
A quarterly rate looks crude next to a live feed, and for a payment it would be. But federal financial reporting is not pricing a trade — it is producing one number that thousands of separate reports must agree on. A rate fixed for the quarter means an agency, its contractors, and its auditors all convert the same balance the same way, and a discrepancy points at a real error rather than at two systems that sampled the market a few hours apart.
Twenty-five years of reporting history
The series starts at the first quarter of 2001 and runs unbroken since — through the euro's replacement of a dozen national currencies, several redenominations, and the currency collapses that produced some of the sharpest mid-quarter amendments in the record. For restating old grant reports or auditing historical federal spending, it is the authoritative table for the period, not an approximation of it.
Published vs derived pairs
The Treasury quotes everything against the dollar. Pairs it does not print directly are computed from the published table via USD and flagged derived: true with the method used, so an official rate is never confused with a calculated one.
The tax-authority pair
The Treasury's quarterly table is the US answer to a problem every tax authority solves differently. The UK's is HMRC, which publishes monthly and in advance; the same API serves both, alongside the Federal Reserve's weekly H.10 rates when you need the market-facing number instead.
FAQ
Is there an API for the Treasury Reporting Rates of Exchange?
The Bureau of the Fiscal Service publishes the rates through its Fiscal Data platform, and AllRatesToday serves the same published rates as clean JSON — around 145 currencies against the dollar, with history back to 2001 — via REST or the ustreasury-exchange-rate npm package. The current table is free.
How often do Treasury reporting rates change?
Once a quarter, with mid-quarter amendments for currencies that move sharply. The API returns the table in force: the quarter-end rates with any later amendments already applied, each row carrying the date it was published.
Who has to use the Treasury reporting rates?
Every US government agency must use them to convert foreign-currency balances into dollars for official reports, and contractors, grant recipients, and their auditors follow the same table so figures reconcile against the agency's.
Official US Treasury rates, as JSON
The current table is free — 300 requests/month, no credit card.
Get your free API key