API
POST /verify
Check that a payment payload is valid and settleable — free, no authentication.
POST https://api.solvador.com/verifyValidates a payment payload against payment requirements: signature, payer balance, amount, timing, and scheme-specific rules. /verify requires no authentication, consumes no quota, and has no on-chain side effects — verify as often as you like.
Request
{
"x402Version": 2,
"paymentPayload": {
"x402Version": 2,
"accepted": {
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"payTo": "0xYourReceivingAddress",
"maxTimeoutSeconds": 300,
"extra": {}
},
"payload": {
"authorization": { "from": "0xPayerAddress", "...": "..." },
"signature": "0x…"
}
},
"paymentRequirements": {
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"payTo": "0xYourReceivingAddress",
"maxTimeoutSeconds": 300,
"extra": {}
}
}paymentPayload— the signed payload produced by an x402 client. Its innerpayloadobject is scheme-specific; client SDKs construct it, and your server passes it through untouched.paymentRequirements— the requirements your server advertised in its402response, echoed back so Solvador can check the payload against them.
Response
Always HTTP 200 for a processed verification, valid or not:
{
"isValid": true,
"payer": "0xPayerAddress"
}{
"isValid": false,
"invalidReason": "insufficient_funds",
"invalidMessage": "payer balance is below the required amount",
"payer": "0xPayerAddress"
}| Field | Type | Description |
|---|---|---|
isValid | boolean | Whether the payment can be settled as-is |
invalidReason | string? | Machine-readable failure code, present when isValid is false |
invalidMessage | string? | Human-readable detail |
payer | string? | The paying address recovered from the payload |
extensions | object? | Per-extension response data |
Bazaar side effect
If the payload opts into the bazaar extension and verifies successfully, the resource is cataloged for discovery. The cataloging outcome is reported in the EXTENSION-RESPONSES response header.
Errors
| Status | Meaning |
|---|---|
400 | Malformed payment-identifier in the payload |
500 | Internal error |