Skip to main content
Send one referenced batch to employees, creators, suppliers, or sellers. The contract pulls each amount directly from the sender to its recipient, so it does not retain a pooled token balance between transactions.

Demo

The demo above is mock only. If you want to see onchain demos on Vibenet, head to Base chain demos.

Deploy the Payout Contract

Payout.sol
Approve the deployed contract for the total batch amount, then submit recipients and amounts from the same sender.
TypeScript backend
The transaction emits one PayoutSent event per recipient under the same batchId, and the sum of token transfers matches your approved batch total.
Cap batch size from measured gas usage and keep the contract’s MAX_RECIPIENTS bound. A single failed token transfer reverts the entire batch.
Do not approve the public Multicall3 contract as an ERC-20 spender. Downstream token calls see Multicall3 as msg.sender, and any caller can ask that general-purpose contract to invoke transferFrom against an allowance you grant it. Use a purpose-built contract that fixes who can initiate payouts and how recipients are selected.

See Also

Split a Payment

Calculate basis-point shares and assign rounding exactly.

Reconcile Payments

Join payout events to your ledger reference.