Introducing USDT Swaps: From Sats to Stablecoins in Seconds ⚡💵
Today we are stoked to announce USDT Swaps - connecting Bitcoin to the world's most used stablecoin. Swap between Lightning and USDT on all major networks, without custody, accounts, or KYC! 🚀
For nearly 7 years, Boltz has been enabling seamless swaps across Bitcoin layers: on-chain Bitcoin, Lightning, Liquid, Rootstock and, as of recently, Arkade. Every swap is strictly non-custodial: No trust required, it just works.
But Bitcoin doesn’t exist in a vacuum. People need to move between Bitcoin and dollar-denominated stable value to pay clients, employees or hedge volatility. Until now, that meant switching to an entirely separate ecosystem - centralized exchanges, new custody assumptions, new counterparty risk. Not anymore.
With USDT Swaps, Boltz bridges Bitcoin and traditional finance via USDT directly. Send sats on Lightning, receive USDT. Send USDT, receive sats over Lightning. Move between U.S. Dollar and Bitcoin value on your terms: unruggable, in seconds.
Here are some of the use cases this unlocks:
Top up your favorite crypto debit card with Lightning. Most support USDT natively, yet Lightning is nowhere to be found. With Boltz you can now swap Lightning into USDT and load your card in seconds.
Send Lightning straight into your bank account. Move from Lightning directly into USD in your FV Bank, Revolut, or Xapo account. The entire flow from sats to spendable fiat stays non-custodial until your Bank credits the USD.
Hedge volatility on your terms. Markets dipping? Swap Lightning into USDT and hold USD-stable value without surrendering control to anyone. When you’re ready to stack sats again, swap back just as easily.
Accept Lightning, settle in USDT. A coffee shop running a Lightning POS can sweep daily revenue into USDT or even directly split the settlement between USDT and Bitcoin with the upcoming integration of USDT swaps in our popular Boltz BTCPay Plugin.
There are probably many more use cases that we can’t think of just yet.
“This isn’t just a new Boltz swap pair. It’s a fundamentally new capability for Bitcoin.”
— Kilian Rausch, CEO of Boltz
What’s the deal with USDT0? 🌐
USDT exists on dozens of chains: Ethereum, Polygon, Arbitrum, Optimism and many more. If Boltz had to support each network individually, we’d need to integrate every one of them and maintain liquidity across all of them too. That’s neither practical nor scalable. USDT0 changes that.
USDT0 is the omnichain version of Tether, built on LayerZero’s Omnichain Fungible Token (OFT) standard. It allows USDT to move natively across connected networks using LayerZero’s messaging protocol: one token, one liquidity layer, all chains.
For Boltz, this is a game-changer. By concentrating liquidity on Arbitrum and leveraging the OFT protocol, we can efficiently serve users across every USDT0-connected network while maintaining our liquidity and integration efforts focused - in one place. You can find the full list of supported networks, along with contract addresses, here and here.
Frankly, without USDT0, and without the incredible team behind it, today’s launch would not have been possible. 🙏
The Architecture: Routed Swaps 🔀
USDT Swaps introduce a new concept in Boltz: routed swaps. Unlike direct swaps (e.g. Bitcoin ↔ Lightning), a USDT swap is composed of at least two hops: a Boltz Swap leg and a DEX Swap leg stitched together seamlessly behind the scenes by a swap client like boltz.exchange.
The reason for this architecture is explained easily: we tried before and failed miserably. 🤕 The Free Options Problem is not theoretical but very much a real-world problem whenever HTLCs are involved. You can get a primer on the Free Option Problem in this article from our friend Roy.
The second key insight is tBTC. With this launch, Boltz natively supports atomic swaps between Lightning and tBTC on Arbitrum. tBTC is Threshold’s ERC20 wrapper for Bitcoin. Similar to WBTC, but open to mint, unmint and use for anyone. By adding a DEX Swap hop between tBTC and USDT0 on Arbitrum, a form of atomic swap that is designed to handle assets of different denominations, Boltz can offer Lightning ↔ USDT swaps.
From user perspective, both hops execute as a unified flow. The user selects “Lightning” and “USDT”, enters an amount, and the routing engine handles everything else. If no direct pair exists, the system automatically discovers the multi-hop route through tBTC, constructs the DEX path, and presents a single end-to-end quote.
It goes without saying: this architecture is extensible. Adding other stablecoins like USDC is as simple as a new configuration entry that points at an intermediate asset with a router.
Tech Deep Dive: Arbitrum, The Router Contract and the Quote Engine 🔧
At the heart of every Lightning -> USDT swap is the router contract on Arbitrum. Since USDT swaps are routed through tBTC as an intermediate asset, the same Router contract that serves tBTC swaps handles USDT.
The Router’s job is atomicity: it combines the Boltz swap claim and the DEX trade into a single, all-or-nothing transaction. Here’s the claimERC20Execute function, the core of what powers USDT claims, simplified from boltz-core:
// Router.sol (simplified)
function claimERC20Execute(...) external nonReentrant {
// 1. Claim tBTC from ERC20Swap using the swap preimage
claimERC20Swap(claim);
// 2. Swap tBTC -> USDT0 via DEX (e.g. Uniswap on Arbitrum)
executeCalls(calls);
// 3. Send USDT0 to the user, revert if below minAmountOut
sweep(destination, token, minAmountOut);
}Three steps, one transaction:
Claim: The Router claims tBTC from the ERC20Swap contract using the swap preimage and an EIP-712 signature that authorizes the claim-and-execute combination.
Execute: It runs the DEX calls that swap tBTC for USDT0 on Uniswap. The calldata is constructed server-side. The user doesn’t need to interact with the DEX directly.
Sweep: The resulting USDT0 is sent to the user’s wallet. If the output amount falls below
minAmountOut, the entire transaction reverts - protecting the user from unfavorable slippage.
Reaching other chains via OFT: If the user's destination is not Arbitrum, there is one additional step. After the swap completes, the USDT0 is bridged from Arbitrum to the target chain via LayerZero's OFT protocol. Because USDT on Arbitrum is natively USDT0, an OFT, bridging is a direct cross-chain transfer. This is what allows Boltz to concentrate all swap liquidity on Arbitrum while serving Ethereum, Unichain, Optimism, Polygon, Rootstock, and more from a single pool.
Tl;dr: One signature from the user. One transaction on-chain. The DEX swap and the Boltz lockup/claim happen atomically - either everything succeeds or nothing does.
The DEX leg is powered by Boltz’s quote API, which fetches real-time pricing for the tBTC ↔ USDT0 pair on Arbitrum. Quotes are requested with the exact token addresses and amounts, ensuring users see accurate end-to-end pricing before confirming a swap. If the DEX quote moves beyond the configured tolerance between swap creation and claim execution, the system pauses and asks the user to approve the new rate before proceeding. Slippage protection is built in.
One question left: Why Arbitrum? In short: Low gas fees, fast transfer-out times for USDT0’s protocol, and decent liquidity for both tBTC and USDT. This made it the ideal execution layer for Boltz USDT Swaps. We compared it to many other options and, for now, it’s the best tool for the job.
And what's the best validation of a sound architecture? Others adopting it.
Our Router Contract was already adopted, other parts of our other contracts were adopted, and the tBTC-on-Arbitrum combination we pioneered is being picked up too.
Open Source FTW! 💪
Gas Abstraction: No ETH Required 🔮
One of the biggest UX wins and especially relevant for our Bitcoiner userbase: users don’t need to hold or deal with ETH on Arbitrum. The gas abstraction system uses a dedicated signer that handles gas on behalf of the user. For USDT0 receives, the claim address is set to the gas abstraction signer, which submits the claim transaction and forwards the USDT0 to the user’s wallet.
When it makes sense, a small portion of the received tBTC is automatically swapped for native gas tokens via the DEX during the claim, so the user ends up with enough gas to move their USDT onward.
Prefer Simplicity? Go ₿itcoin-Only.
If the growing list of assets and layers feels overwhelming, flip on "Bitcoin-Only Mode" in the settings menu. It strips the interface down to Bitcoin and Lightning - a clean swap experience for Bitcoiners.
What’s Next ⏭️
Crunch numerous bugs and issues
Enable all our other layers like Bitcoin on-chain ↔ USDT
Integrate Legacy Mesh: enabling swaps ↔ USDT on Tron, Solana and more
Integration of USDT swaps for merchants using our BTCPay Plugin
Various SDK integrations
USDC via CCTP using the same routed swap mechanism
More chains as USDT0 extends its supported networks
Try it out!
USDT Swaps are live at 👉 beta.boltz.exchange 👈






