How Batch Transfers Work
1
Create batch transfer
Submit one request with multiple destination addresses and amounts.
2
Batch processing
HIFI groups all transfers into a single blockchain transaction.
3
Execute on-chain
All recipients receive their funds simultaneously in one transaction.
Benefits of Batching
| Benefit | Description |
|---|---|
| Gas Efficiency | Pay gas fees once for 50 transfers instead of 50 separate fees |
| Atomic Execution | All transfers succeed or fail together - no partial completion |
| Faster Processing | Single transaction reduces blockchain congestion |
| Simplified Tracking | One transaction hash covers the entire batch |
Creating Batch Transfers
Use the Create Batch Transfer endpoint to send to multiple recipients. Request:- requestId (required): Unique UUID for idempotency
- currency (required): Currently only
usdcsupported - chain (required): Currently only
POLYGONsupported - source.userId (required): User sending the funds
- destination.batch (required): Array of up to 50 recipients
- userId OR walletAddress: Destination (provide one, not both)
- amount (required): Amount to send (e.g., “10” for 10 USDC)
For detailed field documentation, see the Create Batch Transfer API reference.
Transaction Status
Batch transfers progress through several statuses:| Status | Description |
|---|---|
| NOT_INITIATED | Transfer not submitted due to validation error |
| CREATED | Batch transfer request created and awaiting processing |
| INITIATED | Batch transfer submitted to blockchain |
| PENDING | Transaction awaiting on-chain confirmation |
| COMPLETED | All transfers in batch successfully confirmed |
| FAILED | Batch transfer failed (check failedReason for details) |
| UNKNOWN | Transfer status could not be determined |
Atomic Execution: If any transfer in the batch fails, the entire batch fails and no funds are moved. This ensures consistency - all recipients get paid or none do.
Tracking Batch Transfers
Monitor batch transfer status using the Retrieve Transfer endpoint. Request:transactionHash to view the batch transaction on Polygonscan.
Status Updates: Subscribe to
WALLET.TRANSFER.BATCH.UPDATE webhook events to receive real-time status notifications. See Webhooks for setup instructions.Batch Requirements and Limits
Current Limitations
| Requirement | Value |
|---|---|
| Max recipients | 50 per batch |
| Supported chains | POLYGON only |
| Supported tokens | USDC only |
| Min amount | 0.000001 USDC per recipient |
Expanding Soon: Support for additional chains (Ethereum, Base) and tokens (USDT) is coming. Contact support if you need these features.
Exceeding Limits
If you need to send to more than 50 recipients:- Split into multiple batches of 50 or fewer
- Submit multiple batch transfer requests
- Each batch gets its own transaction hash
Approval Workflow
Batch transfers support optional multi-party approval for organizations requiring authorization controls. Create batch with approval:requireApproval: true:
- Batch enters
PENDING_APPROVALstatus - Dashboard admins are notified via email and webhook
- Any admin can approve or reject the batch
- If approved, batch proceeds to execution
- If rejected, batch is cancelled
Configuring Approvers: Manage team roles in the HIFI Dashboard. Members can create batch transfers, but only admins can approve.
Key Concepts
Gas Cost Savings
Gas Cost Savings
Batch transfers dramatically reduce gas costs:Individual transfers:
- 50 transfers × 5.00 total
- 1 batch × 0.30 total
- 94% cost reduction
Mixed Recipient Types
Mixed Recipient Types
You can mix HIFI users and external wallets in the same batch:Each recipient can be specified by
userId (HIFI users) or walletAddress (any wallet).Batch vs Single Transfers
Batch vs Single Transfers
Use batch transfers when:
- Sending to 2+ recipients at once
- Running payroll or recurring distributions
- Executing airdrops or rewards
- Cost efficiency matters
- Sending to one recipient
- Different chains per recipient
- Transfers need independent timing
- Different currencies per recipient
Failed Batch Recovery
Failed Batch Recovery
If a batch transfer fails, no funds are moved (atomic execution). Common causes:
- Insufficient balance: Ensure source wallet has enough for all recipients + gas
- Invalid recipient: Check all addresses are valid
- Network congestion: Retry during lower activity
failedReason for specific error details, fix the issue, and submit a new batch.Getting Help
- 📧 Email: support@hifi.com
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Wallet Transfers - Single recipient transfers
- Wallets - Understanding wallet balances
- Webhooks - Real-time batch transfer notifications
- API Reference - Complete endpoint documentation