---
title: "Mid-Market vs Retail Exchange Rates: What Developers Need to Know"
description: "Understand the difference between mid-market (interbank) and retail exchange rates. Learn why the rate type your API returns matters for pricing transparency and how to avoid hidden markups."
canonical: https://allratestoday.com/blog/mid-market-vs-retail-exchange-rates/
source: AllRatesToday (https://allratestoday.com/) — Markdown mirror of the page above; index of all pages at https://allratestoday.com/llms.txt
generated: 2026-10-07T16:40:37.527Z
---

![Financial market and banking](https://images.pexels.com/photos/7567230/pexels-photo-7567230.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940)

When you integrate an exchange rate API into your application, one of the most important questions to ask is: **"Is this the mid-market rate or a retail rate?"** The difference can mean a 1–5% hidden markup on every conversion your users see — and most API documentation doesn't make this clear.

## What Is the Mid-Market Rate?

The **mid-market rate** (also called the **interbank rate**) is the midpoint between the buy price and the sell price of a currency pair on the global foreign exchange market. It is the "true" exchange rate — the rate at which banks trade with each other in large volumes.

When you see an exchange rate on Google, XE, or Bloomberg, you are seeing the mid-market rate. It is the benchmark that financial professionals reference.

**Example:** If banks are buying EUR at 1.0820 USD and selling EUR at 1.0830 USD, the mid-market rate is **1.0825** — the midpoint between the two.

## What Is a Retail Rate?

A **retail rate** is the mid-market rate plus a **spread** (markup). This spread is how banks, currency exchange services, and money transfer companies make money. When you exchange currency at an airport kiosk, you get a retail rate — and the spread can be enormous.

| Provider Type | Typical Spread | Impact on $10,000 |
| --- | --- | --- |
| Mid-market (interbank) | 0% | $0 |
| Online money transfer (e.g. Wise) | 0.3–0.7% | $30–$70 |
| Bank wire transfer | 1–3% | $100–$300 |
| Credit card foreign transaction | 1–3% | $100–$300 |
| Airport currency exchange | 3–8% | $300–$800 |

## Why This Matters for Your Application

If your API returns retail rates instead of mid-market rates, you have a transparency problem. Your users might think they are getting the "real" exchange rate, but there is already a hidden markup baked into the data before you even apply your own fees.

### E-Commerce Price Display

If your online store shows "1 USD = 0.92 EUR" but the real mid-market rate is 0.9350, your international customers are seeing prices that are 1.6% higher than they should be. On a $500 purchase, that is $8 in invisible overcharge — eroding trust and conversion rates.

### Multi-Currency SaaS Billing

If you bill customers in their local currency using retail rates, you are effectively applying a markup your customers didn't agree to. Many SaaS companies have faced chargebacks and complaints over this exact issue.

### Financial Reporting

Auditors and compliance teams expect rates that are traceable to a recognized source. Mid-market rates from Reuters, Bloomberg, or Central Banks are accepted. Retail rates from unnamed sources are not.

## How to Tell What Your API Returns

Unfortunately, many APIs don't clearly state whether they return mid-market or retail rates. Here is how to check:

1. **Compare against Google:** Search "1 USD to EUR" on Google. Google shows the mid-market rate. If your API's rate differs by more than 0.05%, it may include a spread.
2. **Check the documentation:** Look for terms like "interbank," "mid-market," or "wholesale." If the docs say "indicative rates" or don't specify, be cautious.
3. **Ask about the source:** APIs sourcing from Reuters, Refinitiv, or Bloomberg typically provide mid-market rates. APIs that aggregate from "multiple sources" without naming them may include retail spreads.

**Red flag:** If an exchange rate API is completely free with unlimited requests and doesn't disclose its data source, the data may be low-quality or include a hidden spread. Free services need a revenue model — if you are not paying with money, you might be paying with data accuracy.

## Mid-Market Rate API Example

AllRatesToday provides mid-market rates sourced from institutional interbank market data. Here is what the response looks like:

```
curl -X GET "https://allratestoday.com/api/v1/rates?source=USD&target=EUR,GBP,JPY" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```
{
  "source": "USD",
  "rates": {
    "EUR": { "rate": 0.9234, "time": "2026-04-09T14:30:00Z" },
    "GBP": { "rate": 0.7891, "time": "2026-04-09T14:30:00Z" },
    "JPY": { "rate": 151.42, "time": "2026-04-09T14:30:00Z" }
  }
}
```

These are the same mid-market rates displayed on Google Finance and XE — no spread, no markup.

### Adding Your Own Markup

If your business model requires a spread (e.g., you run a money transfer service), you should start with the mid-market rate and apply your own transparent margin:

```
import AllRatesToday from '@allratestoday/sdk';

const client = new AllRatesToday('YOUR_API_KEY');
const MARKUP = 0.005; // 0.5% spread

async function getCustomerRate(from, to) {
  const midMarketRate = await client.getRate(from, to);
  // Apply spread: customer gets slightly less favorable rate
  const customerRate = midMarketRate * (1 - MARKUP);
  return {
    midMarket: midMarketRate,
    customerRate: customerRate,
    spread: MARKUP
  };
}

const rate = await getCustomerRate('USD', 'EUR');
console.log(`Mid-market: ${rate.midMarket}`);
console.log(`Customer rate: ${rate.customerRate} (includes ${rate.spread * 100}% fee)`);
```

This approach gives you full control over your pricing while being transparent with your users about the markup.

## Quick Reference: Mid-Market vs Retail

| Aspect | Mid-Market Rate | Retail Rate |
| --- | --- | --- |
| Definition | Midpoint between buy/sell | Mid-market + provider's spread |
| Markup | None | 0.3% to 8% |
| Used by | Google, XE, Bloomberg | Banks, exchange bureaus |
| Best for apps | Price display, invoicing, comparison | Simulating actual transfer cost |
| Audit-friendly | Yes (traceable source) | Depends on provider |

## Get Transparent Mid-Market Rates

AllRatesToday provides mid-market rates from institutional interbank market data for 160+ currencies. No hidden spreads, no markup. Free tier available.

 [Get Your Free API Key](https://allratestoday.com/register)

## Related Articles

- [Where Does Exchange Rate Data Come From?](https://allratestoday.com/blog/where-does-exchange-rate-data-come-from/)
- [How Often Are Exchange Rates Updated?](https://allratestoday.com/blog/how-often-are-exchange-rates-updated/)
- [What Is a Currency API?](https://allratestoday.com/blog/what-is-a-currency-api/)
- [Free vs Paid Exchange Rate APIs](https://allratestoday.com/blog/free-vs-paid-exchange-rate-apis/)
