Hassan DosunmuZay.Studio
← All case studies

Batch Payments on Arc

Manifest

Live on Arc mainnet

Pay an entire list in one transaction, and give every recipient a receipt they can check for themselves without a wallet installed.

3

Payments in one transaction

no approvals, no per-recipient transfer

86,452

Gas for the whole batch

0.00185872 USDC total cost

The Problem

  • Paying many people at once does not work cleanly on other chains. Multicall3 loses msg.sender, so a batch cannot prove who actually paid.
  • USDC is normally an ERC-20, which means every transfer needs an approve step first.
  • A native value transfer emits no event, so reconciliation normally requires an indexer.
  • N transfers cost N transactions, which makes splitting small amounts uneconomic.

The Solution

  • Built on Arc, where USDC is the native asset, so msg.value is dollars and there are no approvals to grant.
  • One transaction pays every recipient in the list, with each amount carrying its own label.
  • The browser builds the batch and reads the receipt straight from Arc's own logs, so the payment evidence does not depend on a server anyone has to trust.
  • There is no backend, because there does not need to be one.

The Result

  • Live on Arc mainnet, chain ID 5042, at zaygal.github.io/manifest, with the contract at 0xe0436a564d77ef02c3c7aec13253f050fd89bb6f.
  • Has settled a real batch: three separate payments in a single transaction for 86,452 gas, costing 0.00185872 USDC.
  • Any recipient can open their receipt link with no wallet installed and see their own payment read directly from the chain.

What this does not claim

  • Payments are public on-chain, including the labels attached to them. This is a payments tool, not a privacy tool.
  • Settled volume is one real test batch, not production traffic.

Stack

SolidityArcUSDCFoundryTypeScript

Want something like this built?

Get in touch