February 6, 2026 · ~8 min
International Payments

Where FX fees actually come from (and how to avoid them)

A clear breakdown of FX fees, including exchange rate spreads, intermediary bank fees, and landing fees, plus ways to avoid them.

Where FX fees actually come from (and how to avoid them)

Where FX fees actually come from (and how to avoid them)

FX fees are rarely a single line item. They are a stack of hidden costs buried inside international bank transfers, currency conversion, and intermediary bank routing. This guide breaks down the real sources of FX fees and shows how modern payment rails reduce them.

Quick summary: the 3 hidden FX fees

  • Exchange rate spread: A 1-5% markup baked into the rate you are shown.
  • Intermediary bank fees: Multiple banks take a cut before funds arrive.
  • Receiving bank fees: The destination bank deducts landing fees on arrival.

You sent $5,000 to a contractor in Buenos Aires. They received $4,650. You check your bank statement: a $15 wire fee. Quick math says you're missing $335. Where did it go?

Your bank won't tell you. The intermediary banks won't tell you. And the receiving bank will just shrug and say "foreign exchange fees." But that's not an explanation: that's a hand wave.

Here's what actually happened to your money.

The spread: The exchange rate markup you never agreed to

The exchange rate your bank shows you isn't the real exchange rate. It's a version of the real exchange rate, marked up by anywhere from 1% to 5%.

Think of it like buying concert tickets from a scalper. The face value is $100, but you're paying $110. The scalper pockets the difference. Except in this case, the scalper is your bank, and they never tell you what the face value actually is.

The mid-market rate is the real exchange rate: the one you see on Google or XE.com. It's the rate at which currencies actually trade between banks. Your bank gets this rate. You don't.

Instead, you get the mid-market rate plus a markup. If the real rate is 1 USD = 0.85 EUR, your bank might give you 1 USD = 0.82 EUR and pocket the 3-cent difference on every dollar. On a $5,000 transfer, that's $150 gone before the money even leaves your account.

The frustrating part? Your bank never discloses this spread. They'll show you their marked-up rate and call it "our current exchange rate," which is technically true but intentionally misleading. It's their rate: just not the market's rate.

Intermediary bank fees: The middlemen taking their cut

International wire transfers don't travel directly from your bank to your recipient's bank. They bounce through a network of intermediary banks, and each one takes a fee.

Here's why: Your local bank in New York doesn't have a direct relationship with every bank in Argentina. So when you send money internationally, your bank routes it through correspondent banks that do have those relationships. These intermediary banks facilitate the transfer by holding accounts with each other.

Your $5,000 might travel like this:

  • Your bank (Chase) sends to their correspondent bank
  • That bank routes to a regional hub in Latin America
  • That hub sends to the receiving bank in Buenos Aires

Each stop costs money. Intermediary bank fees typically range from $10 to $30 per bank, and you might hit 2-3 intermediary banks on a single transfer. Your recipient loses $50-$90 before the money arrives, and neither you nor they have any control over which banks get involved.

The real kick in the teeth? You don't know how many intermediaries will be involved until after the transfer completes. Your bank might tell you "intermediary fees may apply," but they won't tell you how many or how much. It's a black box.

International wire transfer receipts showing intermediary bank fees

Landing fees: The receiving bank's welcome tax

Your money finally arrives at the destination bank. You'd think the journey's over, right? Not quite.

The receiving bank charges landing fees (also called lifting fees or receiving bank charges) just for accepting the incoming wire. These typically run $10-$40, and they come directly out of the transferred amount.

So your contractor in Buenos Aires receives $4,650 instead of your intended $5,000, and their bank statement just says "incoming international wire - fees applied." No breakdown. No explanation. Just less money than expected.

Some receiving banks are more aggressive than others. Latin American and African banks tend to charge higher landing fees than European banks. But you won't know this until after you send the money.

The transparency problem: Why nobody tells you anything

Banks operate international transfers through SWIFT: a messaging network that's been around since 1973. SWIFT was built for security and standardization, not transparency.

When you initiate a wire, your bank sends a SWIFT message to the correspondent banks with instructions. But SWIFT messages don't include fee disclosures. They just say "send this money here."

Each bank in the chain:

  • Applies their own fees
  • Uses their own exchange rate markup
  • Doesn't report back to anyone

By the time the money arrives, you have no itemized receipt. You just know less money showed up than you sent.

Intermediary bank chain creating hidden costs in FX transfers

This opacity is a feature, not a bug. If you knew your bank was marking up the exchange rate by 3%, you'd probably shop around. If you knew intermediary banks were taking $75 in combined fees, you'd demand a different route. The system's designed to keep you in the dark.

Why this makes software engineers especially angry

You build systems for a living. You know what good infrastructure looks like: predictable, transparent, with clear error handling and logging.

The legacy banking system is the opposite:

  • No predictability: Fees vary based on invisible factors
  • No transparency: You don't know the real exchange rate or fee structure
  • No logging: No detailed transaction trail
  • No control: You can't choose your routing or intermediaries

If you shipped a payment API that worked like SWIFT, your users would riot. "Wait, the API call might cost $15 or $90 depending on which servers it hits, and I won't know until after? And you're marking up the exchange rate but not telling me by how much?"

You'd never accept this in your codebase. Why accept it in your payments?

How stablecoins cut through the opacity

Stablecoins like USDC and USDT don't eliminate exchange rate considerations, but they fundamentally change the game by removing most of the hidden fees.

When you send USDC on a blockchain:

  • No intermediary banks: The transaction goes directly from your wallet to your recipient's wallet
  • No landing fees: Receiving USDC costs nothing (you already paid the network fee when sending)
  • No spread markup: 1 USDC = 1 USDC. There's no bank in the middle marking up the "exchange rate" between dollars and dollars
  • Complete transparency: You see exactly what you're paying (the network fee) before you confirm the transaction

The only exchange rate consideration is when your recipient converts USDC to their local currency. But that's a transparent, competitive process they control: not a hidden markup deducted from your transfer.

Network fees on major blockchains are publicly visible and predictable:

  • Polygon: $0.01-$0.10
  • Ethereum: $1-$15 (depending on network congestion)
  • Solana: $0.001-$0.01

You know the fee before you send. Your recipient knows exactly what they're receiving. No surprises. No black boxes.

How SwiftFi brings this to your workflow

Here's the problem with pure stablecoins: they require both you and your recipient to manage crypto wallets, understand blockchain networks, and handle the conversion to/from fiat.

That's a non-starter for most freelancers and contractors. They want to receive money in their local bank account, not figure out MetaMask.

SwiftFi solves this by giving your recipients a regular bank account number they can share with you. Behind the scenes, when you send USD, it converts to USDC, moves on-chain, and arrives in their account as local currency.

Learn more about getting paid in USD from the US or explore payment guides for common cross-border scenarios.

Your recipient gets:

  • Traditional bank details to share with clients
  • Payments that arrive as stablecoin (avoiding 3-5 day delays)
  • Transparent conversion to local currency at competitive rates
  • No hidden intermediary fees or landing charges

You get:

  • A normal ACH or wire experience
  • Complete visibility into the exchange rate and fees
  • The certainty that your full payment amount arrives (minus clearly disclosed fees)

The stablecoin layer handles the actual movement of money: fast, cheap, and transparent. The SwiftFi interface makes it feel like a regular bank transfer.

The bottom line

Those "FX fees" aren't a single fee. They're a stack of markups and charges that banks deliberately keep opaque:

  1. The spread: 1-5% markup on the exchange rate your bank doesn't disclose
  2. Intermediary bank fees: $10-$30 per bank, 2-3 banks per transfer
  3. Landing fees: $10-$40 at the receiving bank

On a $5,000 transfer, you could easily lose $300-$500 to this stack. And you won't know the exact breakdown until after the money arrives.

Stablecoins and platforms like SwiftFi cut through this by removing the intermediary banks entirely, using transparent exchange rates, and showing you the actual cost upfront.

The legacy system depends on opacity. The new system runs on transparency. You already know which one you'd rather build on.

FAQ: FX fees and international transfers

What are FX fees in international transfers?

FX fees include the exchange rate spread, intermediary bank fees, and receiving bank fees. Most banks hide these costs inside the rate or deduct them along the transfer route.

How can I reduce FX fees?

Compare providers that show the mid-market rate, avoid multi-hop bank routes, and consider stablecoin-based transfers or platforms like SwiftFi that remove intermediary bank fees.

Are FX fees the same as wire fees?

No. Wire fees are the explicit charges your bank shows you. FX fees are usually hidden inside the exchange rate or deducted by other banks after you send the money.