What is a double-decker stablecoin sandwich? USDC to EURC on-chain FX vs converting at the off-ramp

A double-decker sandwich swaps USDC for EURC on-chain, then cashes out in euros. How it works, what it costs per BIS Working Paper 1385, and when it fits.

A double-decker stablecoin sandwich moves money across borders with two stablecoins: dollars become USDC, USDC is swapped on-chain for EURC (a euro stablecoin), and EURC is redeemed for euros. The currency exchange happens on a blockchain. BIS Working Paper 1385 (October 2026) finds the on-chain rate near mid-market, but liquidity is thin and fiat access still needs intermediaries.

The single-layer version is the standard pattern: fiat in, one dollar stablecoin across, fiat out. What is a stablecoin sandwich? covers it. This page looks at the variant with a second stablecoin, using the cost data in BIS Working Paper 1385, summarized in what the BIS "competing rails" paper found.

Key takeaways

  • A double-decker sandwich runs USD to USDC to EURC to EUR, with the FX swap on a decentralized exchange.
  • On-chain USD to EUR stablecoin rates averaged very close to the Bloomberg mid rate in the BIS data.
  • Protocol fees, several gas payments, and fixed fiat withdrawal fees still add up.
  • Only the USD to EUR stablecoin pair has meaningful DEX volume, about $15 million a day.
  • For paying a euro bank account, converting USDC straight to EUR at the off-ramp is the shorter route.

How does a double-decker stablecoin sandwich work?

It replaces the off-chain FX step with an on-chain swap between two fiat-pegged stablecoins.

The BIS paper writes the flow as Fiat USD to USDC to EURC to Fiat EUR. In its worked example (Section 6.2.3):

  1. A US sender converts dollars into USDC on a centralized exchange.
  2. The USDC moves to a self-custody wallet (a wallet whose keys the sender holds). That costs gas and possibly a withdrawal fee.
  3. The sender swaps USDC for EURC on Uniswap, a decentralized exchange (DEX), paying a protocol fee and more gas.
  4. The EURC moves to a venue that supports euro withdrawals and is redeemed into euros, paying a fiat withdrawal fee.

EURC is Circle's euro stablecoin. Circle describes it as "backed 100% by euro" and "MiCA-compliant." For what MiCA requires of euro stablecoins, see MiCA stablecoin rules explained.

How is the exchange rate set on a decentralized exchange?

By a formula, and arbitrage keeps it close to the market.

Most DEXs use automated market makers (AMMs): pools holding two tokens, priced by the ratio of their reserves. Uniswap's documentation describes Uniswap as an automated market maker, "a set of smart contracts" that manages pools of two tokens and "updates prices based on pool state." In the constant-product model the BIS paper describes, a pool with x USDC and y EURC implies a EUR/USD price of y divided by x. Every trade changes the reserves and so the price. Arbitrageurs buy whichever side is cheap compared with traditional FX, which pulls the on-chain rate back toward the market, "subject to gas costs and liquidity depth."

That last clause is the catch. A small pool moves more per trade, so a large swap gets a worse average price. That is slippage.

What does a double-decker sandwich cost?

Four things, per the BIS paper: the FX cost in the stablecoin-to-stablecoin rate, the DEX protocol fee, blockchain gas fees for each on-chain step, and fiat on- and off-ramp fees at both ends.

The paper's numbers:

  • FX cost. For EUR, GBP, CHF, and SGD, DEX-implied rates were on average very close to the Bloomberg mid rate.
  • Protocol fee. Typically 1 to 30 basis points on major pools (a basis point is 0.01%). The example uses a Uniswap fee of 0.05%.
  • Gas. Three on-chain transfers cost around $0.60 in total if all run on Ethereum, per the example.
  • Fiat withdrawal. The example adds a €1 euro withdrawal fee at the minimum.

The paper's conclusion is that even with a near-mid rate, "the accumulation of protocol fees, multiple gas payments, and fixed fiat withdrawal charges can generate a nontrivial all-in spread."

How does it compare with converting USDC to EUR at the off-ramp?

Different steps, different owners of the risk. The table compares three routes for sending dollars to a euro bank account.

RouteSteps the sender runsWhere FX happensWho holds the walletMain costs
Payout API, USDC to SEPA (BlindPay)Request a quote, send USDC, executeAt the provider, locked in the quoteThe sender's own wallet, or an optional managed walletPer-transaction fees disclosed in the quote
Single-layer sandwich via exchangesBuy USDC, transfer to a second exchange, sell for EUR, withdrawCentralized exchange order bookExchange accounts at both endsTrading fees, gas, fixed withdrawal fee
Double-decker sandwich via a DEXBuy USDC, move to self-custody, swap to EURC, move to an off-ramp, redeemDEX pool, on-chainSelf-custody walletProtocol fee, several gas fees, withdrawal fee

The BIS paper's single-layer example used one exchange to buy USDC and another to sell it for euros, with a 1% trading fee, about $0.19 of Ethereum gas, and a €1 SEPA withdrawal fee. Its double-decker example swaps that order book for a pool. Neither removes the fiat edges.

Why does liquidity limit the double-decker route?

Because almost all on-chain FX volume sits in one pair.

The paper reports that only the USD to EUR stablecoin pair shows meaningful DEX activity, averaging about $15 million a day. "Most non-USD stablecoin pairs have negligible trading volume on DEXs, limiting their practical relevance for cross-currency transfers at present." Centralized exchanges add about $185 million a day for USD stablecoins against the euro. Traditional FX turns over about $2.7 trillion a day in EUR-linked instruments.

So the double-decker route is mostly a euro story today. For a supplier in Brazil or Mexico, there is no deep on-chain BRL or MXN pool to swap into, and the conversion happens at the off-ramp. Our page on onchain liquidity vs off-ramp liquidity covers why a deep pool and a deep payout are different things.

Does the double-decker route remove intermediaries?

No. It moves price discovery on-chain. It doesn't move fiat on-chain.

DEXs don't accept bank deposits, pay out to bank accounts, run KYC, or hold banking relationships, so the paper notes users still rely on centralized exchanges, crypto-focused banks, or third-party ramp providers at both ends. Its verdict: the double-decker sandwich "decentralizes the FX price discovery mechanism," but "centralized entities, such as CEXs, remain essential for fiat currency access."

There is also operational load. Self-custody means managing keys, holding native tokens for gas, and getting networks right. The BIS paper notes that sending tokens to an incompatible address or the wrong network can mean permanent loss. The Federal Reserve's March 2026 FEDS Note makes a related point from the other side: even with stablecoins, large banks may keep a role in holding foreign-currency stablecoin inventories and running compliance across jurisdictions.

When does a double-decker sandwich make sense?

In narrow cases. Use this checklist.

  • You already hold stablecoins in self-custody and have treasury staff who run on-chain operations daily.
  • You want euro exposure on-chain, for example to hold EURC as a balance rather than convert at once.
  • Your amounts fit the pool. Check price impact at your ticket size before each swap.
  • You have a regulated off-ramp for EURC at the far end, with the recipient's bank account onboarded.

If the goal is simply to pay a euro invoice into a bank account, the off-ramp route has fewer steps and fewer places to make a mistake. How to off-ramp USDC to euros over SEPA walks through it, and the SEPA countries list shows where a payout can land.

How does BlindPay handle this?

BlindPay converts USDC to EUR at the off-ramp and pays out over SEPA to bank accounts across the SEPA zone. You request a payout quote for a specific bank account, and the quote locks the exchange rate and fees for 5 minutes and shows the exact euro amount the recipient receives (payout quotes). Whichever supported network you send USDC from, the SEPA crypto leg runs on Polygon, and the conversion to euros happens inside the payout (payment methods). SEPA payouts take about 1 to 2 business days. BlindPay combines a monthly plan with per-transaction fees that vary by rail and network, disclosed in the live quote before execute.

What to do next

Take one euro payment you make often. Price it three ways in the same minute: a payout API quote for USDC to SEPA, an exchange-to-exchange route, and a USDC to EURC swap plus redemption. Count every fee and the number of steps your team runs, then pick the route with the most euros delivered per hour of work.

FAQ