Wise API: Get exchange rate
Gets Wise's current mid-market exchange rate and converted amount for two currencies, with optional daily rate history.
Unofficial. Not affiliated with or endorsed by Wise.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Amount optional
amount Amount to convert from the source currency, for example 100.
25
Number 0 or more. Default
1.- History optional
history Period of daily rate history to return, for example last_month.
last_month
One of
none,last_week,last_month,last_6_months,last_year,last_5_years. Defaultnone.- To Currency, required
to_currency Currency name or three-letter code, for example US dollar or USD.
Japanese yen
- From Currency, required
from_currency Currency name or three-letter code, for example British pound or GBP.
EUR
Input as JSON
{ "amount": 25, "history": "last_month", "to_currency": "Japanese yen", "from_currency": "EUR"}Output
{ "history": [ { "date": "2026-09-23", "rate": 180.265 }, { "date": "2026-09-24", "rate": 180.135 }, { "date": "2026-09-25", "rate": 180.665 } ], "rate_time": "2026-10-23T08:09:01.312000+00:00", "mid_market_rate": 175.805, "converted_amount": 4395.13, "to_currency_code": "JPY", "to_currency_name": "Japanese yen", "from_currency_code": "EUR", "from_currency_name": "Euro", "wise_converter_link": "https://wise.com/gb/currency-converter/eur-to-jpy-rate?amount=25" , "converted_currency_code": "JPY"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"wise.com/get_exchange_rate","input":{"amount":25,"history":"last_month","to_currency":"Japanese yen","from_currency":"EUR"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "wise.com/get_exchange_rate" , "input": { "amount": 25, "history": "last_month", "to_currency": "Japanese yen", "from_currency": "EUR" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "wise.com/get_exchange_rate" , "input": { "amount": 25, "history": "last_month", "to_currency": "Japanese yen", "from_currency": "EUR" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run wise.com/get_exchange_rate# with {"amount":25,"history":"last_month","to_currency":"Japanese yen","from_currency":"EUR"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "from_currency", "to_currency" ], "properties": { "amount": { "type": "number", "default": 1, "minimum": 0, "description": "Amount to convert from the source currency, for example 100." }, "history": { "enum": [ "none", "last_week", "last_month", "last_6_months", "last_year", "last_5_years" ], "type": "string", "default": "none", "description": "Period of daily rate history to return, for example last_month." }, "to_currency": { "type": "string", "description": "Currency name or three-letter code, for example US dollar or USD." }, "from_currency": { "type": "string", "description": "Currency name or three-letter code, for example British pound or GBP." } }}Output schema
{ "type": "object", "required": [ "from_currency_code", "from_currency_name", "to_currency_code", "to_currency_name", "mid_market_rate", "converted_amount", "converted_currency_code", "rate_time", "wise_converter_link", "history" ], "properties": { "history": { "type": "array", "items": { "type": "object", "required": [ "date", "rate" ], "properties": { "date": { "type": "string", "format": "date" }, "rate": { "type": "number" } }, "additionalProperties": false }, "description": "Daily rate observations, oldest first; empty when no history is requested." }, "rate_time": { "type": "string", "format": "date-time", "description": "Time of the current rate, with offset." }, "mid_market_rate": { "type": "number", "description": "Units of the destination currency per one source currency unit." }, "converted_amount": { "type": "number", "description": "Converted amount in the destination currency, rounded to two decimal places." }, "to_currency_code": { "type": "string", "description": "Destination currency code." }, "to_currency_name": { "type": "string", "description": "Destination currency name." }, "from_currency_code": { "type": "string", "description": "Source currency code." }, "from_currency_name": { "type": "string", "description": "Source currency name." }, "wise_converter_link": { "type": "string", "format": "uri", "description": "Wise converter page for this pair." }, "converted_currency_code": { "type": "string", "description": "Currency of the converted amount." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
wise.com/get_exchange_rate- Returns
- mid-market rate, converted amount, rate time, converter link, daily history
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method wise.com/get_exchange_rate with the inputs above.
Ask your agent
- What is the mid-market rate for converting 250 British pounds to US dollars right now?
- How many euros would I get for 1,000 Japanese yen today?
- Show me the GBP to USD rate history for the last month on wise.com.
- I need a converter link for turning 500 Canadian dollars into Australian dollars.
- What's the current rate and converted amount for 75 Swiss francs into Indian rupees, with the last 6 months of daily rates?
See more
All Wise methodsCompares what recipients get from Wise and other providers for a transfer amount and currency pair, with fees, rates and delivery times.
wise.com/compare_transfer_costsFinds the SWIFT/BIC codes and branch locations Wise lists for a bank in a country, optionally narrowed by city, address, postcode, branch name or code; head office first.
wise.com/search_swift_codesChecks an IBAN's country length and check digits locally, then looks up the bank details Wise shows for it. A valid format does not confirm the account exists; branch names may be unavailable.
wise.com/check_ibanConverts an amount between two currencies using XE's displayed mid-market rate. It also returns the rate time and an XE converter link. Rates are informational, not transfer quotes.
xe.com/convert_currencyGets XE's daily mid-market exchange rate for a past UTC date and converts an amount with it.
xe.com/get_historical_rateConverts an amount between two currencies using the current Google Finance quote. Rates may be delayed.
google.com/convert_currencyConverts an amount between currencies using ECB euro reference rates, including euro and cross-currency conversions. Uses the latest preceding published rate when the date has none.
ecb.europa.eu/convert_currencyGets the official ECB euro reference exchange rates for a day, or the latest published day. Weekends, holidays and dates before publication return the previous published day.
ecb.europa.eu/get_euro_exchange_rates