Overview
Internal wallets are platform-managed custodial wallets that hold user cryptocurrency across various blockchain networks. Each user can have multiple internal wallets for different networks and currencies, with the platform securely managing all private keys.Creating Internal Wallets
Create one or more internal wallets for a user with a single API call:Wallet creation is idempotent. If a wallet already exists for the specified network and currency combination, the API returns success without creating a duplicate.
Network and Currency Combinations
| Network | Supported Currencies | Memo Required |
|---|---|---|
linea | usdc, usdt | No |
ethereum | usdc, usdt | No |
solana | usdc, usdt, sol | No |
xrp | xrp | Yes (destination tag) |
bitcoin | btc | No |
Retrieving Internal Wallets
Get all internal wallets for the authenticated user:Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Wallet identifier for transaction history queries |
balance | string | Current wallet balance in the specified currency |
currency | string | Currency held in this wallet |
address | string | Blockchain address for deposits |
addressMemo | string|null | Destination tag/memo (required for XRP and similar networks) |
addressId | string | Identifier for linking wallet to card |
type | string | Always “INTERNAL” for custodial wallets |
The
addressId field is required when linking wallets to cards. Keep this identifier for card linking operations.Understanding Wallet Addresses
Standard Addresses (Most Networks)
For most networks (Ethereum, Linea, Solana, Bitcoin), only theaddress field is needed:
Memo-Required Networks (XRP, Stellar)
Some networks require a memo/destination tag to identify the recipient:Checking Wallet Balances
Balances are returned when retrieving wallet list:Receiving Deposits
Once a wallet is created, users can deposit funds by sending cryptocurrency to the wallet address.Deposit Flow
1
Display Deposit Address
Show the wallet address (and memo if applicable) to the user in your application.
2
User Initiates Transfer
User sends cryptocurrency from their external wallet or exchange to the displayed address.
3
Blockchain Confirmation
Transaction is confirmed on the blockchain (timing varies by network).
4
Balance Update
Platform detects the deposit and updates the wallet balance automatically.
5
Notify User
Poll wallet balance or implement webhooks to notify user of confirmed deposits.
Network Confirmation Times
| Network | Typical Confirmation Time |
|---|---|
| Linea | 1-2 minutes |
| Ethereum | 5-15 minutes |
| Solana | 5-30 seconds |
| XRP | 3-5 seconds |
| Bitcoin | 10-60 minutes |
Confirmation times vary based on network congestion and gas prices. Display expected timing to users to set proper expectations.
Deposit Example UI
Wallet Transaction History
View transaction history for a specific internal wallet:Query Parameters
| Parameter | Required | Description |
|---|---|---|
walletId | Yes | The wallet id from GET /v1/wallet/internal |
walletType | Yes | Must be “INTERNAL” for internal wallets |
walletCurrency | Yes | Currency of the wallet (e.g., “usdc”, “xrp”) |
page | No | Page number (zero-indexed). Defaults to 0 |
Transaction history is paginated with 10 transactions per page, ordered by date descending (newest first).
Linking to Cards
Internal wallets can be linked to cards for payments. See the dedicated guide for details: Card Linking Guide → Quick Example:Use Cases
Multi-Currency Support
Multi-Currency Support
Create wallets for different currencies to allow users to hold and spend various cryptocurrencies. For example, create USDC on Linea for low fees and USDT on Ethereum for broader compatibility.
Exchange Integration
Exchange Integration
Provide users with deposit addresses to fund their accounts from exchanges like Coinbase or Binance. Users send crypto from their exchange to their internal wallet address.
Cross-Network Flexibility
Cross-Network Flexibility
Support users on different blockchain networks. Create Solana wallets for users in the Solana ecosystem and Ethereum wallets for users in the EVM ecosystem.
Simplified Onboarding
Simplified Onboarding
For users new to cryptocurrency, internal wallets provide a familiar account-based experience without requiring wallet software or seed phrase management.
Card Payment Funding
Card Payment Funding
Link internal wallets to cards so users can spend their cryptocurrency holdings for everyday purchases without manual transfers.
Error Handling
Wallet Already Exists
Unsupported Network
Invalid Currency for Network
Best Practices
Create Wallets Proactively
Create wallets during user onboarding rather than when needed for a transaction. This reduces friction and provides immediate deposit addresses.
Display Clear Instructions
For memo-required networks, prominently display both the address and memo with clear warnings about including both values.
Monitor Deposits
Poll wallet balances or implement webhook notifications to detect deposits quickly and update your UI in real-time.
Show Transaction History
Display transaction history to help users track their activity and verify deposits/withdrawals.
Handle Network Delays
Inform users about expected confirmation times and display pending transactions separately from confirmed balances.
Provide Copy Functionality
Always include a “copy to clipboard” button for addresses and memos to prevent user input errors.
US Environment
For US-based users, route requests to the US environment:- Header Method
- Query Parameter Method
