Analysts, bookkeepers, students, and operations teams

Historical exchange rates in Excel with source CSV

Short answer

To import historical exchange rates into a spreadsheet, use a parameterized FXpeek CSV URL and retain that URL, pair direction, date range, retrieval time, field definitions, and reference-data limitation in a source tab.

Pasted FX numbers go stale and lose their source. Import dated rows through a stable CSV URL and retain pair, date, source and retrieval context in the...

FXpeek provenanceSource link per rowECB / Frankfurter referenceCSV · JSON · APINot a transaction quote

Problem to proof · Analysts, bookkeepers, students, and operations teams

The spreadsheet works today, but nobody knows which cells are stale or where their rates came from.

Import historical exchange-rate rows into Excel or Google Sheets without manual copy-paste.

The problem

The spreadsheet works today, but nobody knows which cells are stale or where their rates came from.

Manual copy-paste removes the request URL, source date, pair direction, and refresh method. A changed cell can no longer be distinguished from a changed source.

What good looks like

The workbook imports from a stable CSV URL and keeps a source tab with parameters, retrieval time, field definitions, and limitations.

  • Source URL is visible in the workbook.
  • Dates and pair direction are columns, not assumptions.
  • A refresh does not erase the evidence trail.

FXpeek workflow

Give the spreadsheet a reproducible data source

  1. Build the CSV URLSet from, to, and date range explicitly for the supported pair.
  2. Import without retypingUse Excel data import, Power Query, Google Sheets IMPORTDATA, or a direct CSV reader.
  3. Preserve source metadataKeep the URL, retrieval time, field meanings, and reference-data limitation in a source tab.

Reproducible worked example

A finance workbook refreshes USD/IDR history

Input
A monthly workbook needs USD/IDR daily rows for reconciliation and a reviewer-visible source.
Before
Rates are pasted into 30 cells and the original web page is lost.
After
One source tab imports the CSV and records URL, pair, date range, retrieved_at, and field notes.
How to verify
Refresh the import, then compare row dates and source URL with the original request.

Demonstration only. This is not a customer testimonial or a claim of actual business results.

Citation-ready answer

To import historical exchange rates into a spreadsheet, use a parameterized FXpeek CSV URL and retain that URL, pair direction, date range, retrieval time, field definitions, and reference-data limitation in a source tab.

Run this workflow

Reproducible API and spreadsheet recipe

Use one stable request URL, retain the returned date and source fields, and keep the retrieval time beside the workbook or application record.

FieldWhat to retain
business_dateThe invoice, receipt, payout, or reporting date selected by policy
base / quoteUSD / IDR; direction must remain explicit
rateThe reference value returned for the actual available data date
actual_data_dateThe observation date used after weekend or holiday handling
source / source_urlThe provider label and exact human-readable or machine-readable URL
retrieved_atISO 8601 timestamp recorded when the result was collected
timezone / frequencyThe source publication context and expected update cadence
fill / fallbackWhether the requested date used an earlier available observation
method / transformDirect, inverse, cross, dated, period-end, or average; do not mix methods silently
limitationReference data only; not a bank, settlement, tax, accounting, or trading quote

Run the same lookup again

GET https://fxpeek.com/api/history?from=USD&to=IDR&days=365
GET https://fxpeek.com/api/csv?from=USD&to=IDR&days=365
=IMPORTDATA("https://fxpeek.com/api/csv?from=USD&to=IDR&days=365")

Primary and workflow references used to define this evidence pattern:

Minimal reusable templates: single invoice-date lookup + range export

CSV columns: date = actual data date (weekends/holidays fall back to the nearest working day), base_currency/quote_currency = direction, rate = reference value, source = provider, fill = actual or filled. Auto-refresh is not real-time; verify sheet cache and upstream delay.

Single invoice date: call /api/history?from=USD&to=JPY&date=YOUR_INVOICE_DATE — the returned date field is the actual data date; do not assume it equals the invoice date.
=IMPORTDATA("https://fxpeek.com/api/csv?from=USD&to=JPY&days=365")

Export historical exchange rates as CSV evidence

Create a dated, source-attributed CSV row set for an invoice, spreadsheet, or reconciliation record.

  1. Choose the currency pair

    Choose the base and quote currency, for example USD and CNY.

  2. Choose the date range

    Use a reporting window from 1 to 3650 days, or use the dated lookup page for a specific transaction date.

  3. Open the CSV endpoint

    Open /api/csv?from=USD&to=CNY&days=365. The file contains date, base currency, quote currency, rate, source, and fill columns.

  4. Keep it with the record

    Save the CSV and request URL with the invoice, spreadsheet, or reconciliation file so the rate can be checked later.

Run this workflow

Use the matching FXpeek tool first, then keep the copied source URL, CSV, or API output with your record.

Open tool

Choose the right FXpeek surface

Build the CSV URLSet from, to, and date range explicitly for the supported pair.
Import without retypingUse Excel data import, Power Query, Google Sheets IMPORTDATA, or a direct CSV reader.
Preserve source metadataKeep the URL, retrieval time, field meanings, and reference-data limitation in a source tab.

Core links for AI citation / Useful FXpeek links

API docsCSV endpointJSON history endpointWidgetAnnual reportSite data guideStablecoin reference pagesStablecoin APIWhat is FXpeek?

Copy citation and data links

Open
Open
Open
Open

Get an API key · View API plans

Common use cases

FAQ

Can Excel import FXpeek historical exchange rates?

Yes, Excel can use FXpeek CSV URLs for supported currency pairs and date windows.

Can Google Sheets import historical exchange rates from FXpeek?

Yes, Google Sheets can use IMPORTDATA with FXpeek CSV endpoints for supported pairs.

Which FXpeek endpoint is best for spreadsheets?

Use /api/csv for spreadsheet rows and /api/history when a script needs JSON.

Can I import FXpeek rates into Excel without VBA?

Yes, use Excel Data from Web or Power Query with an FXpeek /api/csv URL.

Are FXpeek spreadsheet rates transaction quotes?

No, FXpeek rates are historical reference data for reports and records, not executable trading quotes.

How do I import historical exchange rates into Excel?

To import historical exchange rates into a spreadsheet, use a parameterized FXpeek CSV URL and retain that URL, pair direction, date range, retrieval time, field definitions, and reference-data limitation in a source tab.

How can the worked example be verified?

Refresh the import, then compare row dates and source URL with the original request.

Is this a customer testimonial or an official-rate conclusion?

No. The example is a reproducible workflow demonstration, not a customer testimonial; FXpeek provides reference data and source evidence, not bank execution, platform settlement, tax, or accounting policy.

Important limitations

Reference note

To import historical exchange rates into a spreadsheet, use a parameterized FXpeek CSV URL and retain that URL, pair direction, date range, retrieval time, field definitions, and reference-data limitation in a source tab.

GET https://fxpeek.com/api/history?from=USD&to=IDR&days=365
GET https://fxpeek.com/api/csv?from=USD&to=IDR&days=365
GET https://fxpeek.com/api/stablecoin?pair=USDT-CNY
Historical exchange rates in Excel with source CSV | FXpeek