The problem
Accepting crypto is still way harder than it should be. Your user holds USDC on Arbitrum, you want it on Ethereum; they hold SOL, you want stablecoins. Today that means bridges, swaps, wrong-network mistakes, and a checkout flow that scares people off.
What Uniport does
Uniport collapses all of that into a single React component. The payer sends whatever they have from whatever chain they're on; you receive the token you specified on the chain you specified. No API key, no backend to run — the SDK talks to Uniport's hosted infrastructure.
<UniportButton>, set recipient and
destinationToken, handle onSuccess. That's the
product.
How it feels to integrate
- One component —
<UniportButton recipient=… destinationToken="arbitrumUSDC" /> - Any source — payer chooses the chain and token they already hold
- Canonical token naming —
ethereumUSDC,arbitrumUSDC,solanaSOL,bitcoinBTC, and more - Refund-safe — optional
refundAddress, or the payer sets it in the modal - Themeable — light/dark,
default/compact/outlinevariants
Why I built it
Every crypto app re-implements the same painful "how do I get paid across chains" plumbing. Uniport turns that into a primitive other builders can ship in an afternoon — the kind of boring-but-essential infra I love making disappear.