---
title: "Verify an x402 payment payload"
method: POST
path: "/verify"
tags: ["x402 Facilitator (Path B)"]
---

# Verify an x402 payment payload

`POST /verify`

## Request

- Base URL: `https://intel.twzrd.xyz`
- URL: `https://intel.twzrd.xyz/verify`
- Auth: none required

Path B facilitator /verify: validate payment payload against requirements with no chain write (strict template + reservation lookup). Policy failures usually return HTTP 200 with isValid=false; malformed body is 400.

## Request body

- object
  - `x402Version` integer: x402 v2; may also appear only on paymentPayload.
  - `paymentPayload` object, required: x402 PaymentPayload (includes partially-signed SVM tx).
  - `paymentRequirements` object, required: Must equal payload.accepted under strict policy; extra.feePayer must be GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP.

## Response `200`

Verify result. isValid=true when policy+payload OK; isValid=false with invalidReason for policy/replay rejects (still HTTP 200 for scheme outcomes).

- object
  - `isValid` boolean, required
  - `invalidReason` string, nullable: Set when isValid=false. Examples: policy:* reasons, duplicate_settlement, policy:reservation_unavailable, bad_request:…
  - `invalidMessage` string, nullable
  - `payer` string, nullable: Base58 payer pubkey when known.
  - `extensions` unknown
  - `extra` unknown
  - `detail` string

## Other responses

- `400`: Malformed body (missing paymentPayload/paymentRequirements).
- `503`: Facilitator unavailable or agent_intel_disabled.

## Changes

- **2026-09-01** `e233ad9a9406`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails/changes/verify/post.md)

---

[API](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails.md) - [All operations](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails/llms.txt) - [OpenAPI document](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails/revisions/beddd4662a76?raw)
