Skip to main content
This guide issues one address on Base for a user in your own product.
1

Activate Base

Open Dashboard → Wallets and activate Base. This only needs to happen once per chain — every address you create afterward on that chain is issued under it.
2

Generate a key

On the same page, create a new API key. It’s shown once, in a copy-once banner:
Store it as a backend environment variable.
3

Create an address

Call the create-wallet endpoint with a reference for your user, any string you’ll recognize later (your own user ID works well).
Store address against your user. It’s the address they can send to or hold funds at.
4

Reuse the same reference safely

Calling the same request again, with the same walletRef, returns the same wallet instead of creating a second one — safe to call from a signup flow without checking first whether the user already has an address.

Issuing on another chain

Once a chain is activated, pass it explicitly:
A walletRef can have one address per chain — creating it on Base and then on Arbitrum gives your user two independent addresses, not one shared across chains.
Attaching metadata (any JSON object) to a wallet at creation is useful for storing your own context — an order ID, a plan tier, anything you’ll want back later when you fetch the wallet.