ReferenceUnder review

Payment scheme in ETH

Native ETH has no signed-transfer standard, so paying with one signature takes a contract. Here is how we are solving it.

The problem

Most x402 payments use USDC, which supports EIP-3009 transferWithAuthorization: the payer signs a message and anyone can submit it, so the payer pays with one signature and no gas. Native ETH has no such function. To pay in ETH with one signature, a contract has to be involved.

Options

OptionHow it worksTrade-off
A. Vault + EIP-712 vouchers (proposed)The agent wallet deposits ETH into a vault contract. Each call signs a voucher (payer, seller, amount, nonce, deadline, request). The facilitator redeems vouchers in batches.One signature, no gas per call. Needs a deposit first. Gives mandates, the kill switch and escrow a natural home.
B. WETH + Permit2The agent pays in wrapped ETH with a Permit2 signature.Works with standard tooling, but it is WETH rather than ETH and needs a one-time approval.
C. Plain ETH transferThe agent sends ETH and puts the transaction hash in the header.No new contract, but a transaction and gas on every call, plus a wait for confirmation. Breaks the single request.

Current direction

Option A is proposed, with B as a compatibility path so standard x402 clients can still pay. This page will be updated when the decision is made; see the Changelog.