Explainers

Fiat-to-Fiat Stablecoin Payments: Two Worked Examples, Leg by Leg

A fiat-to-fiat stablecoin payment starts and ends in bank money, with a stablecoin in the middle. Two worked examples show each leg's cost and speed.

Caio Barbosa

Founder & CO-CEO

Forbes Under 30. One of the leading voices in Fintech & Crypto in Brazil. Writes weekly about stablecoins, payments, and the future of financial infrastructure in Latin America.

Cover image for Lumx blog article: Fiat-to-Fiat Stablecoin Payments: Two Worked Examples, Leg by Leg
Cover image for Lumx blog article: Fiat-to-Fiat Stablecoin Payments: Two Worked Examples, Leg by Leg

A fiat-to-fiat stablecoin payment is a cross-border payment that starts and ends in ordinary bank money, with a stablecoin in the middle. The sender's currency becomes USDC, the USDC crosses the border on a blockchain or waits in a wallet, and it becomes local currency in the recipient's bank account. Neither end has to hold crypto.

The nickname "sandwich" comes from the shape, bank money on both sides and a stablecoin in the middle. The market structure behind it is covered in new FX structures for stablecoin liquidity; this post stays on the payment itself.

This post is the fiat-to-fiat view, with two worked examples. The route-and-rails view lives in what a stablecoin corridor is, and if the stablecoin itself is new, start with what a stablecoin is.

Why the stablecoin sits in the middle

A wire between two countries rarely goes bank to bank. It hops through correspondent banks, and every hop adds time, a fee and a place to stall. The FEDS Note of March 30, 2026 on payment stablecoins and cross-border payments says that over 60 percent of wholesale payments are routed through one or more intermediaries, and that a stablecoin moving straight from sender to receiver would remove an intermediation fee and shorten the time.

The same note is careful about what that does not remove: moving a stablecoin between two holders is expected to be cheap, and the larger costs may sit where it is exchanged for ordinary currency. The price is made in the two conversions around a cheap middle.

The middle is a dollar stablecoin because both legs are priced against it, so reais to pesos is two pairs, BRL to USDC and USDC to MXN, each with its own quote. The two quotes are separate: the USDC-to-MXN rate is set when the off-ramp is created, not when the on-ramp is, so the price of the last leg can move while USDC waits in the wallet.

On Lumx every conversion is between a fiat currency and USDC or USDT, never between two fiat currencies directly. The wallet that holds USDC between legs is a custodial wallet, provisioned with the customer.

Where is each leg priced, and how does it settle and report?

The three legs of a fiat-to-fiat stablecoin payment: what sets the price, what settles it and where the record lives.

Leg

What happens

Priced by

Settled on

Reported by

1. On-ramp

Fiat in, stablecoin out

The fiat-to-USDC rate and the ramp's fees

The sender's local rail

The ramp's transaction status and the rail's own reference

2. Hold or move

The stablecoin waits in a wallet or crosses a network

Network cost, only if it moves between networks or providers

A blockchain, or a balance inside the provider

The wallet balance, or the transaction hash

3. Off-ramp

Stablecoin in, fiat out

The USDC-to-fiat rate, the payout rail fee and the provider fee

The recipient's local rail

The off-ramp status and the rail's reference, plus UETR and MT103 only if the rail is SWIFT

Two details matter. When one provider runs both ramps and holds the balance, there is no network transfer between the legs. And the report is rail-specific: a SWIFT payout carries a UETR (the end-to-end tracking reference) and an MT103 confirmation, while a local rail carries its own reference, so a team expecting MT103 on a Pix (Brazil's instant payment system, run by the Central Bank) payout is looking for a document that does not exist.

Coordinating the three legs is the job of payment orchestration with stablecoins. On Lumx each leg is a transaction with its own status and a webhook at each step, so the report is a stream of events and not a statement at the end of the month.

BRL to USDC to MXN, leg by leg

A Brazilian company pays a supplier in Mexico, with no dollar account in the chain.

First leg, Brazil. The company pays in reais over Pix, by scanning a QR code or pasting the code the stablecoin on-ramp returns.

Last leg, Mexico. The USDC sits in the company's wallet until it triggers an off-ramp to the supplier's bank account. The USDC becomes pesos and lands over SPEI (Mexico's interbank transfer system, run by Banxico), addressed to the supplier's CLABE (the 18-digit Mexican bank account number).

Leg by leg for a Pix to SPEI payment.

Leg

Priced

Settled

Reported

BRL to USDC by Pix

BRL/USDC rate, floating or locked (BRL to USDC)

Pix, 24/7, no cut-off

On-ramp status events and the Pix payment reference

USDC in the wallet

No conversion, no spread

A balance in the customer's custodial wallet

Wallet balance with its last-updated time

USDC to MXN by SPEI

USDC/MXN rate, floating or locked (USDC to MXN)

SPEI, 24/7, no cut-off

Off-ramp status events and the SPEI reference

The implied BRL-to-MXN rate is the product of the two legs, so the spread is paid twice, once in each conversion. That is the price of this structure, so compare delivered pesos, not the rate on either leg. Both rails run every day of the year, so this payment can complete on a Sunday night in minutes.

An illustration with made-up rates, not a quote. The rates already include each leg's spread.

Step

Calculation

Result

Sender pays

BRL 50,000 by Pix

BRL 50,000

On-ramp, BRL to USDC

50,000 / 5.02

about 9,960 USDC

Off-ramp, USDC to MXN

9,960 x 16.93

MXN 168,623

Delivered rate

168,623 / 50,000

3.372 MXN per BRL

Mid-market reference

17.00 / 5.00

3.400 MXN per BRL

The 0.8% between 3.372 and 3.400 is the two spreads together, and it is the number to hold against a wire quoted for the same BRL 50,000.

On Lumx the supplier is registered once as a destination with the holder relationship SUPPLIER, verified before the first payout, and the destinations.approved webhook says when it is ready. On a SPEI payout the sender of record is the customer.

USD to USDC to BRL, leg by leg

A US company pays a Brazilian supplier from a dollar bank account.

First leg, United States. The company sends dollars by ACH or FEDWIRE (the Federal Reserve's same-day wire system) to the deposit details the on-ramp returns, for the exact amount it created the on-ramp with. On Lumx, ACH is credit (push) only, with no ACH debit.

Last leg, Brazil. The USDC waits in the wallet until an off-ramp pays the supplier over Pix to a CPF (the Brazilian individual taxpayer ID) or CNPJ (the Brazilian company taxpayer ID) key.

Leg by leg for an ACH or FEDWIRE to Pix payment.

Leg

Priced

Settled

Reported

USD to USDC by ACH or FEDWIRE

USD/USDC rate (USD to USDC)

ACH in 1 to 2 business days (cut-off 2:00 PM ET), FEDWIRE the same business day (cut-off 3:00 PM ET)

On-ramp status events and the bank's own reference

USDC in the wallet

No conversion

A balance in the customer's custodial wallet

Wallet balance

USDC to BRL by Pix

USDC/BRL rate (USDC to BRL)

Pix, 24/7, no cut-off

Off-ramp status events and the Pix reference

The slow leg is the first, and it belongs to the sender's bank, not the stablecoin. An ACH deposit takes one to two business days either way, while FEDWIRE keeps the whole payment inside the same business day if it goes in before its 3:00 PM ET cut-off, and the Pix leg finishes it at any hour. After a cut-off, the payment waits for the next US business day. The total is the slowest rail plus minutes.

On Lumx the USD account details come from the on-ramp response, and a deposit has to match an on-ramp created in advance with the exact amount. A deposit that arrives after the on-ramp expires is refunded to the sender on the same rail. On a Pix payout the recipient sees the customer's registered legal name as the payer, not Lumx.

An illustration with made-up rates, not a quote. The rates already include each leg's spread.

Step

Calculation

Result

Sender pays

USD 10,000 by FEDWIRE

USD 10,000

On-ramp, USD to USDC

10,000 less 0.3%

9,970 USDC

Off-ramp, USDC to BRL

9,970 x 5.40

BRL 53,838

Mid-market reference

10,000 x 5.45

BRL 54,500

The BRL 662 gap, about 1.2%, is what the two conversions cost in this illustration.

Where the cost of a fiat-to-fiat payment sits

Five lines make up the price, and only one of them is the blockchain: the on-ramp spread (zero if the sender already holds USDC), the network cost of moving the stablecoin (nothing when the provider keeps the balance, and Lumx subsidizes the network fee on its legs), the off-ramp spread (the line that varies most), the payout rail fee and the provider's own fee. The off-ramp explainer covers the payout side, and cross-border payment costs in 2026 gives market context.

<!-- OPERATOR PARAGRAPH --> I would judge any fiat-to-fiat stablecoin payment by one number: what lands in the recipient's account for the amount that left the sender's, after every leg. Comparing on the network fee looks at the cheapest leg, and the headline spread is one of two conversions. I ask for one live quote at the real ticket size, run it in both directions when the corridor will be used both ways, and put the delivered amount next to the last wire the team sent. If the quote does not beat the wire at that size, this route is not the answer for that corridor yet.

On Lumx the documentation's own sample shows how that one number looks. A locked quote for a BRL 59,255.50 Pix deposit returns a base amount of 10,000 USDC and a final amount of 9,978 USDC, so the gap shows up in one response (0.22% in that sample, an example and not a price list). The sample uses a 1-minute lock, so the gap is the Lumx fee plus the lock fee, with no FX margin built in. A 30-second lock carries no lock fee. 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. No pre-funding means no capital parked in settlement accounts before a payment: conversion and settlement happen when the transaction starts, which is compatible with holding a USDC balance in your wallet. On a payout over Pix or SPEI, Lumx does not take a fee out of the amount that reaches the recipient, and only the recipient's bank can charge them.

What can go wrong between the legs

Four things do not change because a stablecoin is in the middle.

Compliance holds. KYC (know your customer, the verification of an individual) and KYB (know your business, the verification of a company and its owners) apply at both ends, with sanctions screening and monitoring. A payment can be held for a request for information at either end.

Quote expiry. A locked rate holds for a window, and after it the price may move.

Issuer risk. A stablecoin is only as good as its reserves and its redemption. We cover the largest one in what USDC is.

Thin pairs. A deep USDC market does not make a deep market for every local currency.

On Lumx a locked rate comes in three windows: 30 seconds with no fee, and one or five minutes with a fee that covers the volatility risk. An on-ramp paid by floating rate over Pix or SPEI expires in one day, and in seven days on other rails. When Lumx's monitoring flags a transaction it is held as an RFI (request for information, a compliance hold that asks for a document before a transaction clears) until the document arrives.

When a fiat-to-fiat stablecoin payment is the wrong tool

When both parties are in the same country, the domestic rail is the answer and a stablecoin adds two conversions for nothing. When the recipient wants to hold dollars, the stablecoin is the destination and the payment is a single on-ramp. When the destination has no local rail the provider operates, the last leg is a SWIFT wire, and calling that a stablecoin payment hides the days it takes.

On Lumx, when the last leg has no local rail, USD goes out by SWIFT with UETR and MT103 confirmations, and a euro payment runs as an off-ramp from USDC to EUR over SEPA.

What these payments look like on 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.

The customer is onboarded with KYB, an on-ramp returns the Pix code or the bank details, and an off-ramp pays a registered destination. An autoconversion rule can turn every fiat deposit into stablecoin without a per-deposit call. The wallet holds USDC on Ethereum, Polygon and Base, and USDT on Ethereum, Polygon and Tron (Stellar is only for the BRL-to-USDC on-ramp), and the rails and settlement times are on the coverage page.

The product page is global payments. The regional view is in cross-border payments in Latin America, and the operator map shows who runs each leg.

Methodology and sources

Product behavior was read on November 1, 2026 from the Lumx documentation: Transactions, Exchange rates, Wallets, Coverage, Payment rail cut-off times, Webhooks and Sender of record. Intermediaries come from the Federal Reserve FEDS Note of March 30, 2026. The 0.22% is computed from the exchange-rates sample, which uses a 1-minute lock. The two tables of amounts use made-up rates. Brazil's transition regime is in Res. BCB 520/2025, Art. 88.

Verified on November 1, 2026. Operational context, not legal, tax, or investment advice.

Cover photo: Robert Keane on Unsplash.

  • What is a fiat-to-fiat stablecoin payment?

    A fiat-to-fiat stablecoin payment is a cross-border payment that starts and ends in bank money with a stablecoin in the middle. The sender's currency becomes USDC, USDC crosses the border, and it becomes local currency in the recipient's bank account. It has three legs: an on-ramp, a hold or transfer, and an off-ramp. On Lumx each leg is its own transaction with its own status and webhook, around one custodial wallet.

  • Does the recipient need a crypto wallet?

    No. The recipient needs a bank account and the usual details for the rail: a Pix key or CPF in Brazil, a CLABE in Mexico, an account and routing number in the United States. On Lumx the recipient only ever sees a bank credit.

  • How long does a fiat-to-fiat stablecoin payment take?

    As long as the slowest rail plus minutes. Pix and SPEI settle at any hour, FEDWIRE settles the same business day, ACH takes one to two business days and SWIFT takes one to five. On Lumx the settlement time of each rail is on the coverage page.

  • Is a fiat-to-fiat stablecoin payment cheaper than a SWIFT wire?

    It can be, and the only way to know is to quote the same amount both ways. A wire can pass through correspondent banks that deduct fees the sender does not control, while a stablecoin payment puts the cost in two visible conversions. On Lumx a SWIFT payout in USD is available too, with UETR and MT103 confirmations, so the same customer can price both routes side by side.

  • Is a fiat-to-fiat stablecoin payment legal, and who is the sender of record?

    Both ends go through KYC and KYB, and the sender of record, the name on the recipient's bank statement, is on Lumx the customer's registered legal name on SPEI, ACH, FEDWIRE, SEPA, FPS, SWIFT and Pix payouts. In Brazil, Lumx has applied for SPSAV authorization and operates under the transition regime (Res. BCB 520/2025, Art. 88).

Stay up to date with what Lumx is developing.

Sign up to receive them by email.

Share on socials:

what-is-a-stablecoin-sandwich

A

what-is-a-stablecoin-sandwich

Fiat-to-Fiat Stablecoin Payments: Two Worked Examples, Leg by Leg

Copy link

Copied!

what-is-a-stablecoin-sandwich

TALK TO OUR TEAM

Ready to transform your business with stablecoins?

Discover how our infrastructure can seamlessly integrate stablecoins into your financial operations quickly, securely, and efficiently.

Explainers

In this page

©2026. All rights reserved.

Lumx US OP LLC ("Lumx") is a financial technology and payments infrastructure company. Lumx US OP LLC is a Money Service Business (MSB) registered with the Financial Crimes Enforcement Network (FinCEN) (MSB #31000316459619). Lumx is not a state-licensed money transmitter and does not, in its own capacity, engage in the provision of regulated money transmission services. All such regulated activities are conducted exclusively through, and under the licenses of, duly authorized financial-institution partners.


Lumx is not a bank, financial institution, payment institution, or custodian of client funds. Certain services made available through the Platform may be provided by duly authorized and regulated third-party partners, in accordance with applicable laws and regulations.

Please refer to Lumx’s Terms of Use and Privacy Notice for further information regarding the conditions governing the use of the Platform and the processing of your personal data.