Automatic Provisioning
Wallets are automatically created when a user is created - no separate setup required. Each user receives wallet addresses on Polygon and Ethereum. Other chains can be added later.Wallet Properties
Custodial
Custodial
HIFI wallets are custodial, meaning HIFI manages the private keys for security and regulatory compliance. This allows for features like account recovery and compliance monitoring while users maintain full control over their funds through the API.
Multi-Chain
Multi-Chain
Each user has a unique wallet address on every supported blockchain. HIFI
currently supports Polygon, Ethereum, Solana, and Base, with additional chains
available based on customer demand. Each blockchain has its own address - for
example, a single user has separate addresses for USDC on Polygon, USDC on
Ethereum, and USDC on Solana.
Multi-Currency
Multi-Currency
Wallets can hold multiple stablecoins simultaneously. Supported currencies include USDC and USDT, with additional stablecoins available based on customer needs.
Checking Balances
Get real-time balance information for a specific currency on a specific chain using the Get Wallet Balance endpoint. Request:| Parameter | Type | Required | Description | Example Values |
|---|---|---|---|---|
chain | string | ✅ | Blockchain network | POLYGON, ETHEREUM, SOLANA, BASE |
currency | string | ✅ | Stablecoin to check balance for | usdc, usdt |
Raw balance in smallest unit (e.g., micro-USDC for USDC with 6 decimals)
Human-readable balance in standard units (e.g., “0.01” USDC)
Number of decimal places for this token (6 for USDC)
Smart contract address for this token on the specified chain
Balance Units: The
balance field returns the amount in the token’s
smallest unit. For USDC (6 decimals), a balance of “10000” equals 0.01 USDC.
Use displayBalance for user-facing displays.Receiving Funds
Wallets can receive funds through two methods:Blockchain Transfers
Wallets can receive stablecoins from:- Other HIFI users (instant, no fees)
- External wallets (standard blockchain confirmation times)
- Exchange withdrawals
- Any wallet address on supported networks
Fiat Onramps
When a user deposits fiat currency (USD, EUR, etc.) through a virtual account, it’s automatically converted to stablecoins and credited to their wallet. This requires:- KYC verification for the relevant rail
- Virtual account setup for the desired fiat currency
Tracking Deposits
Track all incoming blockchain deposits via the Get Inbound Deposits endpoint, which returns a full history of stablecoins received by the user’s wallet. Request:Blockchain transaction hash (view on block explorer)
Deposit status:
PENDING, COMPLETED, FAILEDHuman-readable amount (e.g., “19” USDC)
Raw amount in smallest unit (e.g., “19000000” micro-USDC)
Pagination cursor for retrieving additional records
Real-Time Updates: Subscribe to
WALLET.DEPOSIT webhook events to receive
immediate notifications when deposits are detected on the blockchain.Sending Funds
Wallets can send stablecoins through two methods:Wallet Transfers
Send stablecoins to other HIFI users or external wallet addresses using the Create Crypto Transfer endpoint. Transfer to another HIFI user:No Registration Required: You can send to any external wallet address
directly without registering it first. Simply provide the address in the
destination.address field.Fiat Offramps
Convert stablecoins to fiat currency and send to a bank account. This requires:- KYC verification for the relevant rail
- Offramp account setup with bank account details
Key Concepts
Wallet Types
Wallet Types
Each wallet has a
walletType that indicates its purpose:- INDIVIDUAL - Personal wallet for individual users
- BUSINESS - Business wallet for corporate users
Chain-Specific Addresses
Chain-Specific Addresses
Each blockchain network has its own address format: -
Ethereum/Polygon/Base - 0x format (e.g.,
0x1b932E54...) - Solana -
Base58 format (e.g., 9xQeWvG816...) Always use the correct address for the
target blockchain to avoid lost funds.Token Decimals
Token Decimals
Stablecoins use different decimal places: - USDC - 6 decimals (1 USDC =
1,000,000 micro-USDC) - USDT - 6 decimals Always check the
decimals
field in API responses to correctly display amounts.Confirmation Times
Confirmation Times
Blockchain transfer speeds vary by network:
- Polygon - ~2 seconds
- Ethereum - ~12 seconds
- Solana - ~0.4 seconds
- Base - ~2 seconds
Sample Code
1
Check balance before transfer
Get the current balance using the Get Wallet Balance endpoint.Check that
displayBalance is greater than or equal to the amount you want to send. If insufficient, the transfer will fail with an insufficient balance error.2
Monitor deposit status
List recent deposits using the Get Inbound Deposits endpoint.Look for the deposit record with the matching
transactionHash. The status field shows:PENDING- Waiting for blockchain confirmationCOMPLETED- Funds credited to walletFAILED- Transaction failed (funds not received)
WALLET.DEPOSIT webhook events for real-time notifications instead of polling the API.3
Display balance to users
Convert the raw balance response to a user-friendly display format.
Getting Help
- 📧 Email: support@hifibridge.com
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Users - Create users and understand wallet provisioning
- Wallet Transfers - Send stablecoins between wallets
- Virtual Accounts - Set up fiat onramps to wallets
- Offramps - Convert wallet balances to fiat
- Webhooks - Real-time deposit and transfer notifications
- API Reference - Complete endpoint documentation