Weighed in public.
Paid once.
Pay anyone in USDC in about 30 seconds, from one wallet. Before any money moves, an AI agent checks it: reads the invoice, screens the wallet, catches duplicates and overcharges. Then a contract makes sure it can only go to the right person, for the right amount, once.
Every ticket is public. Paid, waiting, refused or frozen, with the reason, read straight from the contract.
Every payment has a receipt anyone can check
Who was paid, how much, who counted, and why the agent released it. Read from Arc, with the agent's reasoning checked against the hash it put on-chain.
Just as fast. But every payment is checked, explained, and impossible to send twice or to the wrong wallet.
- ✓Fast
- ✕No record of what the money was for
- ✕The same invoice can be paid twice
- ✕A fake “we changed our wallet” invoice gets paid
- ✕Giving an AI agent your key means trusting it with everything
- ✓Just as fast: about 30 seconds, one wallet
- ✓Every payment has a reason and a public receipt
- ✓One invoice, one payment, enforced on-chain
- ✓The AI reads invoices and flags wrong wallets and overcharges
- ✓The agent can only pay what's recorded, within your daily budget
- ✓Bigger payments wait for a one-tap confirm from someone you trust, no wallet needed
Don't take our word for it. Hide an instruction in an invoice, hijack the agent, try to pay twice. Six real attacks, live on testnet.
Try to trick the agent →The agent can't talk its way past five lines. They live in a contract on Arc, not in a prompt.
The payee is locked when the ticket is cut.
Nobody types a wallet at payment time: not the clerk, not the owner, not the agent.
A second check before money moves.
Small payments: an automatic check (screened wallet, within your rule). Bigger ones: a one-tap confirm from a person you choose. Never the agent.
The contract does the sum.
Confirmed quantity × the posted price. The agent's number is checked, never trusted.
A ticket pays once.
A retry, a duplicate invoice, the same delivery note twice: refused, in public.
A mismatch freezes. It never rounds.
Wrong wallet or wrong amount from the agent stops the ticket and says why.
Built in layers that check each other
The agent sits between your business and the contract. It can decide when money moves, never how much or to whom. Under it, Circle's stablecoins settle on Arc in under a second, for about a cent.
Four people, one rule. Scroll through a real ticket.
Cut the ticket
What arrived, how many, at which posted price, and the wallet that gets paid. From this moment the payee and the price are locked.
- Ticket
- #7
- Quantity
- 1
- Posted price
- 0.10 USDC
- Payee
- 0xd1FE…9346 🔒
A second check
Small payments: an automatic check signs once the wallet screens clear and it fits your rule. Bigger ones: a person you trust taps Confirm on a link. Free, no wallet. A count that doesn't match freezes the ticket.
- Claimed
- 1
- Witness counted
- 1
- Signature
- free, no gas
Decide, and say why
The agent screens the payee, reads the house's balance and limits, chooses what to pay first, and stores its reasoning with a hash on-chain.
- Screening
- clear
- Within limits
- yes
- Decision
- pay now
Check, then pay once
ScaleTicket recomputes the amount and checks the payee itself. Match: the money moves wallet to wallet. Mismatch: the ticket freezes, in public.
- Payee matches
- yes
- Amount matches
- yes
- Result
- released
- Ticket
- #7
- Quantity
- 1
- Posted price
- 0.10 USDC
- Payee
- 0xd1FE…9346 🔒
- Claimed
- 1
- Witness counted
- 1
- Signature
- free, no gas
- Screening
- clear
- Within limits
- yes
- Decision
- pay now
- Payee matches
- yes
- Amount matches
- yes
- Result
- released
Paying suppliers for what actually arrived
The clerk cuts a ticket at the door: ten bags, from this supplier, to this wallet. The owner counts. Nine arrived? It pays for nine, or freezes if the gap is too big. The agent pays the same day, oldest first.
‘The same possessions are wealth to the man who knows how to use them, and not wealth to one who does not.’
Xenophon, Oikonomikos