Verify

Protocol-level rejections return HTTP 200 with {isValid:false}. Only malformed envelopes return 4xx. Scheme-specific payload shape is enforced by the registered scheme, not at the HTTP layer.

Validates a buyer's payment against your requirements without moving any money. It decodes the buyer's signed transaction, screens both the payer and your payee address against Chainalysis, checks the amount/ mint/ recipient / fee-payer match what you asked for, and simulate the transaction. Call this before you hand over the protected resource — it's your "is this payment going to work?" check.


Response 200 OK — payment is valid

{
  "isValid": true,
  "payer": "BuyerWalletAddress…"
}

Response 200 OK — payment is rejected (still HTTP 200)

{
  "isValid": false,
  "invalidReason": "invalid_exact_svm_payload_amount_mismatch",
  "payer": "BuyerWalletAddress…"
}
FieldTypeDescription
isValidbooleantrue only if the payment passed screening, requirement checks, and simulation.
invalidReasonstringPresent when isValid is false. Machine-readable code (see Reason codes).
invalidMessagestring(optional) Human-readable elaboration on invalidReason.
payerstringThe buyer's wallet address, when it could be extracted from the transaction.

Error reason codes (non-exhaustive)

CodeMeaning
sanctioned_addressPayer or payee flagged by compliance screening.
screener_unavailableScreening provider errored and the facilitator is fail-closed. Retry later.
fee_payer_not_managed_by_facilitatorThe extra.feePayer isn't one of our signers — wrong/stale value from /supported.
invalid_exact_svm_payload_amount_mismatchTransaction transfers a different amount than paymentRequirements.amount.
invalid_exact_svm_payload_mint_mismatchTransaction uses a different token mint than asset.
invalid_exact_svm_payload_recipient_mismatchTransaction pays a different recipient than payTo.
network_mismatchPayload network doesn't match requirements.
transaction_simulation_failedThe transfer would fail on-chain (e.g. insufficient buyer balance).
unsupported_schemeScheme isn't registered on this facilitator.
unexpected_verify_errorUnhandled internal error.
Body Params
number
enum
required

x402 protocol version. Must be 2; this facilitator does not accept V1.

Allowed:
paymentPayload
object
required

x402 V2 payment payload envelope. The inner payload field is scheme-specific; see the examples for each supported (scheme, network) combination.

paymentRequirements
object
required

x402 V2 payment requirements envelope. The extra field is scheme-specific; see the examples for each supported (scheme, network) combination.

Responses

Language
LoadingLoading…
Response
Choose an example:
application/json