A market maker is a firm that quotes a price to buy and a price to sell a currency pair, and earns the gap between them, called the spread. In stablecoin payments, market makers supply the local currency behind an off-ramp and the stablecoins behind an on-ramp, so their prices and inventory decide the rate on a payout quote.
You rarely deal with one directly. Your provider does, and you get one number with an expiry. For the route a payment takes end to end, start with what a stablecoin corridor is.
What does a market maker do in a payout?
A market maker stands in the middle of a market and quotes both sides. The bid is the price at which it buys, the ask is the price at which it sells, and the midpoint of the two is the mid-market rate you see on a search engine. The spread is the market maker's pay for holding inventory, and it is not the same thing as a payment provider's margin, which is a separate fee added on top. When it buys your USDC (a stablecoin that tracks the US dollar one to one), it owns dollars and owes nobody reais until it rebalances. If the real moves in the meantime, it takes the loss.
The arithmetic, with made-up prices: a market maker quotes USDC against BRL at 5.9100 bid and 5.9410 ask.
A USDC/BRL quote, worked through (illustrative prices, not a market quote)
Step | Calculation | Result |
Mid-market rate | (5.9100 + 5.9410) / 2 | 5.9255 |
Full spread | (5.9410 - 5.9100) / 5.9255 | about 52 bps |
You sell 10,000 USDC at the bid | 10,000 x 5.9100 | BRL 59,100 |
The same USDC at mid | 10,000 x 5.9255 | BRL 59,255 |
Cost of crossing the spread | 59,255 - 59,100 = 155 | about 26 bps, half the spread |
Same sale after the maker lowers its bid to 5.9050 because it already holds too much USDC | 59,255 - 59,050 = 205 | about 35 bps |
Nothing about the market changed between the first sale and the last row. The maker's inventory did. A different kind of firm plays this role at each leg.
Who quotes the price behind a stablecoin payout
Type | What it quotes | Where it sits in a payment | How you get its price |
Bank FX dealer | Fiat pairs such as USD/BRL | The wholesale market behind a local currency | A quote on request |
Crypto OTC desk | Stablecoin against local currency, larger tickets | Behind on-ramps and off-ramps | A quote on request |
Order-book market maker | Stablecoin pairs on an exchange | Exchange venues | Posted bids and offers on a public book |
Automated market maker | One token against another, from pool balances | Pools on a blockchain | A formula |
A payment provider sits on top of these, sources liquidity from one or more of them or from its own desk, and turns the result into one quote. How that sourcing works is in the section below on provider liquidity.
How does a payment provider source liquidity from market makers?
The dealers and venues a provider can draw on for a pair are its liquidity market. A provider can quote from its own desk, from one market maker, or from several and take the best price at the moment of the request. The pair, the size and the firm window drive that choice, and it belongs to the provider. It carries two exposures. The firm quoting a price must still deliver the currency at settlement, so leaning on one counterparty means depending on it. So a fair diligence question is which entity sits on the other side of the trade. Stablecoins add a second venue, since the conversion can happen over a blockchain instead of a bank (stablecoin FX liquidity structures covers the news), but the question stays who is quoting and who delivers. Lumx converts against its own liquidity and institutional counterparties only.
How does RFQ pricing differ from an order book?
An RFQ (request for quote) is a question: you tell a dealer the pair and the size, and it answers with a firm price for that size. An order book is a display: every bid and offer is public, and you take what is posted. An automated pool is a formula that moves its price as your trade moves its balances.
RFQ, order book and automated pool compared
RFQ | Order book | Automated pool | |
How a price appears | The dealer prices your exact pair and size on request | You read posted bids and offers and take them | The pool's formula prices the swap from its balances |
What happens to a large size | One price for the full size, often wider than a small one | You walk down the book and get worse prices on each level | Price moves along a curve as you trade |
Who holds the risk before you accept | The dealer, for the window it states | Nobody, until your order matches | The pool |
RFQ fits payouts because a payout is one amount to one destination, and the payer wants the final number first.
On the Lumx API you ask for a rate with the pair, the rail and the amount, and the answer comes back priced. A floating request returns a live reference rate. A locked request returns a rate that holds until an expiry time, and you pass its id on the transaction to settle at that rate.
What sets the spread a market maker quotes
A market maker prices the risk of the trade it is about to take. Five inputs move the number.
Volatility. The more a currency moves per minute, the wider the quote.
Size. A large order uses up the best-priced inventory and leaves a bigger position to hedge.
Inventory. A maker already long USDC lowers its bid for more, as in the last row of the first table.
Access to the other leg. If reais or pesos are hard to source, the price shows it.
Time held. A price that must stay firm for minutes carries more risk than one firm for seconds.
Currency matters too. The BIS Triennial Survey put global FX trading at 9.6 trillion US dollars a day in April 2025, with the dollar on one side of 89% of all trades. The release does not rank the real or the Mexican and Colombian pesos, but a corridor into them is plausibly thinner than the dollar or the euro, which is an inference, not a BIS finding.
The fifth input is the one a buyer controls. On Lumx a locked rate holds for 30 seconds, 1 minute or 5 minutes. The 30-second lock has no fee, and the longer locks carry a fee that covers volatility risk, the market maker's logic charged openly. That logic is also why a payout rate never equals the mid-market rate, as in why off-ramp rates differ from Google.
How a market maker's price becomes a binding payout quote
A provider takes the price it can get, adds its fee, adds the partner fee if the platform charges one, and shows the result. What matters is whether those layers are separate fields or one blended number, and who carries the risk while the quote is open. How the layers add up is in how stablecoin payout pricing works.
On Lumx a locked quote returns a base exchange rate and a final exchange rate, with fees itemized by layer: Lumx, partner and total. The docs show a sample BRL to USDC response, an example and not a live quote.
The Lumx docs sample for a BRL to USDC locked quote
Field | Value in the docs sample |
Source amount | BRL 59,255.50 over Pix |
Base exchange rate | 5.9255 |
Base target amount | 10,000.000000 USDC |
Final exchange rate | 5.9386 |
Final target amount | 9,978.000000 USDC |
Gap between base and final | 22 USDC, or 22 bps of the base amount |
The 22 bps gap is fees only: the Lumx fee, any partner fee and, on a 1 or 5 minute lock, the lock fee. The base rate is the raw mid and carries no FX margin. A partner fee becomes part of a locked quote when the rate is requested, so the number the end user sees already includes it. With a floating rate it goes on when the transaction is created.
Last look is a market maker's final chance to reject a trade after the client has hit its price. Principle 17 of the FX Global Code 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". The Code says firms using it should be transparent with clients.
For a payment, someone has to absorb a rejected or repriced trade. If a provider passes indicative prices straight through, that cost lands on you as slippage, the gap between the price you saw and the price you got. If it commits to the quote for its window, you either execute at the number you saw or the quote expires and nothing moves.
On Lumx a locked quote that expires is refused with the error EXCHANGE_RATE_EXPIRED, and you request a new one. If no liquidity is available for a trade, the API returns NO_LIQUIDITY_PROVIDER. An off-ramp then moves through the stablecoin transfer, the trade, the fiat transfer and success. The trade step is where the conversion against liquidity happens, and a webhook fires on each status change.
Why do BRL, MXN and COP price onshore, not from a pool?
A payout ends with a credit in a local bank account, which only a participant operating in that country can make. A token pool can price USDC against another token and has no reais to hand over.
The real and the Colombian peso add a second reason: offshore markets mostly trade them through contracts that settle in dollars and never deliver the currency. Non-deliverable currencies and onshore payouts covers that market, so this post leaves it there.
The off-ramp explainer covers the conversion leg. The treasury view is in BRL to USDC for corporate treasury.
On Lumx the final leg is Pix (Brazil's instant payment system, run by the Central Bank) for BRL, SPEI (Mexico's interbank transfer system, run by Banxico) for MXN, and Bre-B (Colombia's instant payment system) or ACH Colombia for COP, with the rail set per destination. The reference rate for each pair is on USDC to BRL, USDC to MXN and USDC to COP.
What to ask a provider before comparing spreads
I would not ask a provider to name its market makers. A name gives me nothing I can test, and a provider that discloses one today can swap it next month. I would ask for outcomes: two quotes on the same corridor in the same minute, one at your usual ticket and one at ten times that, and the same pair again an hour later. Then I would compare the base rate with the final rate on each, because that is where the fees show up, itemized or not.
Those outcomes become five questions you can check in an API response.
Five questions for a provider, and where the answer shows on Lumx
Question | A good answer | On Lumx |
Is the quote firm, and for how long? | A stated window, refused after it | Locked rates of 30 seconds, 1 minute or 5 minutes, with an expiry time |
Who absorbs a repricing inside the window? | The provider | The locked rate is fixed for the window |
Does the rate change with size? | A stated, repeatable difference | Request the same pair at two amounts |
Are the market rate and the fee separate? | Separate fields | Base and final rate, fees itemized by layer |
Who converts, and against what? | A category of counterparty | Institutional counterparties and its own liquidity |
When chasing the best market maker quote is the wrong move
It is the wrong move on small tickets, where a few basis points cost less than the checking to chase them. It is the wrong move for price protection months out, because a quote is a spot conversion for a window and a forward comes from your bank or FX broker. And it is the wrong move when the choice is by name: two providers can share market makers and still quote differently.
What this looks like on a payout with Lumx
Lumx is stablecoin payments infrastructure for businesses that move money between Latin America and the rest of the world: one API to collect, hold, convert, and pay out in BRL, MXN, COP, USD, EUR, and GBP or in USDC and USDT, over local rails such as PIX, SPEI, PSE, Bre-B, ACH, FEDWIRE, SEPA, and Faster Payments, with SWIFT and on-behalf-of payments and collections (POBO and COBO) in USD, EUR, and GBP, plus named virtual accounts, custodial wallets, and KYB/KYC built in.
A payout on the global payments API starts from the customer's custodial wallet. If the payer needs a number first, the platform requests a locked rate and shows the final target amount. If the payer confirms before the expiry, the off-ramp carries the rate id and settles at that rate. Without a lock, it prices at execution against a floating reference.
The pricing model is a monthly platform fee plus usage-based per-transaction fees, transparent FX on locked quotes, no pre-funding; no published plans. The currencies and rails are on the coverage page, and the trade step arrives as its own webhook event.
Methodology and sources
Market structure is described in general terms, with no spread, depth or volume figure for any provider. The bid and ask example uses made-up prices.
External sources, read on November 1, 2026: the BIS press release of September 30, 2025 on the 2025 Triennial Survey (bis.org), for the turnover and the dollar share; and Principle 17 of the FX Global Code, updated December 2024 (globalfxc.org), for last look.
Product behavior was read on docs.lumx.io on November 1, 2026: Exchange Rates, Transactions, Partner Fees, the exchange rate endpoint, the webhooks page and the Errors catalog.
Verified on November 1, 2026. Operational context, not legal, tax, or investment advice.
Cover photo: Anne Nygård on Unsplash.
What is a market maker in stablecoin payments?
A market maker is a firm that stands ready to buy and sell a currency pair, such as USDC and Brazilian reais, at prices it quotes, and earns the gap between its buy and sell price. Providers source that liquidity from market makers or their own desks. On Lumx you do not see the sourcing, only the quote: a base exchange rate, a final exchange rate, fees by layer and an expiry time.
How do market makers make money?
From the spread: a market maker buys at its bid and sells at its ask, so each round trip earns the difference. In return it carries inventory risk, so quotes widen in volatile markets, on large sizes and on longer holds. On Lumx the 1-minute and 5-minute locks carry a fee for volatility risk, and the 30-second lock has none.
Is an automated market maker the same as a market maker?
It does the same job with a formula instead of a trading desk. An automated market maker is a pool on a blockchain that prices swaps from its balances, so it cannot credit a bank account in reais or pesos. On Lumx the last leg of a payout is Pix, SPEI, Bre-B or ACH Colombia, depending on the currency and the destination.
Why do spreads widen on large conversions?
A large order uses up a market maker's best-priced inventory and leaves it holding a bigger position to hedge, so it quotes wider or routes the rest at a worse price. The way to see it is to request quotes at several sizes in the same minute. On Lumx you can request a locked rate at two amounts on the same corridor and compare the final exchange rate of each.
What is last look in FX, and does it affect my payout?
Last look is a market maker's final chance to reject a trade request against its quoted price. The FX Global Code, Principle 17, says firms using it should be transparent and give appropriate disclosures. For a payout, a firm quote moves that risk to the provider for the window. On Lumx a locked rate is fixed until it expires, and a late request fails with EXCHANGE_RATE_EXPIRED.





