Who needs a wallet in a stablecoin payment, who doesn't, and how payment providers hide keys, networks, gas, and confirmations from payers and recipients.
You don't need your own crypto wallet to make or receive a stablecoin payment. A payer can fund with a bank transfer and a recipient can get local currency in a bank account, while the payment provider holds the wallets, signs the transactions, picks the network, and pays gas. Someone always holds a wallet. The question is who.
That shift is what made stablecoins usable for finance teams that never wanted to touch a seed phrase. It also moves custody, network choice, and failure handling onto the provider, so it's worth knowing exactly what you hand over.
Key takeaways
For the full map of who does what in a stablecoin payment, start with what stablecoin infrastructure is. This page zooms in on one layer: wallets and custody.
A wallet holds the private key that signs transfers and exposes the address that receives them. The stablecoins themselves never sit "in" the wallet; they are balances on a blockchain ledger, and the key is what lets you move them.
Ethereum's own documentation on accounts puts it plainly: your private key "grants you custody over the funds," and "you never really hold cryptocurrency, you hold private keys." Whoever holds the key controls the balance. That's why the custody question and the wallet question are the same question.
A wallet does three jobs in a payment:
Take those three jobs away from the payer and the recipient, and they don't need a wallet. Somebody else does the jobs.
It depends on where the money starts and where it ends. If either end is a bank account, that party usually doesn't need a wallet at all.
| Participant | Starts or ends in | Needs own wallet? | Why |
|---|---|---|---|
| Business sending from a stablecoin treasury | USDC or USDT it already holds | Yes, or a managed wallet | It must authorize the stablecoins leaving its balance |
| Business funding from a bank | USD, BRL, MXN, or another fiat | No | The provider converts the deposit and holds the stablecoins in transit |
| Customer receiving into a virtual account | Bank transfer in, stablecoins out | Needs a destination wallet, managed or own | The converted stablecoins have to land at an address |
| Recipient paid in local currency | Bank account | No | The provider converts and pays out over a local rail |
| Recipient paid in stablecoins | Their own address | Yes | They are choosing to hold the token |
| Payment provider | Both ends | Yes, many | It runs the wallets everyone else skipped |
The pattern: wallets follow whoever holds stablecoins, even for a few minutes. Bank in, bank out, and the only wallets in the flow are the provider's.
If you want the onchain mechanics of the middle leg (signing, broadcast, confirmations), what happens onchain in a stablecoin payment walks through them. The full step-by-step from funding to reconciliation is in how a stablecoin payment works.
Providers hide the wallet by doing its three jobs on your behalf, plus two technical chores that come with them. Each one removes a decision from your users and adds a responsibility to the provider.
processing or completed.None of this is magic. It's ordinary operations work that someone has to do. The design question is whether you want to do it yourself or pay a provider to do it.
There are three common patterns, and they differ on one thing: who holds the keys.
| Pattern | Who holds the keys | Who signs transfers | Typical use |
|---|---|---|---|
| Managed (custodial) wallet | The provider | The provider, on your API instruction | Products that want balances without key management |
| Self-custody wallet registered with a provider | You or your customer | You, through an approval or signed transaction | Teams that already hold stablecoins and want to keep control |
| Deposit address that auto-converts | The provider | The provider, automatically on receipt | Receiving stablecoins and paying out fiat with no balance kept |
A fourth option is to hold nothing. Fund each payment from a bank transfer, let it convert and pay out in one pass, and stablecoins only exist for the minutes the payment is in flight.
The trade-offs between custodial, self-custody, and MPC setups get their own page: custodial vs non-custodial vs MPC wallets. The short version is that convenience and control move in opposite directions.
The payer's job shrinks to sending a bank transfer and reading a quote. Everything onchain happens inside the provider.
What goes away:
What doesn't go away:
One more thing changes, and it's easy to miss. If you hold your own wallet, an onchain mistake is yours to fix. If the provider holds it, recovery depends on the provider's process. Read their failure and refund rules before you sign.
The recipient gives bank details and receives local currency. They may never know a stablecoin was involved.
For a supplier in Brazil, that means a Pix key or bank details. For a contractor in Mexico, a CLABE. The provider converts the stablecoins and pushes the fiat over the domestic rail. The recipient's experience is a normal bank credit, with a reference they can match to an invoice.
Two things still reach the recipient:
Gas is paid by whoever submits the onchain transaction, in that chain's native token. On Ethereum, the fee is paid in ether and is charged "regardless of whether a transaction succeeds or fails." On Solana, each signature carries a base fee paid in SOL. In a fully abstracted flow, the provider submits the transaction, pays the gas, and builds the cost into its own fees. If you fund from your own wallet, you still pay gas on whatever you sign yourself.
Hiding the wallet is the right default for most finance teams. It's the wrong one in a few cases.
BlindPay supports both models, and you can mix them across customers.
A managed wallet (bl_...) is BlindPay-custodied: BlindPay generates the address and holds the keys, and your customer's balance moves through your API calls with no client-side signing. Managed wallets are in beta, with confirmed support on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, and Solana.
A blockchain wallet (bw_...) is an address your customer already controls. It's non-custodial by design: BlindPay cannot access, freeze, or recover funds in it. To fund a payout from one, the sender authorizes the quoted amount. On EVM chains that's an ERC-20 approve, the standard EIP-20 function that lets a spender withdraw up to a set amount. Solana uses a token delegation, and Stellar a signed payment transaction.
For flows where nobody wants a balance at all:
Recipients get local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO). BlindPay settles across nine networks (Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron), and when you fund from a bank or a managed wallet, the payer never picks one.
Answer four questions in order. The first "yes" usually decides it.
Write down who holds keys at each step of the flow you pick. That one page answers most of the custody questions your bank partner, auditor, or compliance team will ask.
Ready to try both models? Create a development instance and register a managed wallet and an external wallet side by side using the store guide.
Stablecoin payments are as safe as the issuer, the network, the provider, and your own controls. The seven risks to check, with real incidents and fixes.
Five stablecoin APIs compared for cross-border payments: primary use case, pre-funding requirement, payout regions, and developer experience, plus how to choose by buyer scenario.
Ten stablecoin APIs compared for 2026: BlindPay, Circle, Bridge, BVNK, Fireblocks, Crossmint, Zero Hash, Conduit, Sphere, and Borderless, across rails, custody, pricing, and compliance.