plit any receipt.
Anyone.
Or their agent.
Scan a receipt, tag friends by X, Discord, email, or wallet, and settle in USDC on Arc. Or fund an agent and let it settle your share for you, under ceilings you set.
Animated product demo: a receipt from Café Arc is dragged into the upload area and scanned. Four line items are detected: Pizza, Coffee, Dessert, and Taxi. Each item is assigned to a person by X handle, Discord username, email address, or wallet address, then the split is written to Arc and settled in USDC.
Upload bill
Upload the bill
Click to browse or drag & drop an image
CAFÉ ARC
Table 7 · 4 guests
Split the bill
Scan a receipt to start a split…
Successfully settled on Arc
Act one · agents that buy
Upload a receipt. An agent goes shopping.
Scout has its own wallet, an ERC-8004 identity on Arc, and a daily budget of one dollar. It judges your photo before spending anything, pays Splitsy's own x402 endpoints per call, and buys a second opinion when the parse looks shaky — signing gasless authorizations that Circle Gateway batches and settles on Arc.
Animated walkthrough of an agent payment. Scout, an autonomous agent, checks that the uploaded receipt is legible and that its daily budget can cover the call. It requests Splitsy's OCR endpoint, receives an HTTP 402 Payment Required challenge quoting $0.005 in USDC on Arc Testnet, signs an offchain EIP-3009 authorization instead of sending a transaction, and retries. Circle Gateway verifies and settles the payment, and the endpoint returns the parsed bill. The first parse scores 0.62 confidence, below the 0.80 threshold, so Scout pays a second time for a higher-quality parse and keeps the better of the two. Finally it buys a foreign-exchange rate to convert the total to USD, spending $0.011 in all.
Scout · the buyer
Image is legible
1.4 MB · 1290 × 1720
floors: 8 KB · 200 px
Budget allows it
$1 cap · $0.005 per call
the cap is the risk control
Confidence
0.94 — kept the better parse
below 0.80 it buys a second opinion
Spent this run$0.011
Signed from Scout's own wallet — a server-held EOA on Arc, capped at $1 a day.
x402 · HTTP
scout.assess(receipt.jpg)
✓image size1.4 MB ≥ 8 KB
✓resolution1290 × 1720 ≥ 200 px
✓budget$1 left ≥ $0.005
POST /api/ocr
402 Payment Required
PAYMENT-REQUIRED (base64)
scheme"exact"
network"eip155:5042002"Arc Testnet
asset0x3600…0000USDC
amount"5000"$0.005
maxTimeoutSeconds608400
extra.name"GatewayWalletBatched"
sign EIP-3009 authorization
offchain · Scout sends no transaction · zero gas
POST /api/ocr
payment-signatureeyJ4NDAyVmVyc2lvbiI6Mi…
facilitator.verify() → isValid
facilitator.settle() → batched by Circle Gateway
200 OK
PAYMENT-RESPONSEtransaction 0x9f1c…4b2e
✓ledgerearned $0.005
!confidence0.62 < 0.80
POST /api/ocr { hq: true }
200 OK confidence 0.94
pickBetterParse → keep the high-quality parse
✓ledgerearned $0.005
bill currency EUR ≠ USD
POST /api/fx $0.001
200 OK { rate, source, asOf }
✓run completespent $0.011
Scripted walkthrough — the field names, headers, prices and thresholds are the ones the server uses. The address and transaction hash are illustrative.
Agent economy · all time
0.011 USDC
Earned
x402 calls served
0.011 USDC
Scout spent
paid to Splitsy's own APIs
3
Calls served
paid API responses
Act two · agents that pay
Fund an agent.
It settles your share.
A bill raised against you can be settled without you opening the app. The agent is yours: one per account, holding its own USDC on Arc. It spends only what you have sent it, only under ceilings you set, and every settlement it makes is a public job a second agent has to sign off before any fee is released.
You fund it first
Your agent0x7a41…4c1f
2.00 USDC
A suggested first top-up. Send more if the shares you expect are larger.
- A connected browser walletsigns a USDC transfer on Arc
- Your Splitsy walletthe same transfer, behind your PIN
- Anywhere elseit is just an address, so send it USDC
Funding is a transfer, never an approval. An agent holding 5 USDC can never spend 6. Whatever any rule says, it has nothing else to draw on. Until it holds USDC every bill is skipped, no job is opened, and nothing is spent.
Then it has to prove it
- clientYour agentposts the job, escrows the fee
- providerThe Settlerdoes the work, proves what it did
- evaluatorThe Auditorpaid to say no
Three distinct wallets, so the party that gets paid is never the party that decides it earned it.
- 1createJobyour agent
- 2setBudgetthe Settler prices its own work
- 3fund0.01 USDC into escrow
- 4payDebtForthe only step that moves bill money
- 5submitkeccak256(settlement tx)
- 6completethe Auditor, only when paid ≥ owed
The escrow only ever holds the fee. Your share is never inside it. The Auditor reads the registry itself, and if the debt is not really settled it does not complete: the job expires an hour later and the Settler is not paid for work it did not do.
Six transactions per settled share
Per share, not per bill. A four-person bill where everyone autopays is four independent jobs.
A refusal costs nothing
Your rules run before the job is opened, so a bill your agent declines sends no transaction at all.
The reputation is yours
payDebtFor pulls from the agent but credits you. The DebtPaid event names you as the payer.
Your ceilings (per bill, per day, an allowed-creator list, a creator score floor, a verified-hash requirement and a paid review of the bill's contents) are checked before your agent spends rather than enforced by a contract, so the hard limit is the balance above. The address and figures on this card are illustrative; your own are on the settlement-agents panel.
The market
Seven endpoints. Priced in half-cents.
Splitsy's paid APIs answer HTTP 402 with their own terms. Any agent that signs an offchain EIP-3009 authorization gets served: no account, no API key, and no gas, because Circle's facilitator settles the payment in a batch rather than a transaction.
- /api/ocr$0.005
Splitsy sells to Scout, per receipt scan
- /api/fx$0.001
Splitsy sells to Scout, non-USD receipts only
- /api/agents/review$0.002
The Auditor sells to The Settler, before every settlement
- /api/agents/queue$0.001
Splitsy sells to any agent, fetch payable bills for a debtor wallet
- /api/reputation$0.001
Splitsy sells to any agent, ERC-8004 reputation lookup
- /api/agents/netting$0.001
Splitsy sells to any agent, minimum-transfer settlement solver
- /api/agents/dunning/verdict$0.001
Splitsy sells to any creditor agent, nudge / escalate / collect decision
All three are open to anyone who pays. That is what makes them a market rather than an internal call. The last row is Splitsy's own two agents trading with each other, so it is deliberately left out of the earned and spent totals above: nobody outside paid it, and counting it would inflate both sides of the ledger from a single internal transfer.
How x402 worksOpen to any agent · Developer API
Seven APIs. Any agent.
Every endpoint answers HTTP 402 with a Circle Gateway challenge. Sign one offchain EIP-3009 authorisation — no Splitsy account, no API key, no gas — and you're in.
- 01 Probe
- 02 Parse
- 03 Sign
- 04 Retry
- /api/agents/queue$0.001
- /api/reputation$0.001
- /api/agents/netting$0.001
- /api/agents/dunning/verdict$0.001
- + 3 existing endpoints
No wallet? No problem.
Tag people where they already are. Splitsy holds their share in escrow on Arc until they claim it with a handle, an inbox, or an address.
- @splitsy_xyzX handle
- SplitsyDiscord username
- info@splitsy.xyzEmail address
- 0xEE42…70ACWallet address
Don't trust the split. Verify it.
The receipt's fingerprint is written into the bill on Arc. Anyone tagged can check that what they're paying matches the paper before they pay.
The receipt
Scanned, itemized, and hashed byte for byte.
keccak256(receipt.jpg)
The bill on Arc
Every share and the fingerprint, committed in one event.
BillCreated(billId, metadataHash)
The check
Payers recompute the hash and confirm it matches before paying.
✓ matches on-chain commitment
Many debts. One position.
Every share you owe and are owed collapses into one net figure per person. Settling fires them as a batch — one atomic transaction on a Circle wallet instead of an approve and a payment per bill.
The open ledger
Shares scattered across every bill you joined or created.
5 bills you owe · 4 you're owed
One net position
Everything owed in both directions, collapsed per counterparty.
−12.40 Alex · +8.00 Sam · −0.60 0x9f…
One settlement
Every approval, payment and claim lands together, or none of it does.
1 atomic tx instead of 14
Netting is a view, not a transfer. Each bill escrows its own USDC on Arc, so every debt is still paid to its own bill — batching removes transactions, never the money owed, and it never collects what someone else still owes you.
Built on Circle. Settled on Arc.
No mock rails under the demo! Circle's wallet and transfer infrastructure composed with Arc's stablecoin-native chain and open Ethereum standards. Every card links to the docs.
- ArcArc — the settlement chainThe EVM Layer 1 purpose-built for stablecoin finance. Splitsy's bill registry and recurring tabs are Solidity contracts on Arc Testnet, and every payment settles with deterministic sub-second finality — one confirmation, no reorgs.chainId 5042002 · finality < 1s · Malachite BFTdocs.arc.io
- ArcUSDC-native gasUSDC is Arc's native gas token, so a share and the fee to pay it live in one dollar-denominated asset. No volatile gas token to acquire, hold, or explain.USDC 0x3600…0000 · fees in USDCdocs.arc.io
- Circlex402 machine paymentsSplitsy's own /api/ocr, /api/fx and /api/agents/review answer HTTP 402 with the terms of the call. A buying agent signs an offchain EIP-3009 authorization instead of sending a transaction, so it pays for the API in USDC and spends no gas doing it.402 → payment-signature → 200 · $0.005 per scandevelopers.circle.com
- CircleGateway batched settlementThe facilitator verifies each authorization and settles net positions in bulk, paying gas once per batch instead of once per payment. That is what makes a half-cent API call worth charging for at all.GatewayWalletBatched v1 · 0x0077…19B9developers.circle.com
- ERC standardERC-8183 agent jobsA settlement is not a hidden server call. Your agent opens a job on Arc's AgenticCommerce deployment and escrows the fee, a second agent does the work, and a third is paid to read the registry and release the escrow only if the debt really settled.AgenticCommerce 0x0747…4583 · client / provider / evaluatordocs.arc.io
- CircleDeveloper-Controlled WalletsSign in with X, Discord, Google, or email and Splitsy provisions a Circle smart-contract wallet on Arc — no seed phrase, no extension. Payments are contract executions signed through Circle's wallet API.accountType: "SCA" · ARC-TESTNETdevelopers.circle.com
- ERC standardERC-4337 + ERC-1967Each Circle wallet deploys as an ERC-1967 proxy over Circle's modular smart-account implementation and transacts as ERC-4337 user operations — it's why Arcscan labels Splitsy wallets ERC1967Proxy.ERC1967Proxy → circle_6900_singleowner_v3developers.circle.com
- CircleCCTP v2 bridgingWhen someone's USDC sits on another chain, Splitsy pulls it in with Circle's native burn-and-mint protocol via App Kit — from six testnet chains, no wrapped assets, no third-party bridge.approve → burn → attest → mintdevelopers.circle.com
- CirclePaymaster gas in USDCBridging in normally needs that chain's own gas token. Circle's Paymaster lets the browser wallet pay the fee in USDC instead, funded by an EIP-2612 permit and run as an EIP-7702 authorization on the user's own address.Paymaster v0.8 0x3BA9…8966 · EIP-7702 + EIP-2612developers.circle.com
- ERC standardERC-8004 payment reputationPaying your share earns portable, verifiable reputation on the ERC-8004 registries Arc pre-deploys. Payers own their identity NFT, and each due-date-graded score commits a hash anyone can recompute against the exact payment it grades.IdentityRegistry 0x8004A818… · keccak256("splitsy:bill:<id>:<payTx>")docs.arc.io
- CircleSmart Contract PlatformA Circle event monitor watches the registry's DebtPaid event, so payments sent straight from browser wallets — which never touch Splitsy's servers — still fire webhooks and earn reputation.contracts.eventLog → /api/webhooks/circledevelopers.circle.com
Stop chasing IOUs.
Test USDC, real workflow. Try the whole thing in two minutes.
Arc Testnet · no real funds · nothing to install