Who carries FX risk in a stablecoin payout? A step-by-step map, and why quotes expire

You carry FX risk until you lock a quote, the provider carries it inside the window, and it comes back to you on a refund. Step-by-step map and math.

In a stablecoin payout, FX risk moves between parties. The sender carries it until a quote is locked. The provider carries it from the quote until the recipient is paid, as long as the payout executes inside the window. If the payout is refunded in stablecoins, the risk is the sender's again. Quotes expire because that middle stretch costs the provider money.

Knowing who holds the risk at each step tells you where a bad rate can come from, and which design choices actually reduce it.

Key takeaways

  • Before a quote, the exchange rate is your problem. After a binding quote, it is the provider's, until the window closes.
  • A quote is a free option for the sender. The provider prices it into the spread, which is why windows are minutes, not hours.
  • Illustrative math: at 1% daily volatility, a 5-minute window carries about 6 bps of one-standard-deviation move, a 1-hour window about 20 bps.
  • A refund comes back in stablecoins. Re-sending means a new quote at the new rate, so the market move since the first quote lands on you.
  • Last look and "rate at execution" settlement quietly move the window risk back to the sender. Ask about both.

What is FX risk in a cross-border payout?

FX risk is the chance that the exchange rate moves between the moment you decide an amount and the moment money lands. Whoever's amount changes when the rate moves is the party carrying it.

The market behind that rate never sleeps on weekdays. The BIS 2025 Triennial Survey put global FX trading at $9.6 trillion per day in April 2025, with the US dollar on one side of 89% of trades. Prices update continuously, so any gap between pricing and delivery is exposure.

There are two kinds of FX risk in a payout. Market risk is the rate moving. Settlement risk is one side of a trade being delivered while the other is not: the BIS estimated that $2.2 trillion of daily FX turnover was still exposed to settlement risk in April 2022. This article is about market risk. Herstatt risk explained covers the settlement side.

Who carries the risk at each step of a payout?

The table follows a USDC to BRL payout over Pix from the moment you owe money to the moment the recipient holds reais.

StepWhat happensWho carries FX riskWhy
1. Before a quoteYou hold USDC and owe an amount in BRLSenderNo rate is fixed, so the USDC cost of your BRL bill moves
2. Quote createdThe provider returns a rate, fees, and expires_atProviderA binding quote fixes receiver_amount
3. Executed in the windowStablecoins are pulled, conversion startsProviderThe payout runs against the locked quote
4. Fiat on the railPix delivers in minutes, other rails take longerProviderThe recipient amount was fixed at step 2
5. Quote lapses unusedNothing movesSenderThe next quote is priced at the new market rate
6. Payout refundedStablecoins come back to a walletSenderYou are back at step 1
7. Recipient paidReais sit in a Brazilian accountRecipientTheir local currency is now their exposure

Steps 2 to 4 are the only stretch where the provider holds the risk. Everything a provider does to price, shorten, or hedge that stretch shows up in your rate.

Why do quotes expire?

Because a binding quote is a free option for the sender. During the window, the sender watches the market for free. If the rate moves against the provider, the sender executes. If it moves the sender's way, the sender can let the quote die and ask for a better one.

The provider cannot refuse the bad side of that bet, so it charges for it inside the spread. The longer the window, the larger the possible move, and the more the option is worth.

A common rule of thumb scales volatility with the square root of time: the typical move over a window is about daily volatility x √(window / 1 day).

Illustrative example. Assume a currency pair with 1.0% daily volatility and a $50,000 payout.

WindowCalculationTypical moveOn $50,000
10 seconds1.0% x √(10 / 86,400) = 1.0% x 0.0108about 1.1 bpsabout $5
5 minutes1.0% x √(5 / 1,440) = 1.0% x 0.0589about 5.9 bpsabout $29
1 hour1.0% x √(60 / 1,440) = 1.0% x 0.2041about 20.4 bpsabout $102

A one-hour window carries roughly 3.5 times the move of a five-minute window. The provider either widens the spread to cover it or stops binding the quote. Either way, the sender pays.

Why are some quote windows shorter than others?

Because the risk is different. BlindPay's payin, payout, and transfer quotes last 5 minutes by default, per the cut-off times reference. Two exceptions follow the risk:

  • OTC payin quotes expire in 10 seconds. They price large BRL deposits into USDT, with a minimum of $5,000 USD equivalent, so the size at stake is larger and the window is shorter.
  • SEPA payout quotes can be shorter than 5 minutes. The euro rail has its own deadline, and the quote cannot promise delivery beyond it.

Transfer quotes are the odd one out: there is no currency conversion, so the window locks the amount and destination rather than a rate.

The practical rule: read expires_at from every payout quote response, and note it is in epoch milliseconds. Never hardcode a window.

What happens to FX risk when a payout fails?

It comes back to you. At BlindPay, if a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set. On Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review.

The refund is in stablecoins, so the refund itself carries no FX loss. The loss shows up when you re-send. If the recipient still needs R$53,700 and the rate has moved from 5.37 to 5.32 BRL per USDC since the first quote, the second payout costs 10,093.98 USDC instead of 10,000 (illustrative: 53,700 / 5.32 = 10,093.98). That 93.98 USDC is the market move you carried after the refund.

Stablecoin payout statuses explains how failed and refunded differ.

Who carries the risk on the on-ramp side?

The same logic runs in reverse. A payin quote locks the fiat amount the payer sends and the stablecoin amount the wallet receives. You create the payin from it within 5 minutes, and then the payer sends the money.

What changes is the wait for the deposit. For a standard Pix payin, BlindPay waits up to 30 minutes before marking it failed, with a reconciliation check first, according to the payins reference. OTC Pix payins wait until 23:59 Brasília time instead. If an OTC deposit never arrives, a flat $100.00 penalty is added to the quote's billing fee.

That penalty is risk allocation written down: a large price was held for a deposit that never came, and the party who did not send pays for it.

Does last look shift the risk back to you?

It can. The FX Global Code, the conduct code for wholesale FX, defines last look in Principle 17 as a final opportunity for the quoting firm to accept or reject a trade request against its quoted price, and requires firms that use it to disclose how.

A provider with last look, or one that settles at "the rate at execution", has handed the window risk back to you without changing the screen. The BIS Markets Committee made a related point about FX execution algorithms: they shift execution risk from dealers to users.

So ask every provider two questions. Is the quote binding if I execute before expiry? Can you reject or reprice after I execute? At BlindPay, a payout can only execute against a valid, unexpired quote, and the quote's receiver_amount is what the bank account receives.

How should you design a payout flow around this?

Keep the risky stretches short and visible.

  • Quote at the last responsible moment. Request the quote when the confirmation screen loads, not when the user starts the flow.
  • Re-quote automatically. When expires_at passes, fetch a new quote and highlight the change only if the amount moved.
  • Log every re-quote. The gap between an expired quote and its replacement is a direct read of how much risk you carried. FX slippage and live quotes shows how to log quoted vs settled rates.
  • Use the right tool for long gaps. A quote covers minutes. A BRL invoice due in 60 days is a different exposure; see live quotes vs forward contracts.
  • Treat a refund as a new trade. Re-quote before re-sending, and tell the recipient the amount may change.

The vocabulary used here (binding quote, window, spread, re-quote) is defined in the on/off-ramp liquidity glossary. For how liquidity sources shape the quote you get, see onchain liquidity vs off-ramp liquidity.

How we know: BlindPay facts come from the payout quotes, payins, and cut-off times documentation. Market figures come from the BIS and the FX Global Code, linked above.

What to do next

Create one payout quote for your main corridor from the payout quotes docs, note its expires_at, and request a second quote five minutes later. The difference between the two is the risk you would have carried without a binding quote.

This article is general information, not legal, tax, or financial advice.

FAQ