Create a pool of developer-controlled wallets before users arrive so wallets are ready to assign instantly. When a new user signs up, assign an available wallet by updating itsDocumentation Index
Fetch the complete documentation index at: https://developers.circle.com/llms.txt
Use this file to discover all available pages before exploring further.
name and refId fields. This approach reduces sign-up latency
because wallet creation happens ahead of time rather than during registration.
Prerequisites
Before you begin, ensure that you’ve:- Created a Circle Developer Account and an API key.
- Registered your entity secret.
- Created a wallet set. If you haven’t, complete the Create a Dev-Controlled Wallet quickstart first.
- Installed Node.js 22+ or Python 3.10+.
-
Installed the applicable server-side SDK for your language:
- Node.js
- Python
Use the following commands to install the SDK. You can view the package information on the npm site.For more information, visit the Node.js SDK.
Step 1. Create a pool of unassigned wallets
Call the create wallets endpoint with acount value but without metadata.
Omitting metadata creates wallets that have no name or refId, leaving them
available for assignment later.
You can create up to 200 wallets per request. If you need more, make additional
requests until you reach the required total.
name and refId fields
are omitted because no metadata was provided:
Response
Step 2. Store wallet IDs
Persist the returned wallet IDs in your system and mark each one as unassigned. The storage mechanism is application-specific—you might use a database table, a key-value store, or any other persistence layer your application already uses. Track each wallet’s assignment status so that when a new user signs up, your application can quickly select an unassigned wallet and avoid double-assigning the same wallet to multiple users. A simple boolean flag or status column (for example,assigned: false) works for most implementations.
Step 3. Assign a wallet to a new user
When a user registers, select an unassigned wallet from the pool and call the update wallet endpoint to set itsname and refId. The refId field is
designed for linking wallets to entities in your own system, such as a user ID.
This endpoint does not require entitySecretCiphertext, so no entity secret
encryption is needed for this call.
name and refId:
Response
Step 4. Verify the assignment
Call the list wallets endpoint filtered byrefId to confirm the wallet is
correctly assigned to the user.
refId:
Response