What is a market maker in stablecoin payments? How they set the rate on your quote
A market maker quotes a buy and a sell price and earns the gap. Who they are in stablecoin payments, how they shape your quote, and what to ask.
A market maker is a firm that stands ready to buy and sell at prices it quotes, and earns the gap between its buy and sell price. In stablecoin payments, market makers supply the local currency behind an off-ramp and the stablecoins behind an on-ramp, so their inventory and risk decide the rate on your quote.
You'll almost never talk to one directly. Your payment API does. But the spread they quote, the size they can absorb, and the risk they won't hold all show up in the rate you see. Knowing how they work makes a quote readable.
Key takeaways
- A market maker quotes a bid (buy) and an ask (sell), holds inventory, and earns the spread between them.
- In stablecoin payments, market makers include bank FX dealers, crypto OTC desks, order-book traders, and onchain automated market makers.
- Spreads widen with volatility, trade size, lopsided inventory, and the length of time a price must be held.
- A binding payout quote moves the market maker's risk off your plate for the quote window.
- Ask providers about binding windows, rate at size, and itemized margin, not about partner names.
What does a market maker do?
It stands in the middle of the market and quotes both sides. Nasdaq's glossary defines a market maker as a dealer who "maintains firm bid and offer prices in a given security by standing ready to buy or sell round lots at publicly quoted prices."
Swap "security" for "currency pair" and you have FX. A market maker in USDC/BRL quotes a price at which it will buy USDC (paying reais) and a higher price at which it will sell USDC (receiving reais). The midpoint of those two is the mid-market rate you see on Google. The gap is how the market maker gets paid.
Getting paid comes with a job: holding inventory. When it buys your USDC, it now owns USDC and owes nobody reais until it rebalances. If BRL moves in the meantime, it eats the loss. The glossary for this cluster defines market maker, bid, ask, and spread the same way.
Who are the market makers in stablecoin payments?
Several kinds of firms, each covering a different leg of the trip from stablecoin to bank account.
| Type | What it quotes | Where it sits in a payment | Strength | Limit |
|---|---|---|---|---|
| Bank FX dealers | Fiat pairs such as USD/BRL | The wholesale FX market behind the local currency | Deep in major pairs | Banking hours, relationship pricing |
| Crypto OTC desks | Stablecoin vs local currency, large tickets | Behind on-ramps and off-ramps | Size in one trade | Often minimum ticket sizes |
| Order-book market makers | Stablecoin pairs on exchanges | Exchange venues | Continuous two-sided prices | Venue access and settlement steps |
| Automated market makers | Token vs token, onchain | Onchain pools | Always on, transparent formula | No bank payout; depth limited to the pool |
Automated market makers are the newest kind. The original StableSwap paper describes Curve as "a fully autonomous market-maker for stablecoins with very minimal price slippage." It's a real market maker. It just quotes token against token, and it never touches a Brazilian bank account.
A payment provider sits on top of these. It sources liquidity from one or more of them, or from its own desk, and turns that into a single quote you can execute. The liquidity market explainer covers how those sources fit together, and types of crypto off-ramps covers who you'd deal with directly.
How does a market maker set the spread?
By pricing the risk of the trade it's about to take. Five inputs move the number:
- Volatility. The more a currency moves per minute, the wider the spread. A calm USD/EUR afternoon and a jumpy USD/ARS morning are priced differently.
- Size. A large order uses up the best-priced inventory and leaves a bigger position to hedge.
- Inventory. A market maker already holding too much USDC lowers its bid for more USDC. That's called skewing.
- Hedge access. If the other leg (reais, pesos) is hard to source right now, the price reflects it.
- Time held. A price that must stay valid for minutes carries more risk than one valid for seconds.
The currency pair matters too. The BIS 2025 Triennial Survey found FX trading reached $9.6 trillion per day in April 2025, with the US dollar on one side of 89% of all trades. Dollar pairs are the deepest in the world. Latin American currencies are traded far less, which is one reason their spreads are wider, as our LatAm liquidity guide explains.
What does that look like in numbers?
Illustrative example. A market maker quotes USDC/BRL at 5.38 bid and 5.42 ask. All numbers are made up for the arithmetic.
- Mid: (5.38 + 5.42) / 2 = 5.40
- Full spread: (5.42 - 5.38) / 5.40 x 10,000 = about 74 bps
- You sell 10,000 USDC at the bid: 10,000 x 5.38 = R$53,800
- At mid it would have been R$54,000, so you paid R$200, or about 37 bps (half the spread)
Now the maker has bought 2,000,000 USDC this morning and wants fewer dollars. It skews its bid down to 5.37:
- The next 10,000 USDC: 10,000 x 5.37 = R$53,700
- Cost vs mid: R$300, or about 56 bps
Same corridor, same size, same minute of the day, a 50% higher cost. Nothing changed in the market. The maker's inventory did. This is why depth tests should repeat across times of day, and why buy and sell rates differ even on the same provider.
What is last look, and why does it matter for a binding quote?
Last look is the market maker's chance to reject a trade after you hit its price. The FX Global Code, Principle 17, defines it as a practice in electronic trading "whereby a Market Participant receiving a trade request has a final opportunity to accept or reject the request against its quoted price," and says firms using it should be transparent and disclose how it works.
For a payment, that's a risk someone has to carry. If a provider passes indicative prices straight through, a rejected or repriced trade lands on you as slippage. A binding quote flips that: the provider commits to the price for the window and deals with its liquidity sources on its own. You either execute at the number you saw, or the quote expires and nothing moves.
That commitment is the outside view of real liquidity. A provider that can't count on its market makers can't afford to bind a price for minutes. On/off-ramp liquidity with live quotes goes deeper on why.
How does a market maker's price become your payout quote?
Through a provider that adds its margin, prices the window, and binds the result. At BlindPay, a payout quote returns:
commercial_quotation: the raw market rate when the quote was created.blindpay_quotation: the rate net of BlindPay's fee.sender_amount,receiver_amount, and itemized fee fields, so the margin is visible before you send.expires_at: payout quotes hold for 5 minutes by default. An expired quote is rejected, not executed at a new rate.
On the on-ramp side, large BRL payins can be priced through BlindPay's OTC desk instead of the standard rate. Those OTC payin quotes are BRL to USDT only, start at $5,000 USD equivalent, and expire in 10 seconds.
Either way, you never see the market maker. You see one binding number, the fees that make it up, and a deadline.
What should you ask a provider about its liquidity?
Ask about outcomes, not names. Liquidity partners are rarely disclosed, and you don't need them to judge quality. Six questions:
- Is every quote binding for a stated window, and what happens when it expires?
- If a liquidity source rejects or reprices a trade inside the window, who absorbs it?
- How does the rate change between a $5,000 and a $250,000 quote on the same corridor, at the same minute?
- Are the market rate and your margin shown as separate fields?
- Does the window or the rate change at certain times of day on my corridors?
- Is there an OTC path for large tickets, and what are its minimum and window?
Compare the answers with the FX desk vs stablecoin provider breakdown if you're coming from a bank.
What to do next
Request two payout quotes for the same corridor at once, one small and one large. Compare commercial_quotation to blindpay_quotation on each. That gap is the market maker's spread plus the provider's margin, measured on your own corridor.
FAQ
More payments articles
See all payments articlesStablecoin FX slippage: how live quotes turn the quoted rate into the rate you get
FX slippage is the gap between the rate a stablecoin on-ramp or off-ramp shows and the rate that settles. Why quote freshness is a liquidity signal, and how to check a quote-then-execute flow.
Indicative rate vs binding quote: how to show a live price before the user commits
An indicative rate previews a price. A binding quote locks it. How to show a live price while the user types, then lock it before they pay.
How to choose a virtual account provider: a 12-point checklist for developers and finance teams
Twelve criteria for evaluating a virtual account API, from rails and naming to custody, webhooks, and pricing, plus red flags and a scorecard to copy.