구글에서 환율을 확인했는데, 은행이나 카드사, 결제 앱에서는 다른 숫자가 보입니다. 구글에 표시되는 숫자는 보통 미드마켓 환율(중간 환율)이며, 이 환율과 실제로 청구되는 환율의 차이에 환전 비용의 대부분이 숨어 있습니다. 여러 통화의 돈을 다루는 제품을 만든다면 이 차이를 이해하는 것은 선택이 아니라 필수입니다.
이 가이드에서는 미드마켓 환율이 무엇인지, 매수호가(bid)·매도호가(ask)·스프레드와 어떤 관계인지, 일반 소비자가 왜 이 환율을 거의 적용받지 못하는지, 그리고 Finexly API 문서의 엔드포인트를 사용해 코드에서 어떻게 다루는지 설명합니다.
미드마켓 환율이란?
미드마켓 환율(미드 레이트, 은행 간 환율, 스팟 미드라고도 합니다)은 구매자가 통화를 사려는 가격과 판매자가 팔려는 가격의 중간 지점입니다. 수수료나 마진이 포함되지 않은, 특정 시점의 통화쌍에 대한 "공정한" 가격에 가장 가까운 값입니다.
모든 통화쌍은 두 개의 가격으로 호가됩니다.
- 매수호가(Bid): 딜러가 고객에게서 기준 통화를 사는 가격.
- 매도호가(Ask, 또는 Offer): 딜러가 고객에게 기준 통화를 파는 가격.
Ask는 항상 Bid보다 높습니다. 미드마켓 환율은 그 정확히 중간에 있습니다.
mid = (bid + ask) / 2
spread = ask - bid예를 들어 EUR/USD가 bid 1.0840, ask 1.0842로 호가된다면 미드마켓 환율은 1.0841이고 스프레드는 0.0002, 즉 2핍입니다. 이 숫자는 어디까지나 설명을 위한 예시입니다. 핍이 낯설다면 외환에서 핍이란 무엇인가 가이드를 읽어 보세요.
Bid, Ask, 스프레드: 모든 호가 뒤에 있는 세 가지 숫자
스프레드는 즉시 거래할 수 있는 것에 대한 대가입니다. 언제든 사고팔 준비가 된 딜러는 재고 위험을 지기 때문에 매수가와 매도가 사이에 약간의 차이를 둡니다. 깊이 있는 은행 간 시장에서 주요 통화쌍의 스프레드는 1핍의 일부에 불과할 수 있습니다. 이색 통화쌍이나 거래가 얇은 시장에서는 크게 벌어집니다.
스프레드의 크기는 보통 세 가지가 좌우합니다.
- 유동성: EUR/USD나 USD/JPY처럼 거래가 활발한 통화쌍은 스프레드가 좁고, 이색 통화쌍은 넓습니다. 메이저, 마이너, 이그조틱 통화쌍을 참고하세요.
- 변동성: 중앙은행 결정이나 주요 지표 발표 전후에 딜러는 스스로를 보호하기 위해 스프레드를 넓힙니다.
- 거래 규모와 시간대: 주요 거래 시간대 밖이나 주말에는 일반적으로 스프레드가 더 넓습니다.
미드마켓 환율 vs 실제로 적용받는 환율
불편한 부분이 여기서 나옵니다. 미드마켓 환율은 기준점일 뿐, 보통 실제로 거래할 수 있는 가격이 아닙니다. 업체도 어딘가에서 수익을 내야 하므로 개인 고객은 이 환율을 거의 적용받지 못합니다. 일반적인 고객용 환율은 다음과 같이 만들어집니다.
customer_rate = mid_rate × (1 - markup) # when the customer sells the base currency
customer_rate = mid_rate × (1 + markup) # when the customer buys the base currency마크업은 눈에 보이는 수수료와는 별도로 붙습니다. "수수료 무료"를 내세우는 업체가 여전히 비쌀 수 있는 이유입니다. 비용이 환율 안에 녹아 있기 때문입니다. 업체를 공정하게 비교하는 방법은 미드마켓 환율을 기준으로 총비용을 측정하는 것입니다.
cost_pct = (mid_rate - customer_rate) / mid_rate × 100일부 업체는 실제로 미드마켓 환율로 환전하고 대신 별도의 투명한 수수료를 받기도 합니다. 두 모델 모두 공정할 수 있으며, 중요한 것은 총액을 확인하고 비교할 수 있는지입니다. 같은 논리가 해외 카드 결제에도 적용되며, 동적 통화 변환(DCC)은 종종 큰 숨은 마크업을 더합니다.
미드마켓 환율은 어디서 오는가?
단 하나의 공식 미드마켓 환율은 존재하지 않습니다. 외환 시장은 분산된 장외(OTC) 시장입니다. 은행, 딜러, 거래 플랫폼이 각자의 호가를 게시하고, 데이터 벤더가 이를 집계합니다. 온라인에서 보는 "미드마켓 환율"은 보통 여러 유동성 공급원을 혼합해 거래 시간 중 지속적으로 갱신한 값이며, 같은 순간에도 두 업체가 약간 다른 값을 보여줄 수 있습니다.
하루 중 특정 시각을 기준으로 하는 벤치마크도 있습니다. 포트폴리오 평가에 쓰이는 오후 4시 런던 픽스가 대표적입니다. 데이터 제공업체가 숫자를 어떻게 구성하는지 더 알고 싶다면 환율 API는 데이터를 어디서 가져오는가를 읽어 보세요.
개발자가 미드마켓 환율을 알아야 하는 이유
여러 통화를 다루는 제품을 만든다면 미드마켓 환율은 기준 환율입니다. 대표적인 용도는 다음과 같습니다.
- 가격 표시: 상품 페이지에서 고객에게 환산된 참고 가격을 보여줍니다.
- 투명한 수수료: 청구하는 환율 옆에 미드 레이트를 보여줘 마크업이 드러나게 합니다.
- 회계 및 보고: 일관된 기준으로 잔액을 재평가하고 손익을 기록합니다.
- 마진 관리: 각 환전에서 실제로 얼마의 마크업을 벌고 있는지 계산합니다.
- 업체 감사: 결제 파트너의 환율이 시장에서 벗어나는 시점을 감지합니다.
실용적인 원칙 하나: 미드 레이트와 적용 환율을 따로 저장하세요. 청구한 환율만 보관하면 나중에 마크업이 얼마였는지 증명할 수 없습니다.
Finexly로 미드마켓 환율 가져오기
한 번의 요청으로 실시간 환율을 가져올 수 있습니다.
curl "https://api.finexly.com/v1/latest?base=EUR&symbols=USD&apikey=YOUR_API_KEY"Python: 마크업과 고객 환율 계산
import requests
API_KEY = "YOUR_API_KEY"
def get_mid_rate(base: str, quote: str) -> float:
r = requests.get(
"https://api.finexly.com/v1/latest",
params={"base": base, "symbols": quote, "apikey": API_KEY},
timeout=10,
)
r.raise_for_status()
return r.json()["rates"][quote]
def customer_quote(amount: float, base: str, quote: str, markup_pct: float):
mid = get_mid_rate(base, quote)
applied = mid * (1 - markup_pct / 100)
return {
"mid_rate": mid,
"applied_rate": applied,
"customer_receives": round(amount * applied, 2),
"markup_cost": round(amount * (mid - applied), 2),
}
print(customer_quote(1000, "EUR", "USD", markup_pct=1.5))API가 반환하는 환율을 기준 미드 레이트로 취급하고, 그 위에 직접 정한 명시적인 마크업을 적용하세요. 소수점 자릿수는 통화 반올림 가이드를 따라 관리하세요.
JavaScript: 사용자에게 환율 비교 보여주기
const API_KEY = "YOUR_API_KEY";
async function compareRates(base, quote, providerRate) {
const res = await fetch(
`https://api.finexly.com/v1/latest?base=${base}&symbols=${quote}&apikey=${API_KEY}`
);
const { rates } = await res.json();
const mid = rates[quote];
const hiddenCostPct = ((mid - providerRate) / mid) * 100;
return { mid, providerRate, hiddenCostPct: hiddenCostPct.toFixed(2) };
}
compareRates("EUR", "USD", 1.0680).then(console.log);미드마켓 환율을 기준으로 업체 비교하는 방법
어떤 환전에도 쓸 수 있는 간단하고 반복 가능한 방법입니다.
- 업체가 호가를 제시한 것과 같은 시점의 해당 통화쌍 미드마켓 환율을 구합니다.
- 미드 레이트로 받게 될 금액을 계산합니다.
- 수수료와 마크업을 제외하고 업체가 실제로 제공하는 금액을 계산합니다.
- 그 차이를 미드 레이트 기준 금액으로 나누어 총비용 비율을 구합니다.
스프레드는 넓어졌다 좁아졌다 하므로 시간대를 달리해 여러 번 해 보세요. 과거 데이터를 활용하면 한 순간의 스냅샷이 아니라 몇 주에 걸친 공정한 그림을 얻을 수 있습니다. 과거 환율 API 가이드를 참고하세요.
흔한 실수
- 미드 레이트를 거래 가능한 가격으로 착각하기. 이는 기준값입니다. 실제 거래는 bid 또는 ask에서 이루어집니다.
- 역수 환율 혼동. 자체 가격 책정에 스프레드가 개입되면 EUR/USD의 미드는 USD/EUR 미드의 정확한 역수가 아닙니다. 방향을 하나로 정하고 일관되게 사용하세요.
- 캐시를 너무 오래 두기. 환율은 끊임없이 변합니다. 용도에 따라 몇 시간이 아니라 몇 초에서 몇 분 단위로 캐시하세요.
- 마크업을 환율 속에 숨기기. 많은 시장에서 규제 당국은 비용을 명확히 공개하도록 점점 더 요구하고 있습니다. 미드 레이트를 보여주는 것은 신뢰의 신호입니다.
- 너무 일찍 반올림하기. 중간 환율이 아니라 최종 금액만 반올림하세요.
자주 묻는 질문
미드마켓 환율을 쉽게 설명하면?
글로벌 시장에서 통화쌍의 매수 가격과 매도 가격의 중간 지점입니다. 수수료나 마크업이 없으므로 공정성을 판단하는 유용한 기준이 됩니다.
미드마켓 환율은 은행 간 환율과 같은가요?
거의 같은 의미로 쓰입니다. 둘 다 은행과 딜러가 서로 거래하는 기준이 되는 환율을 가리키지만, 정확한 값은 데이터 출처에 따라 약간 다를 수 있습니다.
왜 은행은 미드마켓 환율을 적용해 주지 않나요?
은행과 결제 업체는 환전마다 붙는 스프레드와 마크업으로 수익을 냅니다. 일부 업체는 미드 레이트를 쓰고 대신 눈에 보이는 수수료를 받으므로, 항상 총비용을 비교하세요.
통화쌍의 실제 미드마켓 환율은 어떻게 알 수 있나요?
환율 API 같은 신뢰할 수 있는 실시간 출처를 사용해, 제시받은 환율과 비교하세요. 그 차이의 퍼센트가 실질 비용입니다.
API로 미드마켓 환율을 가져올 수 있나요?
네. 환율 API는 실시간 기준 환율을 반환하므로 이를 미드 레이트로 사용해 직접 마크업을 더하거나 제3자 호가와 비교할 수 있습니다. 위의 코드를 참고하세요.
투명한 통화 가격 책정을 구축하세요
실시간 환율을 프로젝트에 연동할 준비가 되셨나요? 무료 Finexly API 키를 받으세요. 신용카드는 필요 없습니다. 월 1,000건의 무료 요청으로 시작하고, 성장에 맞춰 요금제로 업그레이드하세요. 코드를 작성하기 전에 환율 계산기로 환율을 확인하거나 통화 API를 비교해 알맞은 것을 찾아볼 수도 있습니다.
Explore More
Vlado Grigirov
Senior Currency Markets Analyst & Financial Strategist
Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...
View full profile →