01 · Payment
Check the 402 challenge.
Pass the challenge as your agent received it. from is optional, but supplying it enables the balance check and makes the verdict stronger.
Request
curl -X POST https://verify402.onrender.com/preflight \ -H "Content-Type: application/json" \ -d '{ "kind": "payment", "from": "0xYourWallet", "payment": { "scheme": "exact", "network": "eip155:8453", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "amount": "10000", "payTo": "0xAeEF086DD4e436c69d6d0F684b4c9F43392df9cb", "resource": "https://verify402.onrender.com/verify", "maxTimeoutSeconds": 60 }, "policy": { "maxAmountUsd": 0.25 } }'
Response · abbreviated
{
"verdict": "PASS",
"sign_allowed": true,
"requires_ack": false,
"reasons": [],
"checked": ["scheme", "network", "asset", "amount", "payee", "resource", "payer_balance", "block_freshness"],
"notChecked": ["recipient reputation", "sanctions screening", "payment signature / signed payload", "facilitator settlement", "off-chain promises", "counterparty identity / tool metadata", "prompt injection / hidden Unicode in tool output"],
"receipt": {
"spec": "verify402/preflight-receipt@1",
"intentHash": "…",
"blockNumber": 48277717,
"expiresAt": "2026-10-19T…Z",
"signature": "…"
}
}