Multi-Send
Pay up to 100 recipients with different amounts in a single transaction - payroll, bill splits, prize payouts.
In the app
- Open Multi-Send
- Add rows: one recipient per row - a wallet address or an @name - with its amount
- Optionally add a shared note for the whole batch
- Review the total, confirm once
One signature (plus the one-time approval), one fee, a hundred payments - each with its own payment ID and event, so every recipient sees a normal Aruvi payment in their activity.
Why it's cheap on Arc
Batch transactions are where Arc's economics shine: the whole batch costs a few cents in USDC and settles atomically in under a second. Either all payments succeed or none do - you can't end up half-way through payroll.
Why 100?
The cap is a safety margin, not a chain rule. Arc gives every block a 30M gas budget and a full batch of 100 first-time recipients measures about 16.6M gas - just over half a block - so a maxed-out batch always fits with room to spare. A single transaction physically tops out around 180 fresh recipients; 100 keeps clear of that edge. Bigger runs are handled by the Payroll page, which splits any team size into batches of 100 automatically.
On-chain reference
function multiSend(
address[] calldata recipients, // max 100
uint256[] calldata amounts, // per-recipient, 6 decimals
string calldata memo // shared across the batch
) external returns (bytes32[] memory paymentIds);
Reverts with InvalidBatch when the arrays are empty, mismatched, or longer than 100.
Use the dedicated Payroll page instead - it remembers your team's names, wallets, and salaries, runs the whole batch with one click, and keeps per-run history with receipts. Multi-Send stays the right tool for one-off batches like splits and payouts.