Skip to content
Data freshness

End-of-day exchange rates vs real-time rates

Daily closing values, hourly snapshots and minute-level updates each have a job. Learn what an end-of-day exchange rate is, how cut-off times work, and how to pick the right refresh frequency.

Last updated: · fxapi team

“What was the exchange rate on March 3?” sounds like a question with one answer. It isn’t: the euro–dollar rate moves thousands of times on a busy day. To give a single answer, data providers publish an end-of-day exchange rate – a value taken at a defined cut-off. Real-time and intraday data answer a different question: what is the rate now, or at 14:15? Knowing which one you need saves quota and prevents subtle reporting differences.

An end-of-day exchange rate is the rate recorded at a fixed cut-off time at the end of a trading day and used as that day’s representative value. Because FX trades around the clock on weekdays, the value depends on the provider’s cut-off time and time zone – for fxapi’s historical data, the end of the day in UTC.

What an end-of-day exchange rate means in a 24-hour market

Stock exchanges open and close. The foreign exchange market does not: it is an over-the-counter market that follows the sun from Asia–Pacific through Europe to North America from Monday morning in Asia to Friday evening in New York. There is no universal “close”, so every end-of-day series is a convention:

Publisher typeTypical cut-offNotes
fxapi historical dataEnd of day, UTC/v1/historical returns end-of-day values for the requested date
Central bank reference ratesFixed local timeThe ECB’s euro reference rates reflect a concertation around 14:10 CET and are published around 16:00 CET, for information purposes only
Your own ERP or bankVariesOften local midnight or a bank’s internal fixing time

Two series can both be correct and still differ, simply because one is taken at 14:10 Frankfurt time and the other at 23:59:59 UTC. When you reconcile numbers from two systems, compare cut-off times first.

Dates are UTC

fxapi timestamps are ISO 8601 in UTC – for example "last_updated_at": "2026-10-01T23:59:59Z" for an end-of-day value. A transaction made at 20:00 in New York on 1 October falls on 2 October in UTC (00:00Z). If your business books by local date, convert the timestamp to UTC (or define your policy) before choosing which day’s rate to apply.

Real-time and intraday rates

“Real-time” means different things in different products:

TermWhat you getTypical consumer
Tick data / streamingEvery quote change, bid and ask, via a streaming connectionTrading desks, market makers
Real-time snapshotLatest mid-market rate, refreshed on a schedule (e.g., every 60 s)Apps, checkouts, wallets, dashboards
Intraday historySnapshots at hourly, 15-minute or minute intervalsAnalytics, auditing payment times
End-of-dayOne value per dayReporting, invoicing, accounting

A reference-rate API such as fxapi provides the second, third and fourth rows. It is not a trading feed: there is no bid/ask and no order execution. For most software, a 60-second snapshot is indistinguishable from “live” – and far simpler to integrate. See the real-time exchange rate API for details.

Intraday data in fxapi

On Professional and Enterprise, /v1/range returns time series at several granularities:

accuracyData availableMax span per request
minuteLast 7 days6 hours
quarter_hourLast 7 days24 hours
hourLast 3 months7 days
dayBack to 1999366 days
weekWeek-end (Sunday) values1,830 days
monthMonth-end values, back to 1999Any span

Use intraday data when you need the rate at the moment a payment was authorized, or to chart how a currency moved during a volatile session. The time series API page covers CSV export and charting.

Choosing a refresh frequency

Match freshness to the business decision, not to what is technically possible:

Use caseRecommended dataWhy
Monthly reporting, closing ratesEnd-of-dayOne auditable value per day
Invoices and bookkeepingEnd-of-day for the invoice dateReproducible later
Catalog prices in local currencyDaily or hourlyPrices shouldn’t jitter for shoppers
Checkout and payment quotesHourly or every 60 sLimits drift between quote and settlement
Wallets, remittance, treasury dashboardsEvery 60 sUsers compare against live market rates
Post-hoc audit of a payment providerIntraday historyCompare at the authorization time

Plan mapping

fxapi planLatest-rate updatesIntraday history (/v1/range)Requests / month
FreeDaily–300
BasicHourly–15,000
ProfessionalEvery 60 secondsYes600,000
EnterpriseEvery 60 secondsYes1,700,000

All plans include end-of-day historical data back to 1999-01-01. Polling faster than your plan refreshes returns the same values and spends quota, so set your cache lifetime to the update interval – see caching exchange rates and the pricing page.

Example: compare today’s rate with yesterday’s close

This Python snippet fetches the latest EUR→USD rate and the previous day’s end-of-day value, then prints the change. It works on every plan.

import os
from datetime import date, timedelta
import requests

API = "https://api.fxapi.com/v1"
HEADERS = {"apikey": os.environ["FXAPI_KEY"]}
PARAMS = {"base_currency": "EUR", "currencies": "USD"}

def get(path, **extra):
    r = requests.get(f"{API}/{path}", params={**PARAMS, **extra}, headers=HEADERS, timeout=10)
    r.raise_for_status()
    return r.json()

latest = get("latest")
yesterday = (date.today() - timedelta(days=1)).isoformat()
close = get("historical", date=yesterday)

now_rate = latest["data"]["USD"]["value"]
eod_rate = close["data"]["USD"]["value"]
change = (now_rate / eod_rate - 1) * 100

print(f"latest {now_rate:.5f} (as of {latest['meta']['last_updated_at']})")
print(f"close  {eod_rate:.5f} ({yesterday}, end of day UTC)")
print(f"change {change:+.3f} %")

For changes over longer windows, /v1/fluctuation returns start_rate, end_rate, change and change_pct per currency in a single call, on every plan.

Key takeaways

  • An end-of-day rate is a convention: always know the cut-off time and time zone. fxapi uses end of day in UTC.
  • “Real-time” in a rate API means frequent snapshots, not a trading stream.
  • Choose freshness by use case: end-of-day for books, hourly for catalogs, 60 seconds for payments and wallets.
  • Cache for your plan’s update interval. New to rate APIs? Start with what is an exchange rate API; for accounting cut-offs see closing vs average exchange rates.

Want to try it? fxapi is a foreign exchange rate API that returns live and historical rates for 190+ currencies as JSON – free for up to 300 requests a month.

Frequently asked questions

What is an end-of-day exchange rate?
It is the exchange rate recorded at a defined cut-off time at the end of a day, used as that day’s single representative rate. fxapi’s historical endpoint returns end-of-day values in UTC.
Is the end-of-day rate the same as the closing rate?
They are closely related. The FX market trades around the clock on weekdays, so there is no single global close; each data provider defines a cut-off time and time zone. In accounting, the closing rate is the spot rate at the end of the reporting period.
How often do real-time exchange rates update?
For reference-rate APIs, real time means frequent snapshots rather than a tick stream. fxapi updates every 60 seconds on Professional and Enterprise, hourly on Basic and daily on Free.
Do I need real-time exchange rates?
Only if prices or conversions must track the market within minutes, such as wallets, payments or treasury dashboards. Reporting, invoicing and most catalog pricing work well with hourly or daily rates.
Can I get intraday historical exchange rates?
Yes, on Professional and Enterprise. fxapi’s /v1/range returns hourly data for the last 3 months, and 15-minute or minute data for the last 7 days.
Free plan · no credit card

Get your free exchange rate API key

300 requests a month, latest and historical rates, fluctuation and averages – free forever. Upgrade when you need faster updates or more requests.