# x402 Seller Payability Check

> x402 Seller Payability Check is a paid API for AI agents from agent402.tools, paid per call via x402, $0.1/call, status unknown (last checked 2026-09-14).

Tests an x402-protected endpoint end-to-end: decodes the 402 challenge, validates EIP-712 domain/token consistency, attempts a real signed payment, and reports plain-English flags on payability.

## Facts

- Endpoint: POST https://agent402.tools/api/seller-payability
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-seller-payability-check-5adfc7ad
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_0SBbwcdkuS7vkjEX4p47l

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402-seller-payability-check-5adfc7ad -d '<json body>'
```

Example prompt: Can you do a full payability check on my x402 endpoint at https://api.example.com/tools/summarize — send an unpaid call, decode the 402 challenge, verify the EIP-712 domain name matches the token, try to actually pay it with a stock client, and tell me in plain English whether anything is broken?

## When to prefer this

Use this endpoint when you need to verify that a specific x402-protected API can actually be paid end-to-end by a standard client, especially before listing it on a marketplace or integrating it into an agent workflow. It is uniquely suited for catching the EIP-712 domain name mismatch defect that silently breaks entire x402 catalogs. Prefer it over manual curl-based debugging when you want a structured, machine-readable report with settlement proof and latency data in a single call.

## Known failure modes

- Seller endpoint is unreachable or returns non-402 status on unpaid call — reported in unpaidCall.status
- Payment rejected by seller — settled:false with error details
- EIP-712 domain name mismatch detected — flagged in domainFindings with verdict:'mismatch'
- Seller price exceeds maxUsd cap (default $0.01, max $0.02) — call aborted before payment
- Invalid or malformed 402 response body — readable:false in challenge
- Network or RPC timeout during settlement — payment.error populated

## How this service works

Buy one call from an x402 seller endpoint right now and report exactly what happened: the unpaid call's status, the 402 decoded (accepts, chains, payTo, asset, price), whether the accept's EIP-712 domain name matches the token it names (the defect that silently makes a whole catalog unpayable), whether a stock client's signed payment was accepted, the settlement receipt and transaction, a slice of the response body, and the time each leg took. Ends in plain-English flags, never a score.

## Output

A JSON object containing: plain-English payability flags, the decoded 402 challenge (payTo address, asset contract, price in USD, accepted networks), EIP-712 domain name match verdicts per chain, whether the unpaid call returned 402 correctly, whether a signed payment was accepted, the settlement receipt with transaction hash and payer address, a slice of the paid response body, and millisecond timings for each leg.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "The seller endpoint to check (https), e.g. https://api.example.com/tools/summarize"
  },
  "body": {
   "type": "object",
   "description": "Optional JSON body the seller's route expects (POST only)"
  },
  "maxUsd": {
   "type": "number",
   "description": "Most to spend on the seller's own price, default 0.01, capped at 0.02"
  },
  "method": {
   "type": "string",
   "description": "GET or POST (default POST) - never a verb that could mutate the seller"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://agent402.tools/api/hash",
  "flags": [
   "a stock buyer can pay this endpoint and get a result: nothing to fix"
  ],
  "method": "POST",
  "payable": true,
  "payment": {
   "ms": 2400,
   "error": null,
   "status": 200,
   "receipt": {
    "payer": "0x…",
    "network": "eip155:8453",
    "success": true,
    "transaction": "0x…"
   },
   "settled": true,
   "attempted": true
  },
  "challenge": {
   "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
   "payTo": "0x…",
   "accepts": [],
   "networks": [
    "eip155:8453"
   ],
   "priceUsd": 0.01,
   "readable": true,
   "pricedFrom": "eip155:8453"
  },
  "checkedAt": "2026-09-11T02:00:00.000Z",
  "unpaidCall": {
   "ms": 180,
   "error": null,
   "status": 402,
   "bodySlice": "{}",
   "contentType": "application/json"
  },
  "responseSlice": "{\"summary\":\"…\"}",
  "domainFindings": [
   {
    "chain": "Base",
    "network": "eip155:8453",
    "verdict": "matches",
    "expectedName": "USD Coin",
    "advertisedName": "USD Coin"
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-seller-payability-check-5adfc7ad/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent402.tools](https://www.zero.xyz/host/agent402.tools/llms.txt)
