Solvador
API

POST /verify

Check that a payment payload is valid and settleable — free, no authentication.

POST https://api.solvador.com/verify

Validates 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 inner payload object is scheme-specific; client SDKs construct it, and your server passes it through untouched.
  • paymentRequirements — the requirements your server advertised in its 402 response, 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"
}
FieldTypeDescription
isValidbooleanWhether the payment can be settled as-is
invalidReasonstring?Machine-readable failure code, present when isValid is false
invalidMessagestring?Human-readable detail
payerstring?The paying address recovered from the payload
extensionsobject?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

StatusMeaning
400Malformed payment-identifier in the payload
500Internal error