Exchange Rates API for Dynamics 365 Business Central: Official Central Bank Rates

Import official central-bank and tax-authority exchange rates into Dynamics 365 Business Central: the built-in Currency Exchange Rate Service (no code), an open-source AL extension, or Power Automate. Field mapping for both quoting directions.

By Madhushan, Founder & Lead Developer ·

Which endpoint: every guide below reads the bank's latest published table from GET /api/v1/central-bank/{bank}/latest (free key, one call per fetch) or the keyless evaluation copy at /api/public/central-bank/{bank}?format=json. Add ?source=USD&target=EUR for one resolved pair, format=xml or format=csv for importers that do not read JSON, and api_key= on the URL when the importer cannot send headers. Bank codes are on the central bank coverage map.

Three ways to get official rates into Business Central

MethodInstallAuthBest for
Built-in Currency Exchange Rate Service (this guide)None. Standard BC feature since NAV 2015.API key on the URLAny tenant, including ones where you cannot install extensions.
Open-source AL extensionCompile and publish from VS Code (MIT licence, no dependencies).Bearer key in Isolated StoragePartners who want the import, job queue entry and run diagnostics as an app, and the key out of the URL.
Power Automate / custom connectorFlow using the HTTP action or our Power Platform connector.Bearer keyTeams already orchestrating BC from Power Platform, or pushing to several companies.

All three read the same endpoint and write the same Currency Exchange Rates lines, dated with the bank's publication date. There is no AppSource subscription to buy: a free key covers the latest table, and the Official Rates plan adds full history and publication-date lookups for audit work.

How Business Central imports rates

Business Central has a built-in importer, the Currency Exchange Rate Service, that fetches a URL on a schedule and maps nodes of the response onto the Currency Exchange Rates table. It has been in the product since NAV 2015 and needs no extension. Its two limits matter here: it reads XML, and it cannot add request headers. Both are covered by format=xml and api_key= on the URL.

1. Build the feed URL

Pick the bank whose rate your jurisdiction requires and put your key on the query string:

https://allratestoday.com/api/v1/central-bank/ecb/latest?format=xml&api_key=art_live_your_key

The response is the bank's full latest table:

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <bank>ecb</bank>
  <name>European Central Bank</name>
  <rate_date>2026-09-16</rate_date>
  <rates>
    <rate><base>EUR</base><quote>USD</quote><type>reference</type><value>1.1537</value></rate>
    <rate><base>EUR</base><quote>GBP</quote><type>reference</type><value>0.8574</value></rate>
    ...
  </rates>
</response>

2. Create the service

  1. Search for Currency Exchange Rate Services and choose New.
  2. Give it a code such as ECB-OFFICIAL, paste the URL from step 1 into Service URL, and choose Preview. Business Central fetches the feed and shows the XML tree.
  3. On the Field Mapping FastTab, set the Parent Node to the repeating rate element, then map the fields as in the table below.
  4. Enable the service. Set the Job Queue entry to run after the bank's publication time so each run picks up the new table (the ECB publishes around 16:00 CET; the schedule for every source is on its bank page).

3. Field mapping

Business Central stores each rate as Exchange Rate Amount in the foreign currency against Relational Exch. Rate Amount in your local currency. Which of our fields goes where depends on which side the bank quotes.

Business Central fieldBank quotes foreign per 1 home (ECB, BoE, RBA)Bank quotes home per 1 foreign (RBI, CBN, BSP)
Currency Codequotebase
Starting Daterate_date (document level)rate_date (document level)
Exchange Rate Amountvalue1
Relational Exch. Rate Amount1value

Use the left column when your local currency is the bank's home currency and the bank quotes outward, for example a Eurozone company on the ECB. Use the right column for banks that quote their own currency per unit of foreign currency. The direction is printed on every bank page under Latest published rates. Constants such as 1 go in the Default Value column of the mapping rather than a node.

4. Check the first run

Open Currencies, choose a currency, and open Exchange Rates. You should see one new line dated with the bank's rate_date. If the line is dated with the run date instead, the Starting Date mapping is pointing at the wrong node.

Month-end and tax-authority tables

Sources that publish monthly, such as HMRC or the Swiss National Bank monthly averages, use the same feed; schedule the job once a month after the publication date. The response's rate_date is the first day the table applies.

Notes

FAQ

Does Business Central come with an exchange rates API?

Business Central ships a Currency Exchange Rate Service that can read any XML feed on a schedule, but Microsoft does not supply a rate source. You point it at a provider. This guide points it at the official table published by the central bank or tax authority your jurisdiction names, for example the ECB for a Eurozone entity or HMRC for UK VAT.

Do I need an AppSource app?

No. The built-in service needs nothing installed. If you prefer an app, the AL extension above is open source and installs from VS Code into any sandbox or production environment with the standard publish flow.

Which bank should a multi-company tenant use?

One service per company, each pointed at the bank or tax authority that company's local regulation names. The finance team guides list the usual source per jurisdiction for VAT, customs, month-end and transfer pricing.

How many API calls does this use?

One call per run, regardless of how many currencies the table contains. A daily job for one bank is about 22 calls a month, which fits the free tier; history and publication-date lookups are on the Official Rates plan.

Other systems: Business Central · Xero · QuickBooks Online · SAP · Odoo · all integrations. Endpoint reference: Central Bank Exchange Rate API.