zunivo
zunivo · usdc payments on arc

Let your agent
pay for things.

An agent calls a paid API, gets a 402 with a price, pays it in USDC on Arc and gets the data. No card, no account. The same contracts work for people too: payment links, .agent names, scheduled sends, splits. Money goes from payer to recipient in one transaction. We never hold it.

live on arc mainnet · five verified contracts · testnet sandbox ↗ · open source ↗

zunivo.runtime | payment_path settled · 0.4s 0xF5… PAYER ORDER-BOUND RAIL amount 120.00 USDC receipt on-chain ✓ AUDIT TRAIL arc .agent RECIPIENT
$
0.4s

{ typical time to settle }

5

{ verified contracts, none hold funds }

≤1%

{ fee cap, set in the contract }

0

{ balance we hold for you }

for agents

Paid APIs that
an agent can use

Cards and bank transfers need a person to approve them. An agent calling an API a thousand times a day can't do that. With zunivo the endpoint answers HTTP 402 with a price, the agent pays it from its own wallet, retries with the tx hash and gets the response. Adding the 402 to your Express app is one middleware. Every paid call has a transaction on Arc you can look up.

zunivo.runtime | ref-402agent · arc mainnet

This is the actual flow on mainnet, not a mockup. Try it yourself: curl https://api.zunivo.io/x402/arc-pulse returns a 402 you can pay.

for people

Four things you can do
in the app

Each one is a separate contract. They are short, you can read them, and they are verified on ArcScan.

identity

A name people
can pay

yourname.agent is an ERC-721 on Arc. Whoever holds it receives the USDC sent to that name, so if you sell or transfer the name the payments go with it. The image and metadata are stored in the contract, not on a server. 1 USDC to mint.

zunivo.names | ref-01 erc-721 · on-chain svg arc.agent name NFTarc.agentZUNIVO NAMESON ARC
contracts

What's actually on chain

Five contracts: settlement, names, scheduled sends, splits and agent records. Payments pass straight through to the recipient. Locked sends sit in a contract that has no owner function to move them. There is no pooled balance for anyone to drain, including us.

ref. 01 · verifiedArcPayRouter — order-bound settlement 0xAa8c…7119 ↗
ref. 02 · verifiedZunivoNames — names registry 0x8242…7dDa ↗
ref. 03 · verifiedZunivoScheduledSends — committed sends 0x8d21…050c ↗
ref. 04 · verifiedZunivoSplit — revenue splits 0x3c07…5715 ↗
ref. 05 · verifiedZunivoAgentRecords — agent service discovery 0xFE9f…CbB1 ↗

Mainnet v1.3 · Arc chainId 5042 · verified on ArcScan. The testnet sandbox set is listed in the docs. Full source, the 91-test adversarial suite, and our security review live at github.com/zunivo-pay ↗

questions

Questions

Do you ever hold my money?

No. A payment goes from the payer to the recipient inside one transaction. A locked send sits in the ScheduledSends contract, which has no function that lets us move it. There is no balance held on your behalf anywhere.

Can a scheduled send really never be taken back?

If you created it without the reclaim option, correct. Before the unlock time nothing can move it, not the sender, not us. After unlock anyone can call release, but the money can only go to the recipient set at creation. The tests for this are in the repo.

Can split percentages be changed after a link is shared?

No. The list of recipients and percentages is written once when the split is created and the contract has no function to edit it. If you need different shares, make a new split.

Is a .agent name a real domain?

No, it's not DNS. It's an NFT on Arc that resolves to a payout address, and you can transfer or sell it like any NFT. It has nothing to do with Unstoppable Domains' .agent TLD or any ICANN registry.

What does an agent actually get?

A way to pay for an API call without a human approving it. The server returns 402 with a price, the agent's wallet pays it on Arc, the server checks the tx and returns the data. The SDK handles the 402, the payment and the retry; the MCP server does the same for Claude and other desktop agents.

What does it cost?

Gas on Arc is a fraction of a cent, paid in USDC. The protocol fee is hard-capped at 1% in immutable code and is currently 0.5% on mainnet (0% on the testnet sandbox). A .agent name is 1 USDC on mainnet.

start now

Get paid. Send.
Commit. Split.

On Arc mainnet now. Testnet is still up if you want to try it with fake money first.