When a developer asks "where does the data come from?", they are usually not asking out of curiosity. They are asking because an auditor, compliance officer, or product manager wants to know if the rates in their application are legally defensible. The data source determines everything: accuracy, update frequency, auditability, and whether you can use it in regulated financial applications.
The Four Tiers of Exchange Rate Data
Tier 1: Central Banks (Most Authoritative)
The ECB, Federal Reserve, Bank of England, and other central banks publish official reference rates. These are the gold standard for regulatory and tax reporting.
- ECB: ~30 currencies, updated daily at 16:00 CET
- Federal Reserve: ~25 currencies, updated daily at 12:00 ET
- Limitations: Very few currencies, once-daily updates, published with delays
- Best for: Accounting, tax filings, regulatory compliance
Tier 2: Licensed Financial Data Providers (Production-Grade)
Refinitiv, Bloomberg, and ICE provide real-time interbank rates sourced directly from Tier 1 banks and market makers. These feeds cost thousands per month when accessed directly.
- Coverage: 150–200+ currencies
- Update frequency: Seconds to minutes
- Data type: Mid-market (interbank) rates
- Best for: Trading, payments, e-commerce, any production app
Tier 3: Aggregated / Derived Data (Varies Widely)
Some APIs aggregate rates from multiple unnamed sources, apply their own averaging, or derive rates from commercial services. Quality varies dramatically.
- Transparency: Often unclear which sources are used
- Risk: May include retail spreads or outdated data
- Best for: Non-critical displays, hobby projects
Tier 4: Scraped / Unverified Data (Not Recommended)
Some free APIs scrape exchange rates from public websites or other APIs. No provenance, no audit trail, may violate terms of service.
- Reliability: Can break without notice
- Legal risk: May violate ToS of scraped sources
- Best for: Personal projects only
What Major APIs Actually Use
| API | Primary Source | Tier | Disclosed? |
|---|---|---|---|
| AllRatesToday | institutional interbank market data / Interbank feeds | Tier 2 | Yes |
| Frankfurter | European Central Bank (ECB) | Tier 1 | Yes |
| Open Exchange Rates | "Multiple commercial sources" | Tier 2–3 | Partially |
| ExchangeRate-API | "Central Banks and financial institutions" | Tier 1–3 | Partially |
| Fixer.io | "ECB and commercial feeds" | Tier 1–3 | Partially |
| CurrencyAPI | Not specified | Unknown | No |
Key insight: Many APIs use vague language like "multiple commercial sources" without naming them. If you need data that will withstand an audit, look for APIs that explicitly name their sources.
Why Data Source Matters for Compliance
Financial Reporting (IFRS / GAAP)
IFRS and GAAP require that exchange rates used in financial statements be traceable to a recognized source. Central Bank rates (Tier 1) are always accepted. Rates from a named provider like Reuters (Tier 2) are typically accepted. Rates from unnamed sources may be challenged by auditors.
Payment Services (PSD2)
In the EU, PSD2 requires transparency in currency conversion. If you process cross-border payments, you must disclose the exchange rate and its source. Using an API that doesn't disclose its source makes this impossible.
Tax Reporting
Tax authorities accept Central Bank rates or recognized market rates. Using rates from an undisclosed source could result in rejected filings.
How AllRatesToday Sources Its Data
AllRatesToday publishes two kinds of rates. Real-time mid-market rates are aggregated from institutional interbank market data; official rates are collected from the publication of each of 116 central banks and tax authorities (Tier 1). For the real-time feed:
- Source: Tier 2 — aggregated institutional interbank market data
- Rate type: Mid-market (interbank) — no spread or markup
- Coverage: 160+ currencies
- Update frequency: Every 60 seconds
- Comparable to: the mid-market rate shown by Google Finance and XE
The API response includes timestamps for every rate, giving you a verifiable audit trail:
{
"source": "USD",
"target": "EUR",
"rate": 0.9234,
"time": "2026-04-09T14:30:00Z"
}
For audit trails: Store the rate, timestamp, and source currency pair for every conversion your application performs.
Choosing the Right Source for Your Use Case
| Use Case | Recommended Source | Why |
|---|---|---|
| Financial statements | Central Bank (Tier 1) | Required by IFRS/GAAP |
| Tax reporting | Central Bank (Tier 1) | Accepted by all tax authorities |
| Payment processing | Reuters/Refinitiv (Tier 2) | Real-time accuracy, named source for PSD2 |
| E-commerce pricing | Reuters/Refinitiv (Tier 2) | Live rates prevent margin erosion |
| Dashboard / display | Tier 1 or Tier 2 | Either works |
Questions to Ask Your API Provider
- What is the primary data source? Accept named sources (ECB, Reuters, Bloomberg). Be wary of "multiple sources" without specifics.
- Are the rates mid-market or retail? Mid-market = no spread. Retail = hidden markup.
- How often is the data refreshed from the source? Not how fast the API responds — how fresh the underlying data is.
- Can I get a data provenance statement? For regulated industries, you may need written confirmation.
- What happens if the source goes down? Stale data, errors, or failover?
AllRatesToday sources mid-market rates from institutional interbank market data. Named source, timestamped responses, audit-ready data. Free tier available.
Get your free API key | Documentation | GitHub
Written by the team behind AllRatesToday — an exchange rate API with real-time mid-market rates for 150+ currencies and the official published rates of 116 central banks and tax authorities, with keyless open endpoints for the central-bank data. Browse the API docs or grab a free key to start building.
Open source: official SDKs for JavaScript, Python, PHP, Go and Rust,
plus an MCP server (@allratestoday/mcp-server) for AI agents.
Follow along: GitHub
Top comments (0)