Debug an x402 payment before you submit it — why does USDC answer invalid signat
Debug an x402 payment before you submit it — why does USDC answer invalid signature? Verifies the EIP-3009 transferWithAuthorization (EIP-712 signer, v, low s, validity window) and the seller's terms (payTo, amount, asset, network, bound nonce), and names the domain a failing signature was really made for, e.g. Base Sepolia's 'USDC' used for Base mainnet's 'USD Coin', the commonest reason an x402 payment reverts. Offline, deterministic, signed answer.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://modelmarket.dev/x402/x402-check
| Category | Market data |
|---|---|
| Provider host | modelmarket.dev |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 2 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"authorization": {
"from": "0x9993C13EBBC4B98441E38585eA47fe17625f04f3",
"nonce": "0x52293a780cf1f48ea8a555187c01b15124c41cfef04114b44f3e5463ce8b30eb",
"to": "0x1218ff36C5d2e3B6A565CdB1A8B1AcCFc606Ad0a",
"validAfter": "0",
"validBefore": "1893456000",
"value": "3000"
},
"network": "base",
"signature": "0xe0949d03ce604032721cf706d05897c9b5b34dbc0d3f4a76848724c1e20473330238f0dde1ea3cccffce4c1d1f5a6dfbfb0012ec42a9fd2165bc9723b14b56381b"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"authorization": {
"description": "from, to, value, validAfter, validBefore, nonce",
"type": "object"
},
"network": {
"description": "base, base-sepolia, \u2026 or eip155:<chain id>",
"type": "string"
},
"now": {
"description": "unix seconds, to check the validity window",
"type": "integer"
},
"requirements": {
"description": "the 402's accepts entry (payTo, amount, asset, network)",
"type": "object"
},
"signature": {
"description": "65-byte hex signature",
"type": "string"
},
"x_payment": {
"description": "the X-PAYMENT header (base64) \u2014 or authorization + signature + network",
"type": "string"
}
},
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}