WalletIDs.net API Documentation
Complete API reference for creating HD wallets, deriving unique addresses for customer orders, and tracking payments across multiple blockchain networks.
Overview
WalletIDs.net is a Wallet Factory + Monitoring Service — non-custodial infrastructure that enables you to programmatically generate blockchain wallets and track payments for customer orders.
What We Do
Generate HD seeds, derive child addresses, deliver private keys, monitor balances, send webhooks on payment detection.
What We Don't Do
Hold keys for spending, execute transactions, sweep funds, manage gas, or custody funds.
E-Commerce & Order Tracking Use Case
Create a master HD wallet for your business. For each customer order, derive a unique payment address linked to the order ID. When the customer pays, receive a webhook notification with the order reference to automatically update shipping status and fulfill the order.
Authentication
All API requests require authentication using your account's API key. Include the key in the X-API-Key header with every request.
Never expose your API key in client-side code, public repositories, or logs. Regenerate immediately if compromised.
Base URL
All API endpoints are relative to the following base URL:
Rate Limits
API requests are rate-limited based on your subscription tier:
| Tier | Requests/min | Burst |
|---|---|---|
| Free | 10 | 20 |
| Starter | 60 | 120 |
| Growth | 300 | 600 |
| Scale | 1,000 | 2,000 |
| Enterprise | Custom | Custom |
Rate limit information is included in response headers:
HD Wallets (Hierarchical Deterministic)
HD wallets allow you to derive unlimited unique addresses from a single master seed. This is ideal for tracking individual customer orders — each order gets its own payment address, all controlled by one master wallet.
How It Works
Master Wallet
Created with a mnemonic seed and xpub. Can derive billions of child addresses.
Derived Addresses
Each derived address has its own private key but shares the master wallet's xpub.
Session IDs
Link each derived address to your order/session ID for easy payment tracking.
BIP44 Derivation Paths
| Network | Derivation Path |
|---|---|
| Ethereum/Polygon/BSC | m/44'/60'/0'/0/{index} |
| Bitcoin | m/44'/0'/0'/0/{index} |
| Tron | m/44'/195'/0'/0/{index} |
| Solana | m/44'/501'/0'/0/{index} |
| XRP | m/44'/144'/0'/0/{index} |
Order & Shipping Tracking
WalletIDs.net is designed for businesses that need to track cryptocurrency payments for customer orders. Here's how to implement a complete order tracking workflow:
Step 1: Create a Master Wallet (Once)
Step 2: Derive Address for Each Order
Step 3: Customer Pays to Derived Address
Display the derived address to your customer. They send payment to this unique address.
Step 4: Receive Webhook Notification
Step 5: Update Order & Ship
Use the session_id from the webhook to find the order in your database, mark it as paid, and initiate shipping.
Each customer order gets a unique address. The session_id links payments to orders automatically.
Create Wallet
Create a new master HD wallet for a specific network and currency.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
network | string | Required | Network: ethereum, polygon, bitcoin, bsc, solana, tron, xrp |
currency | string | Required | Currency: ETH, USDT, BTC, USDC, EURC, etc. |
mode | string | Optional | Wallet mode: standalone (single address), master (HD parent for derivation). Default: standalone |
name | string | Optional | Friendly wallet name |
external_id | string | Optional | Your reference ID for correlation (e.g., account_id, order_id) |
webhook_url | string | Optional | Override account-level webhook URL |
The mnemonic and private keys are only returned once at creation time. Store them securely.
Derive Address
Derive a new unique address from an HD wallet. Perfect for generating a payment address for each customer order.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
session_id | string | Optional | Your order/session ID for tracking (recommended) |
metadata | object | Optional | Custom metadata (order details, customer info) |
Get Wallet
Retrieve details about a specific wallet.
List Wallets
List all wallets for your account with optional filters.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
network | string | Filter by network |
currency | string | Filter by currency |
limit | integer | Results per page (default: 50, max: 100) |
offset | integer | Pagination offset |
Get Balance
Get the current balance of a wallet or derived address.
Disable Wallet
Archive a wallet. Stops monitoring but retains data for records.
Lookup by External ID
Find a wallet by your external reference ID (e.g., order ID). Useful for checking if a payment address already exists for an order.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
external_id | string | Required | Your order/session ID set during derive |
parent_wallet_hash | string | Optional | Filter to specific master wallet |
The derive endpoint is also idempotent — if you call derive with the same external_id, it returns the existing wallet instead of creating a duplicate.
Balance History
Get historical balance snapshots for a wallet. Useful for tracking payment activity over time.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
limit | integer | Max results (default: 50, max: 100) |
Monitoring Settings
Enable/disable balance monitoring and set polling interval for a wallet.
Request Body
| Parameter | Type | Description |
|---|---|---|
enabled | boolean | Enable or disable monitoring |
interval_seconds | integer | Polling interval (min: 60, default: 300) |
Key Recovery
Recover the private key or mnemonic for a wallet. POST only — GET is not supported. Rate limited to 100 recoveries per hour.
Key recovery is logged for audit purposes. Rate limit: 1 recovery per hour per account.
Response by Wallet Type
| Wallet Mode | Returns |
|---|---|
standalone | private_key |
master | mnemonic (can derive all children) |
derived | private_key (computed from parent mnemonic) |
List Networks
Get a list of all supported blockchain networks.
List Currencies
Get currencies available on a specific network.
Webhook Events
WalletIDs.net sends webhooks for monitoring events (read-only observations):
payment_detected
Sent when balance increases (incoming payment detected).
Note: The amount_usd_estimate is provided for convenience. Use your own FX provider for authoritative pricing.
balance_changed
Sent when balance changes in any direction (increase or decrease).
Webhook Data Fields
| Field | Type | Description |
|---|---|---|
wallet_address | string | Blockchain address of the wallet |
wallet_name | string | User-defined wallet name |
currency | string | Currency symbol (ETH, BTC, USDT, etc.) |
network | string | Blockchain network (ethereum, polygon, etc.) |
amount | string | Payment amount (for payment_detected) |
external_id | string|null | Your order/session ID (if set during derive) |
tx_hash | string|null | Blockchain transaction hash |
confirmations | int|null | Number of block confirmations |
from_address | string|null | Sender's blockchain address |
amount_usd_estimate | string|null | Estimated USD value at time of detection |
fx_rate | string|null | Exchange rate used for USD calculation |
fx_source | string | Source of FX rate (e.g., "getmondo", "stablecoin") |
fx_timestamp | string | ISO 8601 timestamp when rate was fetched |
Webhook Security
All webhooks include an HMAC-SHA256 signature for verification:
PHP Verification Example
Retry Policy
| Attempt | Delay | Total Time |
|---|---|---|
| 1 | Immediate | 0s |
| 2 | 30 seconds | 30s |
| 3 | 2 minutes | 2m 30s |
| 4 | 10 minutes | 12m 30s |
| 5 | 1 hour | 1h 12m 30s |
Error Codes
All errors follow a consistent format:
| Code | HTTP Status | Description |
|---|---|---|
INVALID_API_KEY | 401 | API key missing or invalid |
RATE_LIMITED | 429 | Too many requests |
INVALID_NETWORK | 400 | Unsupported network |
INVALID_CURRENCY | 400 | Currency not available on network |
WALLET_NOT_FOUND | 404 | Wallet ID doesn't exist |
NOT_HD_WALLET | 400 | Cannot derive from non-HD wallet |
KEY_NOT_STORED | 400 | Key recovery unavailable for this wallet |
INSUFFICIENT_QUOTA | 402 | Plan limits exceeded |
Supported Chains
| Chain | HD Support | Native Metadata | Default Mode | Notes |
|---|---|---|---|---|
| Ethereum | ✅ Yes | ❌ None | standalone | Use HD child addresses |
| Polygon | ✅ Yes | ❌ None | standalone | Use HD child addresses |
| Bitcoin | ✅ Yes | ❌ None | standalone | Use HD child addresses |
| Solana | ✅ Yes | ❌ None | standalone | Use HD child addresses |
| Tron | ✅ Yes | ❌ None | standalone | Use HD child addresses |
| BSC | ✅ Yes | ❌ None | standalone | Use HD child addresses |
| XRP | ❌ Single | ✅ Destination Tag | standalone | One wallet + tags |
For e-commerce order tracking, we recommend using HD-capable chains (Ethereum, Polygon, Bitcoin, etc.) where each order gets a unique derived address.
WalletIDs.net issues unique XRP addresses only. Destination tag support is not implemented by WalletIDs.net — that's a payment-routing optimization for your application to handle.
If you want to share one XRP address across multiple customers (to avoid the 10 XRP reserve per address):
- Create ONE XRP wallet via WalletIDs.net
- Your app generates destination tags (e.g., order IDs)
- Display: "Send to
rXXX...with memo12345" - Your app matches incoming payments by tag
- WalletIDs.net reports "balance changed" — you handle the rest
Derive Address (HD wallets) creates a real, unique blockchain address with its own private key. This is wallet issuance — WalletIDs.net's job.
Destination Tags (XRP/XLM) are just metadata on transactions to a single shared address. This is payment-routing logic — your application's job.
Both achieve the same goal (track payments per customer), but only Derive Address creates something on-chain. WalletIDs.net issues addresses; your app handles payment matching.