The most expensive number on a cross-border bill is usually the one you cannot see, because it is not a fee. It is a rate. And the two words people use to describe it, spread and markup, get used interchangeably when they mean different things. That confusion is not just semantic. It is exactly where the largest and least-visible cost in cross-border payments hides.
- The mid-market rate is the neutral benchmark: the real exchange rate in the wholesale market at a given moment. Everything else is measured against it.
- FX spread, in its strict sense, is the market's bid-ask gap, a real but small cost at wholesale scale. In loose usage it means the total gap between mid-market and the rate you received.
- FX markup is the margin a provider adds on top of mid-market. It is the provider's revenue on the conversion and usually the dominant part of your FX cost.
- What you actually paid is the realized spread: the full gap from mid-market, which equals the small market spread plus the provider's markup plus any timing games.
- Providers show a single blended rate with no reference point, so markup is invisible unless you reconstruct the mid-market rate at the moment of conversion and compare.
- This is why FX is a top leakage category. On a single conversion, a markup 29 basis points above contract is about $2,900 per $1M converted, or roughly $290,000 across $100M of FX volume.
Short answer
The FX spread is the difference between the buy and sell price of a currency, a market cost that exists even with no provider margin and is very small for major pairs at wholesale scale. The FX markup is the margin a provider adds on top of the mid-market rate, and it is their revenue on the conversion. The two get confused because providers quote a single blended rate that bundles both together and labels the result a spread, which makes the markup look like an unavoidable market cost rather than a negotiable margin. What a fintech actually pays is the realized spread: the total gap between the mid-market rate at the moment of conversion and the rate it received. Almost all of that gap is usually markup, and almost no one checks it.
Start with the benchmark: the mid-market rate
Every FX conversation should start from the same reference point, because without one the words have no meaning.
The mid-market rate, also called the interbank or reference rate, is the midpoint between the buy and sell prices of a currency pair in the wholesale market at a given instant. It is the rate with no margin attached, the closest thing to a true price. When a contract says your FX will be priced at "mid-market plus 25 basis points," the mid-market rate is the zero point that promise is measured from.
The mid-market rate moves continuously. That matters, because the exact moment a provider chooses to reference it is itself a lever, which we will come back to.
What an FX spread is
In its strict, technical sense, the spread is the bid-ask spread: the difference between the price at which the market will buy a currency and the price at which it will sell it. This gap is a genuine, market-driven cost. It exists for everyone, including a provider running zero margin, because it is the cost of liquidity itself.
For major, liquid pairs like EUR/USD, that wholesale spread is tiny, often a basis point or two. For thin or exotic pairs it is wider. The key point is that the true market spread is usually a small fraction of what a business pays to convert currency. If your all-in FX cost is half a percent, the market spread is not where it went.
The trouble starts when "spread" is used loosely to mean the entire gap between the mid-market rate and the rate you actually received. That broader number is real and worth knowing, but it is not the market spread. It is mostly markup.
What an FX markup is
The FX markup is the margin a provider adds on top of the mid-market rate as its fee for performing the conversion. It is revenue. It is also, for almost every business, the dominant component of FX cost and the part a contract is actually negotiating when it specifies a number of basis points over a reference rate.
Markup is where the money is, and it is invisible by design. Unlike a transaction fee, it does not appear as a line item. It is folded into the exchange rate you are quoted, so the only trace of it is the difference between the rate you got and the rate the market was at. The provider shows you the former and not the latter.
This is the heart of the confusion. A provider that quotes "our spread is 0.5%" is usually describing its markup and borrowing the language of an unavoidable market cost to do it. The market spread on that trade might have been two basis points. The other forty-eight were margin.
What you actually paid: the realized spread
The number that matters operationally is the realized spread, sometimes called the effective spread: the total difference between the mid-market rate at the moment of conversion and the rate actually applied to your money. It is what you can measure after the fact, and it breaks down as:
Realized spread = market spread + provider markup + any timing or execution games
Here is a worked example. You convert $1,000,000 from USD to EUR.
| Reference point | Rate (EUR per USD) | Gap from mid | Cost on $1M |
|---|---|---|---|
| Mid-market at execution | 0.9200 | benchmark | benchmark |
| Your contracted rate (mid + 25 bps) | 0.9177 | 25 bps | ~$2,500 |
| Rate you actually received | 0.9150 | ~54 bps | ~$5,400 |
You received 915,000 EUR. At the mid-market rate you would have received 920,000. The realized spread is about 54 basis points. Of that, perhaps two basis points is the genuine market spread on a liquid pair, which means roughly 52 basis points is markup.
Your contract allowed a 25 basis point markup. You paid the equivalent of about 54. The difference, roughly 29 basis points, is leakage: about $2,900 on this single million-dollar conversion. Run that gap across $100M of annual FX volume and it is around $290,000 a year, sitting inside the exchange rate where no invoice line will ever show it.
Why FX is where leakage hides
Several features of how FX is billed combine to make this the hardest cost to see and the easiest to overcharge.
The margin is in the rate, not a fee. There is no line item to question, only a rate to accept, and rates look authoritative.
No reference point is shown. Statements display the blended rate you received and not the mid-market rate it should be measured against, so the realized spread is not computable from the document alone.
The reference timestamp is a lever. Because the mid-market rate moves continuously, which instant a provider treats as "the" rate, or which daily fixing window it uses, can shift the apparent spread in the provider's favor without changing the headline.
Markup can be layered. A provider can apply margin on top of a reference rate that is already off mid-market, marking up a marked-up number.
Blending hides outliers. A single average rate across a day or a batch conceals individual conversions that were priced far worse than the average.
None of this requires bad faith to cost you money. It only requires that nobody on your side reconstructs the reference rate and checks.
How to pin it down
Two things make FX cost verifiable rather than assumed.
First, write the contract in measurable terms. Specify the markup as a number of basis points over a named reference rate, sampled at a defined moment, and require that the reference rate appear on your statements alongside the rate applied. A markup you cannot measure against a stated benchmark is a markup you cannot enforce.
Second, check the realized spread per conversion. For every conversion, reconstruct the mid-market reference rate at the time it executed, compute the realized spread, subtract the small market component, and compare the remaining markup to your contracted basis points. On a handful of trades you can do this by hand. On real volume you cannot, which is why catching FX markup overcharges reliably means pricing every conversion against the contracted reference automatically. That per-transaction check is what fintech infrastructure verification does, and FX markup is one of the most valuable discrepancy types it surfaces, precisely because it is the one no one else is watching.
Spread vs markup vs realized spread, in one view
| Term | What it is | Who it benefits | Typical size |
|---|---|---|---|
| Mid-market rate | The wholesale midpoint, the neutral benchmark | Neither; it is the reference | The true price |
| Market (bid-ask) spread | The market's buy/sell gap, a real liquidity cost | The market | A basis point or two on major pairs |
| FX markup | The provider's margin over mid-market | The provider | The bulk of your FX cost |
| Realized spread | The total gap from mid-market that you paid | What you measure | Market spread plus markup plus any games |
The bottom line
FX spread and FX markup are not synonyms, and treating them as one is how cross-border businesses overpay quietly for years. The market spread is a small, real cost. The markup is a negotiable margin that hides inside the rate and usually dwarfs the spread it is dressed up as. What you actually pay is the realized spread, and the only way to know whether it matches your contract is to measure it against the mid-market rate at the moment of conversion. Do that, and FX stops being the line you trust because you cannot check it, and becomes the line where you recover the most.
Frequently asked questions
What is the difference between FX spread and FX markup?
The FX spread, strictly, is the market's bid-ask gap, a real cost of liquidity that is very small for major currency pairs. The FX markup is the margin a provider adds on top of the mid-market rate as its fee. They get confused because providers quote a single blended rate that bundles the small market spread with a much larger markup and calls the total a spread.
What is the mid-market rate?
The mid-market rate, also called the interbank or reference rate, is the midpoint between the buy and sell prices of a currency pair in the wholesale market at a given moment. It carries no margin and is the benchmark against which spreads and markups are measured.
What is a realized or effective FX spread?
It is the total difference between the mid-market rate at the moment of conversion and the rate you actually received. It equals the small market spread plus the provider's markup plus any timing or execution effects, and it is the number that reflects what you truly paid.
Why is FX markup hard to detect?
Because it is built into the exchange rate rather than shown as a fee, and statements display only the blended rate you received without the mid-market rate it should be compared against. Reconstructing the reference rate at the exact moment of conversion is the only way to separate markup from genuine market cost.
How much does FX markup cost a fintech?
It varies by provider and corridor, but FX margin commonly adds far more to cross-border cost than the visible transaction fee. As a worked example, a markup 29 basis points above contract is about $2,900 per $1M converted, or roughly $290,000 across $100M of annual FX volume.
How do I verify my FX charges?
Specify the markup in your contract as basis points over a named reference rate at a defined timestamp, require that reference rate on your statements, then for each conversion reconstruct the mid-market rate and compare the realized spread to your contracted markup. At scale this requires pricing every conversion against the contract automatically rather than checking by hand.



