Skip to main content
MoonPay WaaS is MoonPay’s wallet as a service. You embed it in your app and create self-custodial wallets for your users, with no seed phrase for them to write down. Private keys are split into shards, so neither MoonPay nor your app ever holds a complete key, and users can export their keys at any time. MoonPay WaaS is documented on its own site. Everything below is the short version.

MoonPay WaaS documentation

Install the SDK, log a user in, and create a wallet.

What you get

Headless SDKs

A React SDK for web and a React Native SDK for iOS and Android. Hooks only, so every screen stays yours.

Wallets on demand

useCreateWallet('ethereum') returns a wallet and its public_address. Users start with none until you create one.

EVM, Solana and Tron

Ethereum and EVM L2s (Base, Arbitrum, Optimism, Polygon), Solana, and Tron.

Signing built in

Sign messages and transactions from the wallet, including the proof-of-ownership message MoonPay Enterprise requires.

Example: onramp into a wallet you generated

A banking app wants each user to receive EUR in their own name and hold it as USDC. The user has no wallet yet, so you make one.
1

Create the wallet in your app

Authenticate the user with MoonPay WaaS, then create a wallet. Keep the public_address.
2

Sign the proof-of-ownership message

MoonPay WaaS wallets are self-custodial, so they register with MoonPay Enterprise as self-hosted wallets. Build the exact message from Crypto Addresses and sign it with the wallet you just created.
The message must be byte-identical between signing and submission, and the date inside it must be today in UTC.
3

Register the address

POST /api/addresses/crypto/selfhosted with the address, message, and signature. Registration is required before any Autoramp flow. See Crypto Addresses.
4

Create the onramp

POST /api/autoramps with the registered address as recipient_account. The user gets a named EUR virtual account. Every deposit auto-mints to USDC and lands in their wallet. See Onramp.
Self-attested registration (no signature) is available only to customers in the US and Rest of World. Customers in the UK, EEA, Canada, and Australia must use the signed flow, which a MoonPay WaaS wallet can produce directly.
The same pattern works in reverse. Register the wallet once, then use it as the source for an Offramp or a Stable to Stable swap.

Get started

Talk to the MoonPay team about access, then follow the SDK setup on the MoonPay WaaS docs site.

Contact sales

Tell the team what you are building and which chains you need.
Custodial wallets are in development. If you need MoonPay to hold keys on behalf of your users, we are working with a small number of design partners. Get in touch.