Wise API: Compare transfer costs
Compares what recipients get from Wise and other providers for a transfer amount and currency pair, with fees, rates and delivery times.
Unofficial. Not affiliated with or endorsed by Wise.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Amount, required
amount Amount to send in the from currency, for example 1000.
2000
Number from 0.000001 to 9999999999999.
- To Currency, required
to_currency Currency name or three-letter code to receive, for example Mexican peso or MXN.
EUR
- From Currency, required
from_currency Currency name or three-letter code to send, for example USD or US dollar.
British pound
- Sending Country optional
sending_country Country name or two-letter code where the money is sent from, for example United States or US. Defaults to the home country of the from currency.
GB
Default
.
Input as JSON
{ "amount": 2000, "to_currency": "EUR", "from_currency": "British pound", "sending_country": "GB"}Output
{ "amount": 2000, "providers": [ { "page_url": "https://wise.com/gb/compare/?sourceCurrency=GBP&targetCurrency=EUR&sendAmount=2000#comparison-table" , "transfer_fee": 7.1, "delivery_time": "1 second", "exchange_rate": 1.19446, "provider_name": "Wise", "recipient_gets": 2380.44, "quote_collected_date": "2026-10-23", "exchange_rate_markup_percent": 0 }, { "page_url": "https://wise.com/gb/compare/?sourceCurrency=GBP&targetCurrency=EUR&sendAmount=2000#comparison-table" , "transfer_fee": 1.99, "delivery_time": null, "exchange_rate": 1.1848735024, "provider_name": "Western Union", "recipient_gets": 2367.39, "quote_collected_date": "2026-10-23", "exchange_rate_markup_percent": 0.80839306 }, { "page_url": "https://wise.com/gb/compare/?sourceCurrency=GBP&targetCurrency=EUR&sendAmount=2000#comparison-table" , "transfer_fee": 0, "delivery_time": null, "exchange_rate": 1.1680811758, "provider_name": "HSBC", "recipient_gets": 2336.16, "quote_collected_date": "2026-10-20", "exchange_rate_markup_percent": 2.21416157 } ], "to_currency": "EUR", "from_currency": "GBP", "mid_market_rate": 1.19446, "sending_country": "GB"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"wise.com/compare_transfer_costs","input":{"amount":2000,"to_currency":"EUR","from_currency":"British pound","sending_country":"GB"}}' # 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/compare_transfer_costs" , "input": { "amount": 2000, "to_currency": "EUR", "from_currency": "British pound", "sending_country": "GB" }})# 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/compare_transfer_costs" , "input": { "amount": 2000, "to_currency": "EUR", "from_currency": "British pound", "sending_country": "GB" } }), 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/compare_transfer_costs# with {"amount":2000,"to_currency":"EUR","from_currency":"British pound","sending_country":"GB"}"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": [ "amount", "from_currency", "to_currency" ], "properties": { "amount": { "type": "number", "maximum": 9999999999999, "minimum": 0.000001, "description": "Amount to send in the from currency, for example 1000." }, "to_currency": { "type": "string", "description": "Currency name or three-letter code to receive, for example Mexican peso or MXN." }, "from_currency": { "type": "string", "description": "Currency name or three-letter code to send, for example USD or US dollar." }, "sending_country": { "type": "string", "default": "", "description": "Country name or two-letter code where the money is sent from, for example United States or US. Defaults to the home country of the from currency." } }}Output schema
{ "type": "object", "required": [ "amount", "from_currency", "to_currency", "sending_country", "mid_market_rate", "providers" ], "properties": { "amount": { "type": "number" }, "providers": { "type": "array", "items": { "type": "object", "required": [ "provider_name", "transfer_fee", "exchange_rate", "exchange_rate_markup_percent", "recipient_gets", "delivery_time", "quote_collected_date", "page_url" ], "properties": { "page_url": { "type": "string" }, "transfer_fee": { "type": [ "number", "null" ] }, "delivery_time": { "type": [ "string", "null" ] }, "exchange_rate": { "type": [ "number", "null" ] }, "provider_name": { "type": "string" }, "recipient_gets": { "type": [ "number", "null" ] }, "quote_collected_date": { "type": [ "string", "null" ], "format": "date" }, "exchange_rate_markup_percent": { "type": [ "number", "null" ] } }, "additionalProperties": false } }, "to_currency": { "type": "string" }, "from_currency": { "type": "string" }, "mid_market_rate": { "type": "number" }, "sending_country": { "type": "string" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
wise.com/compare_transfer_costs- Returns
- provider name, transfer fee, exchange rate, markup, recipient amount, delivery time, quote date, comparison page link, mid-market rate
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/compare_transfer_costs with the inputs above.
Ask your agent
- Compare what my family in Mexico would receive if I send 1000 USD from the United States, with fees and delivery times across providers
- Which money transfer service gives the best rate for sending 2500 euros to Japanese yen from Germany?
- Show me a side-by-side comparison of sending 500 British pounds to Indian rupees, including markups and recipient amounts on wise.com
- I need to know how much a recipient in Brazil gets if I transfer 3000 Canadian dollars, and how long it takes compared to other providers
- Check the mid-market rate and fees for sending 750 Australian dollars to Thai baht from Australia
See more
All Wise methodsGets Wise's current mid-market exchange rate and converted amount for two currencies, with optional daily rate history.
wise.com/get_exchange_rateFinds 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_currencyCompares living costs in two Numbeo cities: six price and purchasing-power differences, plus the monthly take-home salary needed in the destination for a similar standard of living (rent assumed in both cities).
numbeo.com/compare_cost_of_livingConverts 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_currencyConverts an amount between two currencies using the current Google Finance quote. Rates may be delayed.
google.com/convert_currencyCompares the Apple Store price of one product configuration across up to 15 countries, converted with the latest European Central Bank reference rates.
apple.com/compare_country_prices