402 Payment Required and a payment requirement. The client retries with a payment header. For SohoPay that header is PAYMENT-SIGNATURE, and the payload is a Protocol V2 credit voucher.
This page is the shape of that handshake. The agent procedure is Payment flow. The merchant procedure is Merchant integration.
What is inside the payment
On allow,prepare_x402_payment returns VOUCHER_ISSUED and an unsigned AgentPaymentVoucher. The agent signs it with its Ed25519 workload key. The envelope the merchant receives uses x402 version 2 and scheme: "credit". The payload carries the voucher and that signature.
The voucher is not an on-chain transaction. SohoSettlementV2 never checks the agent’s signature. It checks one batch attestation over every entry in settleBatch. The facilitator already checked the voucher before capture.
What the merchant advertises
The 402 requirement names the network and the asset. On staging that iseip155:84532 and the mock USDC from Environment setup. GET /api/v1/facilitator/supported publishes the same scheme, version, and asset for discovery.
What is retired
Protocol V1 sent a custodialPaymentIntent and settled with settleWithAttestation per payment. Staging does not deploy that contract. Capture rejects a V1 intent with X402_AGENT_VOUCHER_REQUIRED. Do not build a client that asks SohoPay to sign the payment.
Next steps
Payment flow
Prepare, sign, and retry.
EIP-712
The borrower signatures around the voucher.

