Tutorial · Power BI

Exchange rates in Power BI

Pull daily exchange rates into Power BI with Power Query and convert multi-currency sales into one reporting currency.

Updated October 1, 2026 · 1 min read

1. Load the latest rates

In Power BI Desktop: Get Data → Blank Query → Advanced Editor, and paste:

let
    Source = Json.Document(Web.Contents(
        "https://api.currencyapi.com/v3/latest",
        [Query = [base_currency = "USD"], Headers = [apikey = "YOUR-API-KEY"]]
    )),
    Data = Record.ToTable(Source[data]),
    Rates = Table.ExpandRecordColumn(Data, "Value", {"code", "value"}, {"Currency", "Rate"}),
    Typed = Table.TransformColumnTypes(Rates, {{"Rate", type number}})
in
    Typed

2. Load a daily history

The range endpoint returns a series of daily rates:

let
    Source = Json.Document(Web.Contents(
        "https://api.currencyapi.com/v3/range",
        [Query = [base_currency = "USD", currencies = "EUR,GBP,JPY",
                  datetime_start = "2026-01-01", datetime_end = "2026-09-30"],
         Headers = [apikey = "YOUR-API-KEY"]]
    )),
    Days = Table.FromList(Source[data], Splitter.SplitByNothing(), {"Day"}),
    Expanded = Table.ExpandRecordColumn(Days, "Day", {"datetime", "currencies"}),
    Rows = Table.ExpandListColumn(Table.AddColumn(Expanded, "Items", each Record.ToList([currencies])), "Items"),
    Final = Table.ExpandRecordColumn(Rows, "Items", {"code", "value"}, {"Currency", "Rate"}),
    Typed = Table.TransformColumnTypes(Final, {{"datetime", type date}, {"Rate", type number}})
in
    Table.RemoveColumns(Typed, {"currencies"})

3. Convert sales to USD

Relate the rates table to your sales by date and currency (or merge the queries), then add a measure:

Sales USD = SUMX(Sales, Sales[Amount] / RELATED(Rates[Rate]))

With USD as the base, dividing by the rate converts each amount into US dollars.

The range endpoint is part of the Medium plan and above; with the free plan, load single days with the historical endpoint. See pricing.

Frequently asked questions

Does Power BI have built-in exchange rates?

No. You need to import rates from a source such as an exchange rate API, a central bank file or a database table, and then relate them to your transactions by date and currency.

How do I refresh exchange rates automatically in Power BI?

Publish the report to the Power BI service and set up a scheduled refresh. The Power Query source calls the API on every refresh.

Exchange rate API

Get these rates in your app

currencyapi delivers real-time and historical exchange rates for 170+ currencies, crypto and metals as JSON, updated as often as every 60 seconds.

Read the documentation

300 free requests every month. No credit card required.

GET https://api.currencyapi.com/v3/latest?base_currency=USD&currencies=EUR,GBP,JPY

{
  "meta": { "last_updated_at": "2026-09-30T23:59:59Z" },
  "data": {
    "EUR": { "code": "EUR", "value": 0.8828 },
    "GBP": { "code": "GBP", "value": 0.7556 },
    "JPY": { "code": "JPY", "value": 157.98 }
  }
}

Keep reading

Get your free currency API key

Start with 300 free requests a month