Privy stack — Arc Testnet
Arc Testnet · live

SSplit 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.

Settles on
Arc

USDC-native L1 · sub-second finality

Ways to tag someone
4

X · Discord · email · wallet

Paid agent APIs
7

x402 · from half a cent a call

01 The splitrunning live · scroll to scrub, or pick a step

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.

01 · Upload
Drop the bill

CAFÉ ARC

Table 7 · 4 guests

01Pizza$18.00
02Coffee$4.50
03Dessert$7.25
04Taxi$12.80
TOTAL$42.55
Settled on Arc
receipt.jpg · 1290 × 1720hashed into the bill · keccak256
02 · Split

Scan a receipt to start a split…

@SplitsyApp$18.00
X handlePizza
Splitsy$4.50
Discord usernameCoffee
info@splitsy.xyz$7.25
Email addressDessert
0xEE42…70AC$12.80
Wallet addressTaxi
@SplitsyApp$18.00
Splitsy$4.50
info@splitsy.xyz$7.25
0xEE42…70AC$12.80
Settled on Arc · 4 shares
02 Agents that buyone dollar a day · $0.005 a scan

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
Earned
0.011 USDC

x402 calls served

Scout spent
0.011 USDC

paid to Splitsy's own APIs

Calls served
3

paid API responses

03 Agents that payone agent per account · its own USDC on Arc

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.

You fund it first
Suggested first top-up
$2.00

0x7a41…4c1f · 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
client
Your agent

posts the job, escrows the fee

provider
The Settler

does the work, proves what it did

evaluator
The Auditor

paid to say no

Three distinct wallets, so the party that gets paid is never the party that decides it earned it.

  1. 01createJobyour agent
  2. 02setBudgetthe Settler prices its own work
  3. 03fund0.01 USDC into escrow
  4. 04payDebtForthe only step that moves bill money
  5. 05submitkeccak256(settlement tx)
  6. 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.

Six transactions per settled sharePer share, not per bill. A four-person bill where everyone autopays is four independent jobs.
A refusal costs nothingYour rules run before the job is opened, so a bill your agent declines sends no transaction at all.
The reputation is yourspayDebtFor 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 here are illustrative; your own are on the settlement-agents panel.

04 The marketno account · no API key · no gas

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.

/api/ocr

Splitsy sells to Scout, per receipt scan

$0.005
/api/fx

Splitsy sells to Scout, non-USD receipts only

$0.001
/api/agents/review

The Auditor sells to The Settler, before every settlement

$0.002
/api/agents/queue

Splitsy sells to any agent, fetch payable bills for a debtor wallet

$0.001
/api/reputation

Splitsy sells to any agent, ERC-8004 reputation lookup

$0.001
/api/agents/netting

Splitsy sells to any agent, minimum-transfer settlement solver

$0.001
/api/agents/dunning/verdict

Splitsy sells to any creditor agent, nudge / escalate / collect decision

$0.001

All of them are open to anyone who pays. That is what makes them a market rather than an internal call. The review row is Splitsy's own two agents trading with each other, so it is deliberately left out of the earned and spent totals above the fold: nobody outside paid it, and counting it would inflate both sides of the ledger from a single internal transfer.

How x402 works
05 Open to any agent
01 Probe02 Parse03 Sign04 Retry

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.

GET/api/agents/queue$0.001
GET/api/reputation$0.001
POST/api/agents/netting$0.001
POST/api/agents/dunning/verdict$0.001
Read the API docs+ three existing endpoints · full reference and a working client
06 Identityescrowed on Arc until they claim it

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
07 Verificationthe preimage is public · the hash is on-chain

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.

  1. 01 The receiptScanned, itemized, and hashed byte for byte.

    keccak256(receipt.jpg)

  2. 02 The bill on ArcEvery share and the fingerprint, committed in one event.

    BillCreated(billId, metadataHash)

  3. 03 The checkPayers recompute the hash and confirm it matches before paying.

    matches on-chain commitment

08 Netting14 transactions become 1

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.

  1. 01 The open ledgerShares scattered across every bill you joined or created.

    5 bills you owe · 4 you're owed

  2. 02 One net positionEverything owed in both directions, collapsed per counterparty.

    −12.40 Alex · +8.00 Sam · −0.60 0x9f…

  3. 03 One settlementEvery 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.

09 The stack11 rails · every row links to its docs

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.

Stop chasing IOUs.

Arc Testnet · no real funds · nothing to install