Swap anything to anything: a tour of uSwap
A walkthrough of the universal swap idea: every uSwap surface — crypto-to-crypto, gift cards, Telegram, Discord, VPN, and reloadable virtual cards — is the same routing primitive applied to a different destination.
Most crypto products lock you into a category. Exchanges only do crypto-to-crypto. Checkout services only sell gift cards. Telegram storefronts only sell Telegram things. The user has to figure out which one to open based on what they want.
uSwap doesn’t have categories. It has one primitive: the swap.
Asset A becomes asset B. A is the source asset you send. B can be another token, an Amazon gift card, three months of Telegram Premium, a Discord Nitro subscription, six months of Mullvad VPN, or an eligible reloadable virtual-card route.
Every product surface, but it’s the same product
When you open uSwap today, this is what’s behind each screen:
- Crypto → Crypto (the swap engine). Choose a supported source and destination asset, then review the live quote and route details before sending. Available providers and networks vary by pair.
- Crypto → Gift card. The destination “asset” is a redemption code. The swap engine sources the brand stock from our gift card partners; the code lands in-app when your deposit confirms.
- Crypto → Telegram Premium / Stars / boosts. The destination is time on a Telegram account number or a Stars balance. We route through Telegram’s payment rails behind the scenes.
- Crypto → Discord Nitro / boosts. Same idea — the destination is Nitro time or a boost slot on a server you specify.
- Crypto → Mullvad VPN time. The destination is days credited to a 16-digit Mullvad account number.
- Crypto → Reloadable virtual card. The destination is an eligible card route. Card-program terms, availability, and destination requirements vary by route.
The UI of each one is just a different “destination” picker on top of the same swap engine.
Why this shape
There were two practical things that pushed us this way.
The first — when we built the swap, the hardest part wasn’t getting a quote. It was handling all the weird edge cases. Sent the wrong asset. Sent the wrong network. Sent a different amount than quoted. We built a recovery flow inside the swap that exposes those choices directly to the user instead of routing them to support.
Once that recovery flow existed, every additional “product” we built was the same problem in a different costume. Gift cards? Same recovery flow. Telegram Premium? Same recovery flow. The expensive infrastructure was already there.
The second — we realized that “buy X with crypto” is a user-experience lie. The user doesn’t have X-buying intent; they have X-getting intent. Whether their wallet holds BTC or ETH or USDT or XMR is a detail the product should solve for them, not a question they should answer at checkout. Universal swap means the product holds that detail, not the user.
What stays the same across every surface
- Route-specific requirements. Providers may apply identity, eligibility, sanctions, transaction-limit, or geographic controls.
- Quote before sending. Review the amount, destination details, route costs, and restrictions shown for the selected route.
- Platform fee policy. uSwap platform fees are 0% every weekend (UTC); network, provider, and destination costs can still apply.
- Recovery options. Route status and any available recovery choices are surfaced in the flow.
- Deposit-address routing. A source asset may have a persistent deposit address; re-check the destination and live quote for every send.
What’s next
The same model can support additional surfaces over time:
- Fiat ↔ Crypto — a route where A can be fiat, subject to the availability and requirements of the relevant provider.
- Programmatic swap pairs — the universal swap exposed at the URL level. A pair-specific route can start from a page such as
/swap/btc-to-xmrand still requires a current quote before funds are sent.
Both are extensions of the primitive, not new categories.
For the routing model behind the app, read How crypto routing works. For a supported crypto destination, open the BTC to XMR route and review the live quote before sending.
More from the blog
How to protect a virtual card: details, balance, history, and controls
A practical checklist for keeping a uSwap virtual card's credentials private, checking its balance and history, and using its protected controls.
Read
Virtual card payment declined? Check these six things first
A practical order for troubleshooting a declined virtual-card payment: card state, balance, controls, history, verification, and the merchant checkout.
Read
After you buy a gift card with crypto: delivery, redemption, and support
What to check after funding a uSwap gift-card route: route state, the redemption artifact, issuer rules, and the safest way to ask for help.
Read