Skip to main content
Batch transfers allow you to send stablecoins to up to 50 wallet addresses in a single transaction, improving efficiency and reducing costs when handling multiple transfers.

How Batch Transfers Work

Batch transfers follow a simple three-step process:
  1. Create batch transfer – Submit a single request with multiple destination addresses and amounts
  2. Process batch – The system groups all transfers into a single blockchain transaction
  3. Execute transfers – All recipients receive their funds simultaneously in one transaction

Batch Processing

Batch transfers are processed as a single transaction on the blockchain, which means:
  • Cost Efficiency: Pay gas fees once for multiple transfers instead of per transfer
  • Atomic Execution: All transfers succeed or fail together
  • Faster Processing: Single transaction reduces blockchain congestion
  • Simplified Tracking: One transaction hash for the entire batch

Request Structure

To create a batch transfer, send a POST request with the following structure:
curl --request POST \
     --url https://production.hifibridge.com/v2/wallets/transfers/batches \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{
  "requestId": "123e4567-e89b-12d3-a456-426614174000",
  "currency": "usdc",
  "chain": "POLYGON",
  "source": {
    "userId": "a1f70737-3844-4782-a321-ad481108a8ec"
  },
  "destination": {
    "batch": [
      /* Batch */
    ]
  },
  "requireApproval": false
}'
Each batch transfer destination includes the userId (ID of the user receiving funds), walletAddress (blockchain address receiving the transfer), and amount (the amount to transfer in human-readable format, e.g. “0.01” USDC).
{
"userId": "a1f70737-3844-4782-a321-ad481108a8ec",
"walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"amount": "0.01"
}

Transaction Structure

When you create a batch transfer, the API response includes detailed information about the transaction:
{
  "transferType": "WALLET.TRANSFER.BATCH",
  "transferDetails": {
    "id": "879af7af-67bf-469f-b718-d262a39d4857",
    "requestId": "14a84906-b72e-4847-b34d-51b9048fa6a5",
    "createdAt": "2025-04-05T00:55:50.609Z",
    "updatedAt": "2025-04-05T00:56:33.236Z",
    "chain": "POLYGON",
    "currency": "usdc",
    "contractAddress": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582",
    "status": "COMPLETED",
    "source": {
      /* Source */
    },
    "destination": {
      /* Destination */
    },
    "receipt": {
      /* Receipt */
    }
  }
}
{
  "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be",
  "walletAddress": "0x99a8c5ED386d217BC6ff0AA1b3585606D475432B",
  "walletType": "INDIVIDUAL"
}
{
  "batch": [
    {
      "amount": "0.04",
      "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be"
    },
    {
      "amount": "0.05",
      "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be"
    },
    {
      "amount": "0.06",
      "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be"
    },
    {
      "amount": "0.03",
      "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be"
    },
    {
      "amount": "0.03",
      "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be"
    }
  ]
}
{
  "transactionHash": "0x57f0cd3429ea425d982882243428ef4a1eda5f1be2157c1b34ea48b49b24fe7f",
  "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac"
}

Transaction Status

Batch transfer transactions progress through several statuses:
  • CREATED: Transaction has been created and is awaiting processing
  • PROCESSING: Batch transfer is being executed on the blockchain
  • COMPLETED: All transfers in the batch have been successfully completed
  • FAILED: Transaction failed (check failedReason for details)

Receipt Information

The receipt object contains transaction details once completed:
  • transactionHash: Blockchain transaction hash for the batch transfer
  • userOpHash: User operation hash for account abstraction transactions
I