Central Bank Exchange Rate API
Official central bank exchange rates via one API: 116 central banks including the US Federal Reserve, ECB, Bank of England, People's Bank of China, and Central Bank of Sri Lanka (CBSL), with history back to 1999. The published rates required for tax, customs, audits, and compliant invoicing.
Why official rates, not market rates?
Live mid-market rates are right for converters and price displays — that's what our core rates API serves. But tax filings, customs declarations, audits, statutory accounts, and invoicing rules in many countries don't ask what the market said: they require the official rate published by the central bank for a given date. That number is fixed, citable, and never changes after publication.
This API serves exactly those published tables — each response carries the bank's own publication date (rate_date), and anything computed rather than printed by the bank is explicitly flagged.
Covered central banks
Covered — click a country for its bank's rates API. The euro area links to the ECB reference rates.
Live coverage — this table is generated from the same database the API serves, so it always matches /api/v1/central-banks:
| Central bank | Country | Code | Currencies | History from | Latest rates |
|---|---|---|---|---|---|
| Europe 21 | |||||
| Italy | bdi | 150 | January 2016 | 2026-09-10 | |
| Albania | boa | 20 | August 2026 | 2026-09-10 | |
| United Kingdom | boe | 23 | January 2016 | 2026-09-09 | |
| Russia | cbr | 53 | January 2016 | 2026-09-11 | |
| Bulgaria | bnb | 29 | January 2016 | 2026-09-10 | |
| Bosnia and Herzegovina | cbbh | 17 | January 2016 | 2026-09-10 | |
| Iceland | cbi | 10 | January 2016 | 2026-09-10 | |
| Czech Republic | cnb | 30 | January 2016 | 2026-09-10 | |
| Denmark | dnb | 30 | January 2016 | 2026-09-10 | |
| Eurozone | ecb | 29 | January 1999 | 2026-09-10 | |
| Hungary | mnb | 32 | January 2016 | 2026-09-10 | |
| Poland | nbp | 32 | January 2016 | 2026-09-10 | |
| Moldova | nbm | 40 | January 1994 | 2026-09-10 | |
| North Macedonia | nbrm | 31 | January 1993 | 2026-09-10 | |
| Romania | bnr | 37 | January 2005 | 2026-09-10 | |
| Serbia | nbs | 35 | January 2016 | 2026-09-10 | |
| Belarus | nbrb | 30 | July 2016 | 2026-09-10 | |
| Ukraine | nbu | 45 | September 1996 | 2026-09-10 | |
| Norway | norges | 37 | January 2016 | 2026-09-10 | |
| Sweden | riksbank | 29 | January 2016 | 2026-09-10 | |
| Switzerland | snb | 26 | January 1914 | 2026-08-31 | |
| North America 3 | |||||
| Mexico | banxico | 4 | January 1993 | 2026-09-09 | |
| Canada | boc | 24 | January 2017 | 2026-09-09 | |
| United States | fed | 22 | January 2016 | 2026-09-04 | |
| Latin America & Caribbean 18 | |||||
| Bolivia | bcbol | 21 | January 2016 | 2026-09-10 | |
| Costa Rica | bccr | 2 | December 1999 | 2026-09-10 | |
| Honduras | bch | 1 | February 2019 | 2026-09-10 | |
| Dominican Republic | bcrd | 1 | January 1991 | 2026-09-09 | |
| Nicaragua | bcn | 1 | January 2012 | 2026-12-31 | |
| Paraguay | bcp | 26 | January 2016 | 2026-09-09 | |
| Brazil | bcb | 156 | January 2016 | 2026-09-10 | |
| Guatemala | banguat | 1 | January 2004 | 2026-09-10 | |
| Guyana | bogy | 1 | August 2026 | 2026-08-26 | |
| Jamaica | bojm | 123 | July 2000 | 2026-09-10 | |
| Argentina | bcra | 36 | January 2000 | 2026-09-09 | |
| Chile | bcch | 60 | August 1982 | 2026-09-09 | |
| Suriname | cbvs | 11 | September 2009 | 2026-09-10 | |
| Trinidad and Tobago | cbtt | 10 | January 1991 | 2026-09-09 | |
| Uruguay | bcu | 30 | January 2000 | 2026-09-09 | |
| Venezuela | bcv | 21 | September 2017 | 2026-09-10 | |
| Peru | bcrp | 2 | January 2016 | 2026-09-09 | |
| Colombia | sfc | 1 | December 1991 | 2026-09-10 | |
| Asia & Pacific 29 | |||||
| Philippines | bsp | 31 | August 2026 | 2026-09-10 | |
| Bangladesh | bb | 11 | November 2010 | 2026-09-10 | |
| Indonesia | bi | 25 | January 2016 | 2026-09-10 | |
| Malaysia | bnm | 27 | January 2020 | 2026-09-10 | |
| Japan | boj | 1 | January 1998 | 2026-09-08 | |
| South Korea | bok | 43 | May 1964 | 2026-09-10 | |
| Mongolia | bom | 38 | August 2026 | 2026-09-10 | |
| Thailand | bot | 48 | January 2002 | 2026-09-10 | |
| Laos | bol | 14 | January 2021 | 2026-09-10 | |
| Armenia | cba | 30 | January 2000 | 2026-09-10 | |
| Azerbaijan | cbar | 38 | January 2016 | 2026-09-10 | |
| Myanmar | cbm | 38 | July 2012 | 2026-09-10 | |
| Sri Lanka | cbsl | 54 | May 2010 | 2026-09-10 | |
| Taiwan | cbc | 1 | January 2008 | 2026-09-10 | |
| Uzbekistan | cbu | 74 | December 2015 | 2026-09-10 | |
| Hong Kong | hkma | 17 | January 1981 | 2026-08-31 | |
| Macao | amcm | 17 | January 1999 | 2026-09-10 | |
| Singapore | mas | 21 | January 1988 | 2026-09-10 | |
| Cambodia | nbc | 29 | January 2016 | 2026-09-10 | |
| Georgia | nbg | 42 | January 2016 | 2026-09-10 | |
| Kazakhstan | nbk | 48 | January 2016 | 2026-09-10 | |
| Kyrgyzstan | nbkr | 48 | January 1999 | 2026-09-11 | |
| Nepal | nrb | 22 | January 1998 | 2026-09-10 | |
| China | pboc | 25 | January 2006 | 2026-09-10 | |
| Australia | rba | 20 | January 2023 | 2026-09-10 | |
| India | rbi | 6 | January 2003 | 2026-09-10 | |
| New Zealand | rbnz | 17 | January 1999 | 2026-09-10 | |
| Pakistan | sbp | 35 | January 2017 | 2026-09-10 | |
| Vietnam | sbv | 28 | January 2009 | 2026-09-10 | |
| Middle East 11 | |||||
| Israel | boi | 14 | June 1975 | 2026-09-10 | |
| Bahrain | cbb | 33 | January 2016 | 2026-09-10 | |
| Iraq | cbiq | 19 | January 2009 | 2026-09-09 | |
| Jordan | cbj | 5 | August 2026 | 2026-09-10 | |
| Kuwait | cbk | 134 | January 2008 | 2026-09-10 | |
| Oman | cbo | 48 | January 2022 | 2026-09-10 | |
| United Arab Emirates | cbuae | 75 | January 2019 | 2026-09-10 | |
| Türkiye | tcmb | 22 | January 2020 | 2026-09-10 | |
| Palestine | pma | 4 | August 2026 | 2026-09-10 | |
| Qatar | qcb | 7 | January 2024 | 2026-09-10 | |
| Saudi Arabia | sama | 12 | January 2009 | 2026-07-31 | |
| Africa 20 | |||||
| Mozambique | bdm | 20 | August 2026 | 2026-09-10 | |
| Morocco | bam | 30 | January 2000 | 2026-09-09 | |
| Algeria | bda | 18 | January 2000 | 2026-09-10 | |
| Botswana | bob | 7 | January 2001 | 2026-09-10 | |
| Central Africa (CEMAC) | beac | 13 | February 2021 | 2026-09-10 | |
| Ghana | bog | 14 | July 2007 | 2026-09-10 | |
| Mauritius | bmu | 12 | August 2026 | 2026-09-10 | |
| Tanzania | botz | 38 | January 2010 | 2026-09-10 | |
| Uganda | bou | 33 | August 2026 | 2026-09-10 | |
| Zambia | boz | 2 | January 2026 | 2026-09-10 | |
| Egypt | cbe | 18 | August 2026 | 2026-09-10 | |
| Kenya | cbke | 21 | January 2024 | 2026-09-10 | |
| Nigeria | cbn | 13 | December 2001 | 2026-09-10 | |
| Tunisia | bct | 20 | May 2004 | 2026-09-09 | |
| West Africa (WAEMU) | bceao | 27 | January 2014 | 2026-09-09 | |
| Angola | bna | 70 | December 1998 | 2026-09-10 | |
| Ethiopia | nbe | 19 | September 2024 | 2026-09-10 | |
| Rwanda | bnrw | 20 | January 2012 | 2026-09-10 | |
| Malawi | rbm | 38 | January 2016 | 2026-09-10 | |
| South Africa | sarb | 23 | January 2000 | 2026-09-10 | |
| Other 14 | |||||
| Lithuania | lb | 87 | January 2015 | 2026-09-10 | |
| Namibia | bon | 4 | September 2026 | 2026-09-10 | |
| Mauritania | bcm | 19 | December 2023 | 2026-09-10 | |
| DR Congo | bcc | 21 | September 2026 | 2026-09-10 | |
| Haiti | brh | 1 | September 2026 | 2026-09-10 | |
| Barbados | cbbd | 7 | January 2010 | 2026-09-10 | |
| Belize | cbbz | 4 | January 2010 | 2026-09-09 | |
| Libya | cbl | 20 | January 2015 | 2026-09-10 | |
| Gambia | cbg | 32 | September 2026 | 2026-09-10 | |
| Maldives | mma | 1 | April 2011 | 2026-09-10 | |
| Tajikistan | nbt | 36 | January 2010 | 2026-09-09 | |
| Fiji | rbf | 8 | January 2001 | 2026-09-09 | |
| Zimbabwe | rbz | 34 | April 2024 | 2026-09-10 | |
| Bhutan | rma | 12 | May 2024 | 2026-09-10 | |
No central bank matches that search. Try a country, a bank name or a code.
Currencies counts what each source publishes today. Series a source has retired — the ECB's pre-euro currencies, for example — are left out of that number but remain available from the historical endpoints.
More banks are on the roadmap, with a focus on South and Southeast Asian central banks that other providers skip. Need a specific bank? Tell us — coverage requests move banks up the queue.
Need spreadsheets instead of an API? The download page serves every bank’s latest table and date-range history as Excel, CSV or JSON — included in every paid plan, no API key needed.
Download Central Bank Rates (Excel / CSV)
Quick start
Same API keys and authentication as the rest of AllRatesToday. Ask for a pair with the familiar source/target parameters:
curl "https://allratestoday.com/api/v1/central-bank/cbsl/latest?source=USD&target=LKR" \
-H "Authorization: Bearer art_live_your_key" Response:
{
"bank": "cbsl",
"name": "Central Bank of Sri Lanka",
"rate_date": "2026-07-28",
"source": "USD",
"target": "LKR",
"rate": 336.2512,
"rate_type": "indicative",
"derived": false,
"method": "published"
} Or fetch the bank's full published table:
curl "https://allratestoday.com/api/v1/central-bank/ecb/latest" \
-H "Authorization: Bearer art_live_your_key" On paid plans, any historical date or time series — for example the ECB rate to apply for an invoice dated June 30:
curl "https://allratestoday.com/api/v1/central-bank/ecb/2026-06-30?source=USD&target=EUR" \
-H "Authorization: Bearer art_live_your_key" Published vs derived — always explicit
If a bank doesn't publish your pair directly, the API resolves it from the bank's own table: the inverse pair, or a cross rate via the bank's home currency (USD→JPY from the ECB's EUR→USD and EUR→JPY, for instance). Every such result returns "derived": true and the method used — so you always know whether a number was printed by the central bank or calculated from what it printed. For strict compliance work, use the pairs the bank publishes; the derived flag makes the difference impossible to miss.
Weekends and holidays behave the way auditors expect: the API returns the most recent published table with its true rate_date and a published_on_requested_date flag, because the applicable official rate on a Sunday is Friday's.
What's on which plan
- All plans (including the free tier):
/central-bankscoverage list and/latestfor every covered bank — full table or single pair - Paid plans: any historical date (
/{bank}/2026-06-30) and daily time series (/{bank}/history, up to 5,000 rows per request)
Every central-bank request counts as one API call against the same monthly quota as the core rates API (300/month on the free tier) — one key, one plan, one bill. History is metered by volume: one API call per currency per month of data (a one-year single-pair series is 12 calls; each response reports the charge in billed_requests). Central bank rates change once per business day, so caching a day's table locally makes a small quota go a very long way.
Built for
- Invoicing & accounting — apply the official rate for the invoice date, automatically
- Tax & customs — cite the exact published rate authorities expect
- Audit & reporting — reproducible historical tables that never change after publication
- ERP integrations — one JSON API instead of scraping central bank websites
Frequently asked questions
What is a central bank exchange rate API?
An API returning the official rates central banks publish — the fixed daily reference numbers compliance rules cite — rather than live market prices.
How is this different from your live rates API?
The core API serves real-time mid-market rates that move continuously. This API serves the once-per-business-day tables the banks themselves publish. Many workflows need both — same key covers both.
Can I get the rate for a past date, like an invoice date?
Yes — request any date and you get the bank's official table for it, or a daily time series for one pair. Archives run deep: ECB back to 1999, Nigeria to 2001, India to 2003, Sri Lanka to 2010. Historical data is on paid plans; the latest table is free.
What about weekends and holidays?
You get the most recent published table with its true rate_date — the rate that legally applies on non-business days.
Can I get more banks added?
Yes — coverage is expanding, prioritized by request. Ask for the bank you need.
Try it without an API key
Swap ecb for any source code in the table above. No API key, no sign-up, CORS open — so it works from a browser as well as a server. Every source's most recently published table is available this way, either in full or narrowed to one pair with ?source=&target=.
curl "https://allratestoday.com/api/open/central-bank/ecb?source=USD&target=EUR" {
"bank": "ecb",
"rate_date": "2026-08-28",
"source": "USD",
"target": "EUR",
"rate": 0.8588851671,
"rate_type": "reference",
"derived": true,
"method": "inverse"
} rate_date is the publisher's own date, not today's: most sources publish on business days only, so a weekend request returns the last table actually published. derived: true means the institution does not publish that pair directly and it was cross-computed within its own table. Free to use with a visible attribution link back to this site. Historical dates, time series and publication calendars need a free API key.
SDKs
Dedicated clients for these official rates, in JavaScript and Python. Both are keyless by default — latest() returns any source's newest published table with no API key — and both are zero-dependency. Methods that need a key say so before making a request.
npm install @allratestoday/central-bank pip install allratestoday-central-bank import { CentralBankRates } from '@allratestoday/central-bank';
const cb = new CentralBankRates(); // no API key
const pair = await cb.latest('ecb', { source: 'USD', target: 'EUR' });
console.log(pair.rate, 'published', pair.rate_date); npm · PyPI · MCP server for AI agents · freshness feed
Building something automated on these rates? GET /api/open/central-banks
(keyless) lists every source's latest publication date with a
stale flag, and each rate response carries age_days —
so a lagging source is detectable by your pipeline, not just by us.
Official central bank rates, one API key
Latest rates on every plan. History back to 1999 on paid plans. Every request counts toward your monthly quota.
Get Free API Key Read the Docs