Payments · Live on Arc mainnet
Splits
Split any payment, to anyone, in one transaction on Arc.
- Role
- Builder: product, contract, app and infrastructure · team project
- Timeline
- October 2026, for Arc Microgrants
- Stack
- Next.js, Drizzle, Postgres, Solidity, Foundry, Arc, Circle, CCTP, Amazon Bedrock
Design and the original pitch by @Noble.
The problem
People abroad often pay for several things at home at once: rent, school fees, upkeep.
They send one lump sum and trust it is divided as meant, or make several transfers and pay a fee on each. No remittance app lets the sender say what the money is for.
How it works
- 01Paste, describe or screenshot the list of recipients.
- 02Splits flags duplicates and addresses that cannot receive USDC before anything is sent.
- 03Approve with a PIN or passkey, or in your own wallet.
- 04SplitsRouter pays everyone in one transaction, or nobody.
- 05The app reads the receipt back from Arc before showing it as landed, and recipients paid by email are told.
- SplitsRouter on Arc has no owner and holds no funds. It pulls with transferFrom and refuses a repeated payment reference.
- SplitsCrossPay accepts USDC from other chains through CCTP, then pays out or refunds.
- Circle developer-controlled wallets with Gas Station let people pay from an email account.
- An agentic mode turns pasted text or a screenshot into the list, using Claude on Amazon Bedrock.
What I decided
- 01
The router holds no funds and has no admin or rescue function. A vault design was rejected for custody risk.
Source: split/PLAN.md
- 02
Two guards against paying twice: a per-payer payment reference and a version check on saved splits.
Source: split/PLAN.md
- 03
A Circle webhook is a hint, never the truth. Every deposit is checked on its own chain, with a sweeper and a balance reconcile behind it.
Source: split/README.md
- 04
The agent can only fill in the form. It never sees balances and never pays.
Source: split/README.md
Proof
- SplitsRouter, Arc mainnet0x8eDb15a372D3b691E2264fFc897EC53dFF4A64F2
- SplitsCrossPay, Arc mainnet0xB018A94bbC5Ce6272FB16BC8Db3d802C8ebA0e79
- TestingUnit, fuzz and invariant tests, mutation checks, and Arc mainnet fork tests.
What it is not yet
- Splits is not a licensed money transmitter, so payments are capped at a low limit for now.
- Email wallets are custodial.
- There is no cash-out to bank accounts yet.
Written from split/README.md, split/PLAN.md, split/docs/dorahacks-submission.md
Next project
AGON →