Test service. Rates are provided as is, for evaluation only, and may be incorrect. Always verify with the official source. Disclaimer

API documentation

egenio FX serves official daily exchange rates from Latin American central banks and tax authorities, and the ECB, through one HTTPS API with consistent JSON.

Test service. Data is provided as is, for evaluation only, and may be incorrect or incomplete. Always verify rates against the official source before use. See the disclaimer.
Base URLhttps://api.egenio.net
FormatJSON (UTF-8); CSV for the F&O endpoint on request
DatesYYYY-MM-DD
RatesText, exactly as published (e.g. "17.7100"), never rounded. Each rate is units of the currency per 1 unit of the base.

Authentication

Send your key in the X-API-Key header:

curl -H "X-API-Key: fx_your_key_here" https://api.egenio.net/v1/rates

For a quick test in a browser you may add ?api_key=… to the address instead; prefer the header in integrations, because addresses can end up in logs and browser history. Keep keys secret: anyone with your key can use your quota. New free test keys are paused for now; keys you already have keep working.

No key? You can still call the API. Requests without a key, or with a key we don't recognise, are answered on the no-key access level: up to 250 requests per day (UTC) from each IP address, and the last 7 days of history. Such replies carry the header X-API-Plan: no-key, and X-API-Key-Warning if you sent a key we don't recognise. A revoked key is always refused with 401. Several people behind the same office network share one address and its daily limit, so use a key for anything regular.
curl https://api.egenio.net/v1/rates?currencies=MXN,BRL

Try it

Enter your API key, pick an endpoint and options, and send a real request. Your key stays in this page: it is sent only to api.egenio.net in the X-API-Key header and is not saved anywhere. Each request counts toward your limit. No key? Leave the field empty to use the no-key access level.


  

The tester needs JavaScript.

Latest & daily rates

GET/v1/rates

All rates for one day: each currency's most recent official rate on or before date.

ParameterDefaultDescription
datelatest dayThe day you need the rates for.
currenciesallOnly these currencies: one code, or several separated by commas, e.g. MXN or MXN,BRL,COP.
baseUSDUSD for Latin American currencies, EUR for ECB reference rates.
GET /v1/rates?date=2026-09-28

{
  "date": "2026-09-28",
  "base": "USD",
  "rates": [
    { "currency": "BRL", "rate": "5.30160", "rate_date": "2026-09-28", "source": "BCB" },
    { "currency": "MXN", "rate": "17.7100",  "rate_date": "2026-09-28", "source": "Banxico" }
  ]
}

rate_date is the day the rate was published for. It can be earlier than date on weekends and holidays (see below).

Some currencies: latest rate or a specific date

Add currencies with one code, or several separated by commas (currencies=MXN,BRL,COP). Leave out date for the latest rate, or add it for the rate in effect on that day (on a weekend or holiday, the previous business day's rate).

# Latest USD→MXN rate
curl -H "X-API-Key: fx_your_key_here" \
  "https://api.egenio.net/v1/rates?currencies=MXN"

# USD→MXN rate for 28 September 2026
curl -H "X-API-Key: fx_your_key_here" \
  "https://api.egenio.net/v1/rates?currencies=MXN&date=2026-09-28"

# Mexican peso, Brazilian real and Colombian peso for 28 September 2026
curl -H "X-API-Key: fx_your_key_here" \
  "https://api.egenio.net/v1/rates?currencies=MXN,BRL,COP&date=2026-09-28"
{
  "date": "2026-09-28",
  "base": "USD",
  "rates": [
    { "currency": "MXN", "rate": "17.7100", "rate_date": "2026-09-28", "source": "Banxico" }
  ]
}

With one currency, the rate is at rates[0].rate; with several, rates has one entry per currency, in alphabetical order. Other examples: euro to Brazilian real with base=EUR&currencies=BRL; for a quick look in a browser, https://api.egenio.net/v1/rates?currencies=MXN&api_key=fx_your_key_here.

In Power Automate: an HTTP action with method GET, the address above and the X-API-Key header; then use the expression body('HTTP')?['rates']?[0]?['rate'] wherever you need the rate (wrap it in float(…) for calculations).

In Excel: Data → From Web → Advanced, enter the address and add the header X-API-Key; Power Query turns the reply into a table.

History

GET/v1/rates/{currency}

One currency, one rate per published day, oldest first.

ParameterDefaultDescription
from30 days before toFirst day.
tolatest dayLast day. At most 1,830 days per request.
baseUSDBase currency.
GET /v1/rates/MXN?from=2026-09-24&to=2026-09-30

{
  "base": "USD", "currency": "MXN", "from": "2026-09-24", "to": "2026-09-30",
  "rates": [
    { "date": "2026-09-24", "rate": "17.5030", "source": "Banxico" },
    …
  ]
}

Dynamics 365 Finance & Operations

GET/v1/fo/exchange-rates

Rows named like the Exchange rates data entity (ExchangeRates). EndDate is omitted: F&O sets it from the next rate's start date.

ParameterDefaultDescription
from, tolatest day onlyDate range.
currenciesallComma-separated, e.g. MXN,BRL.
baseUSDBecomes FromCurrency.
rate_typeDefaultYour F&O exchange rate type (up to 20 letters, digits, spaces or . - _ / & ( )).
formatjsonjson (OData style) or csv (file download).
GET /v1/fo/exchange-rates?from=2026-09-28&to=2026-09-28&currencies=MXN&rate_type=Default

{
  "value": [{
    "RateTypeName": "Default", "FromCurrency": "USD", "ToCurrency": "MXN",
    "StartDate": "2026-09-28T00:00:00Z", "Rate": "17.7100", "ConversionFactor": "One"
  }]
}

With Power Automate

Download our sample solution and import it into the Power Platform environment linked to F&O. It contains one cloud flow that runs twice a day, reads the last 7 days of rates from egenio FX, skips the rates F&O already has, and creates the rest in the ExchangeRates entity. It signs in to F&O with the standard Fin & Ops Apps connector, so no Azure app registration is needed. If a run fails, it emails you which step failed and why; while you test, it can also email a summary after every successful run.

Download sample solution (.zip)

Technical details: what the flow does

The solution egenioFXRates 1.2.2.0 is unmanaged, with publisher prefix egfx. It contains one cloud flow, egenio FX - Import exchange rates into FO, 6 environment variables and two connection references (Fin & Ops Apps (Dynamics 365) and Office 365 Outlook). It adds no tables or security roles.

Steps

  1. Trigger: twice a day, at 13:00 and 20:00 UTC. Each run looks back 7 days, so rates published late are not missed.
  2. Try (scope):
    1. FO_address: the F&O host name as the connector expects it (https://, a trailing / and anything after it are removed, so a URL copied from the browser works).
    2. Get_rates_from_egenio_FX (HTTP): GET /v1/fo/exchange-rates for the last 7 days, with your currencies and the X-API-Key header.
    3. Parse_rates: reads the rows (FromCurrency, ToCurrency, StartDate, Rate).
    4. Get_existing_rates_from_FO (Fin & Ops Apps, List items present in table): the ExchangeRates of your rate type, from USD, of the last 8 days.
    5. Existing_keys and New_rates: keep only the rates F&O does not have yet (key CURRENCY|YYYY-MM-DD), so running again never creates duplicates.
    6. For_each_new_rate (Fin & Ops Apps, Create record): adds each new rate to ExchangeRates, one at a time, with your exchange rate type and ConversionFactor One.
    7. Summary: “Rates received: X. Already in F&O: Y. Created: Z.”
  3. Catch (scope, runs only if a step in Try failed or timed out): lists the failed steps with their status and error message, emails them to the notification address with a link to the run, then ends the run as Failed so it stays red in the run history.
  4. Email_on_success: if Email on success is Yes, emails the summary after a successful run.

The call to egenio FX retries up to 4 times with growing waits (from 30 seconds), and its inputs, including the API key, are hidden in the run history.

Environment variables

Schema nameTypeDefaultUsed for
egfx_ApiKeyTextegenio FX API key
egfx_FinOpsUrlTextF&O environment URL
egfx_RateTypeTextDefaultF&O exchange rate type to fill
egfx_CurrenciesTextMXN,BRL,ARS,CLP,COP,PENCurrencies to import against USD
egfx_NotifyEmailTextWho gets the emails
egfx_NotifyOnSuccessYes/NoYesAlso email after successful runs

Good to know

  • The rates are created as the user of the Fin & Ops Apps connection; F&O shows that user as their creator.
  • Only rates from USD are imported and checked for duplicates.
  • A rate that is already in F&O is never changed, even if the source corrects it later.
  • If the Outlook connection itself fails, the run still ends as Failed, so it shows in the run history.
Sample only. The solution is provided as is, without warranty, like the rest of this test service. Import it into a sandbox first, check the rates it creates, and adapt it to your needs before using it anywhere else.

Before you import

  1. Get an egenio FX API key (a free test key is fine to start).
  2. Choose the F&O account the flow will work as: a user (ideally a service account) who may maintain exchange rates.
  3. Make sure the exchange rate type (e.g. Default) and the currencies exist in F&O.
  4. Pick the Office 365 mailbox that will send the flow's emails (a shared or service mailbox works well).

Import

  1. In Power Apps → Solutions → Import solution, choose the downloaded zip.
  2. When asked for connections, create or pick a Fin & Ops Apps (Dynamics 365) connection, signed in as that F&O account, and an Office 365 Outlook connection for that mailbox.
  3. Fill in the environment variables when asked:
    VariableExample
    egenio FX API keyfx_…
    FO environment URLhttps://contoso.operations.dynamics.com
    Exchange rate typeDefault
    CurrenciesMXN,BRL,ARS,CLP,COP,PEN
    Notification email[email protected] (several: separate with ;)
    Email on successYes while testing, No later (failures are always emailed)
  4. Open the flow egenio FX - Import exchange rates into FO, run it once with Test → Manually, then turn it on. It is imported turned off.

The flow uses the premium HTTP action and the premium Fin & Ops Apps connector, so its owner needs a Power Automate premium license. Building it yourself instead? The steps are: Recurrence → HTTP GET /v1/fo/exchange-rates with the X-API-Key header → Parse JSON → Apply to each over value → Fin & Ops Apps Create record in ExchangeRates.

With Data management (CSV)

  1. Download /v1/fo/exchange-rates?from=…&to=…&format=csv.
  2. In F&O: Data management → Import, entity Exchange rates, source format CSV. Columns map automatically.
  3. Dates are YYYY-MM-DD; if your source data format expects another date format, adjust it there.

Always test the import in a sandbox first.

Sources & conventions

CountryPairSource & rateDated
🇲🇽 MexicoUSD/MXNBanxico FIXOn its DOF publication day (the business day after Banxico determines it): Friday's FIX is Monday's rate.
🇧🇷 BrazilUSD/BRLBCB PTAX, sell rate (venda), closing bulletinBrazilian business days.
🇦🇷 ArgentinaUSD/ARSBCRA, Estadísticas CambiariasArgentine business days.
🇨🇱 ChileUSD/CLPBanco Central de Chile, dólar observadoChilean business days.
🇨🇴 ColombiaUSD/COPTRM (Superintendencia Financiera)Every calendar day it is valid for, weekends included.
🇵🇪 PeruUSD/PENSUNAT official rate, sell (venta)SUNAT's date. History from October 2026.
🇵🇾 ParaguayUSD/PYG, EUR/PYGBanco Central del Paraguay (BCP), reference interbank rateParaguayan business days.
🇺🇾 UruguayUSD/UYU, EUR/UYUBanco Central del Uruguay (BCU): "dólar billete" and BCU's euro rate, sellBCU's date (the day the rate closed), Uruguayan business days.
🇨🇷 Costa RicaUSD/CRCBanco Central de Costa Rica (BCCR), reference rate, sell (venta)Every calendar day BCCR lists, weekends included.
🇧🇴 BoliviaUSD/BOBBanco Central de Bolivia (source BCBO), official rate; before July 2026 the official sell rateBolivian business days.
🇪🇺 EuroEUR/USD, EUR/MXN, EUR/BRL…ECB euro reference rates (base EUR, ~30 currencies)TARGET business days.

Sources are checked every hour; recent days are re-checked so corrections are picked up. Rates are never computed or inverted: what you get is what the authority published.

Weekends & holidays

Most authorities publish nothing on weekends and holidays. /v1/rates then returns each currency's most recent rate (at most 10 days old) and shows its rate_date. This follows the usual rule (e.g. SUNAT's) of using the previous business day's rate. The history and F&O endpoints list only published days; F&O keeps each rate in effect until the next one.

Service endpoints

Two public addresses that need no API key, both plain text or JSON for tools rather than pages to read:

AddressWhat it is
/healthService status for uptime monitors: {"status": "ok", "version": "…"}.
/.well-known/security.txtHow to report a security issue privately (the security.txt standard).

Errors

Errors return JSON: {"error": "explanation"}.

StatusMeaning
400A parameter is invalid (date format, currency code, range too long…).
401Revoked API key. When access without a key is switched off, also a missing or unknown key.
403The date is outside the history your key allows.
404No rates stored for that request.
429Too many requests: your key's monthly limit, the daily limit without a key, or too many requests per minute (see Retry-After).
500Something went wrong on our side. Please retry later.

Limits

Access is free during testing. Each key has an access level with a monthly request limit and a history window:

Access levelRequests / monthHistory via date / from
free500last 7 days
starter5,000last 730 days
business50,000unlimited
partner250,000unlimited
No key250 per day, per IP addresslast 7 days

Every response includes X-RateLimit-Limit and X-RateLimit-Remaining for the month (for the day, without a key). Separately, each client address may make up to 300 requests per minute, and addresses sending many invalid keys are paused for a minute.

FAQ

Why is rate_date different from date?

On weekends and holidays no new rate is published, so you get the latest published one, and rate_date tells you which day it is from.

Why do rates have different numbers of decimals?

Each authority publishes its own precision (Banxico 4, PTAX 4–5, SUNAT 3…). We keep it exactly. Round in your system if you need to.

How do I get USD→EUR?

The ECB publishes EUR→USD. Use base=EUR. Most ERPs, including F&O, can use the reverse direction of a rate.

Can I use this in production?

Not yet: it is a test service without guarantees. Use it for evaluation, and verify against official sources.

How do I report a security issue?

See security.txt for the private reporting channel.