Zchan
OPENon chain
SETTLEon chain

Micropayments
in milliseconds.

Agents pay any API over x402 or MPP from one Zcash channel, with zero network fees per payment. Funded from shielded notes, settled cooperatively to shielded addresses.

x402 v2MPPZcash Ironwood
$zchan-agent get https://api.example/api/search?q=zec

Answers the 402, pays over x402 from the agent's channel and prints the response.

Protocol time17 msmedian, co-located demo
Network round trips+ yoursagent to solver to merchant
Block wait per paymentnonepayments are signed states
Network fee per payment0 zatfees only to open and settle

Live on Zcash testnet. Measured Oct 27, 2026: 15 payments on the hosted playground, with agent, solver and merchant on one 1-vCPU server.

Funds always come back. The solver signs a refund before the agent funds the channel. If the solver disappears, the agent recovers its unspent balance after the channel's lock height.

How refunds work →
How it works

One channel. Many purchases.

Make three purchases. Watch the channel level change while the chain transaction count stays at one.

Payments0
Channel level0 zat
Network fees0 zat
Chain txs1

The channel is open with 100,000 zat. No payments yet.

Topology

Every agent reaches every service through one solver.

Each agent opens one channel, to the solver. The solver keeps one channel to each service and pays it as agents buy. No agent needs a channel per seller.

Two ways in

For the agent that pays. For the service that gets paid.

Agents

Give an agent a budget, not a card.

  • One channel pays every service behind the solver, with no account or API key per seller.
  • The channel's capacity is a spending cap the agent cannot exceed.
  • Speaks x402 v2 and MPP, whichever the service offers.
$zchan-agent open --capacity 100000 --shielded
Services and merchants

Charge per request without changing your API.

  • Proxy mode answers 402 in front of any HTTP service, with a price per path.
  • One channel from the solver carries every agent's payments to you.
  • Earnings arrive at a shielded address when the channel closes.
$zchan-merchant --upstream http://localhost:3000 --routes '/api/*=500'
Use cases

Anything priced below one on-chain fee.

Paid APIs

Charge for each search, inference or data request. The agent pays only for the calls it makes.

GET /api/search?q=zec → 3,000 zat

Paid MCP tools

Earn from individual assistant tool calls, without subscriptions or API keys.

tools/call translate → 800 zat

Metered infrastructure

Charge by the second, the megabyte or the unit of work, as it is used.

gpu · 40 s × 100 → 4,000 zat
All use cases, including commerce →
Protocol

Five messages. No block to wait for.

One real payment from the hosted playground, timed from the agent's first request.

01Merchant

Offer. A request without payment gets 402 and a fresh invoice the merchant signed, offered over x402 and MPP.

1 ms
02Solver

Quote. The solver checks the invoice and its liquidity, then signs a quote: amount plus fee.

5 ms
03Agent

Sign. The agent signs its channel's next total, with a payment id that makes retries safe.

15 ms
04Solver → merchant

Forward. The solver raises its own channel to the merchant, and the merchant signs a receipt.

15 ms
05Agent → merchant

Fetch. The agent repeats the request with the receipt. The merchant serves it once.

17 ms
Payment 016● settled off chain
Protocolx402 v2
RequestPOST /api/echo
Amount2,000 zat
Solver fee100 zat
Protocol time17 ms
Chain txnone
Receiptsigned by merchant ✓

Oct 27, 2026, merchant-d in proxy mode, co-located with agent and solver. Steps 03 and 04 finish together: the agent's signature and the solver's forward are one exchange.

Protocol reference →
Privacy

The public chain sees two transactions, not every purchase.

For a channel funded from shielded notes and closed cooperatively.

On chain
  • The channel's size
  • When it opened and closed
Seen by the solver
  • Which service each payment went to
  • Each amount and resource path

Refunds and unilateral closes are transparent transactions and reveal the split.

Full matrix and trust model →
Developers

Put an API behind payment in one command.

Proxy mode needs no change to your service. Clients pay with x402 v2 or MPP, whichever they speak.

Service and agent
# put an API behind payment
zchan-merchant --upstream http://localhost:3000 \
  --routes '/api/search=3000,/api/*=500' --solver https://solver.example

# pay it from an agent's channel
zchan-agent get https://api.example/api/search?q=zec
Playground

Shield in. Pay. Shield out.

Try the entire flow on Zcash testnet with an agent of your own. Opening and settling wait for testnet blocks; payments don't.

Zchan PlaygroundTestnet · online
✓01 Shield in
✓02 Open
03 Pay
04 Shield out
Actions
Weather reportmerchant-a · GET /paid/weather · 5,000 zat
What the chain saw
Chain transactions2
Off-chain payments3
Payment network fees0 zat
Status

Live on testnet. Mainnet waits for review.

Live on testnet
  • Channels and solver
  • x402 and MPP
  • Proxy mode and QR checkout
  • Shielded funding and closes
Before mainnet
  • External code review
  • Key-handling review
  • Legal review
Network status →

Pay per request.
Settle once.

Open one channel, pay any service in milliseconds, and settle privately when the work is done.