Finance teams translating foreign currency amounts work with two kinds of rates: the closing rate, a snapshot at the end of a period, and the average rate, a summary of a whole period. Choosing the wrong one – or computing an average inconsistently – creates differences that auditors will ask about. This page explains closing rate vs average rate, where each is typically used under IFRS and US GAAP, and how to calculate averages with an API.
A closing rate is the spot exchange rate at the end of a reporting period. An average rate is the mean of the exchange rates over a period such as a month or quarter. Closing rates are generally used for balance sheet items at the reporting date; average rates are commonly used to approximate transaction-date rates for income and expenses.
Not accounting advice. This article explains concepts at a high level for engineers and analysts building finance systems. The authoritative requirements are in the standards themselves; your accounting policy and auditor decide which rates, sources and cut-off times apply to your company.
Closing rate vs average rate at a glance
| Aspect | Closing rate | Average rate |
|---|---|---|
| Definition | Spot rate at the end of the reporting period | Mean of rates over a period |
| Point in time | One moment (e.g., 31 Dec, end of day) | A span (month, quarter, year) |
| Typically used for | Monetary items and translated balance sheets | Income and expenses as an approximation of transaction-date rates |
| Data you need | One historical rate per currency | Every daily rate in the period |
| fxapi endpoint | /v1/historical | /v1/average |
What IAS 21 and ASC 830 say (high level)
IAS 21 The Effects of Changes in Foreign Exchange Rates, issued by the IFRS Foundation’s International Accounting Standards Board, defines the closing rate as the spot exchange rate at the end of the reporting period. In broad terms it sets out three situations:
- Recording a foreign currency transaction. The transaction is initially recorded at the spot rate on the transaction date. For practical reasons, a rate that approximates the actual rate – for example an average rate for a week or a month – is often used for all transactions in that period, but not if exchange rates fluctuate significantly.
- Reporting at the end of each period. Foreign currency monetary items (cash, receivables, payables, loans) are translated at the closing rate. Non-monetary items at historical cost stay at the rate on the transaction date.
- Translating into a presentation currency. For a foreign operation, assets and liabilities are translated at the closing rate; income and expenses at the rates on the transaction dates. An average rate for the period is often used as an approximation, again unless rates fluctuate significantly. Resulting differences go to other comprehensive income.
US GAAP’s ASC 830 Foreign Currency Matters follows a similar logic for translating a foreign entity’s statements: assets and liabilities at the current (balance sheet date) rate, revenues and expenses at the rates when they were recognized, with appropriately weighted average rates permitted as a practical method.
The IASB has also amended IAS 21 for currencies that are not exchangeable (the “Lack of Exchangeability” amendments), effective for annual reporting periods beginning on or after 1 January 2025, according to the IFRS Foundation. If you report in or from currencies with exchange controls, review those requirements with your advisors.
When each rate is used in practice
| Item | Rate typically used |
|---|---|
| Sales invoice in foreign currency, at booking | Spot rate on transaction date, or a period average as approximation |
| Open receivables and payables at month-end | Closing rate (revaluation) |
| Foreign bank balances at month-end | Closing rate |
| Subsidiary’s balance sheet into group currency | Closing rate |
| Subsidiary’s income statement into group currency | Transaction-date rates, often a monthly average |
| Fixed assets bought in foreign currency | Historical rate at acquisition |
| Equity components | Historical rates |
Many groups publish an internal rate table each month: one closing rate and one average rate per currency, distributed to every entity and loaded into the ERP. An API makes that table reproducible – see accounting and financial reporting and ERP integration.
How to compute a monthly average rate
An average sounds simple, but four decisions change the result:
- Which days count? All calendar days or business days only. Weekend values typically differ little from Friday’s, but including them changes the weighting.
- Which daily rate? End-of-day rates are the usual input; the cut-off time and time zone must be consistent month to month. See end-of-day vs real-time rates.
- Which direction? Averaging EUR→USD rates and inverting the result is not the same as averaging USD→EUR rates, because the mean of inverses differs from the inverse of the mean. Convert daily rates to your reporting base first, then average.
- Simple or weighted? A simple arithmetic mean treats each day equally. A transaction-weighted average weights days by volume; ASC 830 refers to appropriately weighted averages. Most rate tables use simple means.
A small illustrative example (business days only, illustrative values):
day EUR→USD
Mon 1.0800
Tue 1.0850
Wed 1.0900
Thu 1.0880
Fri 1.0870
average (1.0800 + 1.0850 + 1.0900 + 1.0880 + 1.0870) ÷ 5 = 1.0860
min 1.0800 · max 1.0900 · range 0.9 %
The min and max help with the “fluctuate significantly” question: if the range within a month is large, an average may not approximate transaction-date rates well, and your policy may require daily rates instead.
Example: closing and average rates with fxapi
Closing rate for 31 December 2025 in EUR terms – one call to /v1/historical, which returns end-of-day values (UTC):
curl -G "https://api.fxapi.com/v1/historical" \
-d date=2025-12-31 \
-d base_currency=EUR \
-d currencies=USD,GBP,CHF \
-H "apikey: $FXAPI_KEY"
Monthly averages for all of 2025 – one call to /v1/average. fxapi converts the daily rates to your base currency first, then averages them; each period returns the average value, min, max and the number of days. The first and last periods are clipped to your date span, and spans can be up to 1,830 days. The endpoint is available on every plan, including Free, and costs one request.
import csv, io, os
import requests
resp = requests.get(
"https://api.fxapi.com/v1/average",
params={
"base_currency": "EUR",
"currencies": "USD,GBP,CHF",
"date_from": "2025-01-01",
"date_to": "2025-12-31",
"period": "month", # month | quarter | year | total
"format": "csv",
},
headers={"apikey": os.environ["FXAPI_KEY"]},
timeout=30,
)
resp.raise_for_status()
# CSV columns: period,date_from,date_to,days,source,base_currency,currency,average,min,max
for row in csv.DictReader(io.StringIO(resp.text)):
spread = (float(row["max"]) - float(row["min"])) / float(row["average"]) * 100
print(row["period"], row["currency"], row["average"], f"range {spread:.2f} %")
The output drops straight into a rate table, a spreadsheet (Excel guide) or an ERP import. For more on the endpoint, see the average exchange rates API and the historical exchange rates API.
Key takeaways
- Closing rate = spot rate at period end; average rate = mean over a period.
- Balance sheet items are generally translated at closing rates; income and expenses at transaction-date rates, often approximated by an average.
- Define your averaging method once – days counted, cut-off time, direction, weighting – and apply it consistently.
- Store the rate table and its source with each close so every number can be traced. For background on rate data, read what is an exchange rate API.
Want to try it? fxapi is a foreign exchange rates 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 the difference between a closing rate and an average rate?
When is the average rate used in financial statements?
How do you calculate a monthly average exchange rate?
/v1/average does this in one request and also returns the min and max.