Search for "best exchange rate API" and you'll find tables comparing free tiers, currency counts and update intervals. These are useful, but they skip the first question: which kind of rate are you actually after?
Step 1: name the rate
| You are building... | You need... |
|---|---|
| A price display, converter, dashboard or travel app | Mid-market: live, frequently refreshed |
| Invoicing, VAT, customs, payroll, statutory accounts | Official: from the named central bank or tax authority, with its date |
| Remittance comparison, "what will I receive", treasury | Bank boards: buy and sell from real banks |
| A fintech or ERP product that does all of the above | All three, consistently |
If you need more than one, pick a provider that serves all of them. Otherwise you will be reconciling three sets of field names, auth methods and outage pages.
Step 2: check the details that bite later
- Timestamps on every value. A rate with no time or date can't be audited.
- The source's own date for official rates, including what happens on weekends and holidays.
- No silent mixing. If a cross rate is computed, the response should say so.
- History in the formats your finance team uses (CSV, XLSX), not just JSON.
- Batching. Many currencies in one request, billed as one call.
- Error shapes and status pages. Read them before you need them.
Step 3: try it with your real pair
Don't evaluate with USD/EUR alone. Try the currency your customers actually use, such as LKR, NGN, KZT or PEN, in all the layers you need.
Where AllRatesToday fits
We built AllRatesToday because no other API we could find covered the last row of that table. One key gives you:
- Real-time mid-market rates: 160+ currencies, refreshed every 60 seconds (
/api/v1/rates). - Official rates: 123 central banks and 6 tax authorities (HMRC, IRS, US Treasury, Swiss customs, SUNAT, India CBIC), with history (
/api/v1/central-bank/...). - Commercial bank boards: buy and sell from 1,219 banks in 124 countries (
/api/v1/bank-rates/...).
Every endpoint shares the same key and JSON conventions, and supports JSON, CSV, XML and XLSX output. SDKs are available for JavaScript, Python, PHP and Go, plus an MCP server for AI agents.
curl -H "Authorization: Bearer $KEY" "https://allratestoday.com/api/v1/rates?source=USD&target=NGN" curl -H "Authorization: Bearer $KEY" "https://allratestoday.com/api/v1/central-bank/cbn/latest?source=USD&target=NGN" Docs: allratestoday.com/docs · Free key: allratestoday.com/register
