
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.
USDC-native L1 · sub-second finality
X · Discord · email · wallet
x402 · from half a cent a call
A photograph in
Four settled shares out
No sign-up to watch it. The receipt is scanned, each line is tagged to whoever ate it, and the whole split is written to Arc in one transaction.
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.
CAFÉ ARC
Table 7 · 4 guests
Scan a receipt to start a split…
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.
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
Signed from Scout's own wallet — a server-held EOA on Arc, capped at $1 a day.
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.
x402 calls served
paid to Splitsy's own APIs
paid API responses
Fund an agent
It settles your share
A bill raised against you can be settled without you opening the app. 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.
0x7a41…4c1f · send more if the shares you expect are larger
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.
posts the job, escrows the fee
does the work, proves what it did
paid to say no
- 01createJobyour agent
- 02setBudgetthe Settler prices its own work
- 03fund0.01 USDC into escrow
- 04payDebtForthe only step that moves bill money
- 05submitkeccak256(settlement tx)
- 06completethe 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.
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, because Circle's facilitator settles the payment in a batch rather than a transaction.
Splitsy sells to Scout, per receipt scan
$0.005Splitsy sells to Scout, non-USD receipts only
$0.001The Auditor sells to The Settler, before every settlement
$0.002Splitsy sells to any agent, fetch payable bills for a debtor wallet
$0.001Splitsy sells to any agent, ERC-8004 reputation lookup
$0.001Splitsy sells to any agent, minimum-transfer settlement solver
$0.001Splitsy sells to any creditor agent, nudge / escalate / collect decision
$0.001Seven 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.
No wallet? No problem.
Tag people where they already are. Splitsy holds their share until they claim it with a handle, an inbox, or an address.
- @SplitsyAppX 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.
- 01 The receiptScanned, itemized, and hashed byte for byte.
keccak256(receipt.jpg)
- 02 The bill on ArcEvery share and the fingerprint, committed in one event.
BillCreated(billId, metadataHash)
- 03 The checkPayers 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.
- 01 The open ledgerShares scattered across every bill you joined or created.
5 bills you owe · 4 you're owed
- 02 One net positionEverything owed in both directions, collapsed per counterparty.
−12.40 Alex · +8.00 Sam · −0.60 0x9f…
- 03 One settlementEvery approval, payment and claim lands together, or none of it does.
1 atomic tx instead of 14
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.
- 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
