Verify
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.
Response200 OK — payment is valid
JSON
{
"isValid": true,
"payer": "BuyerWalletAddress…"
}
Response200 OK — payment is rejected (still HTTP 200)
JSON
{
"isValid": false,
"invalidReason": "invalid_exact_svm_payload_amount_mismatch",
"payer": "BuyerWalletAddress…"
}
| Field | Type | Description |
|---|---|---|
isValid |
boolean | true only if the payment passed screening, requirement checks, and simulation. |
invalidReason |
string | Present when isValid is false. Machine-readable code (see Reason codes). |
invalidMessage |
string | (optional) Human-readable elaboration on invalidReason. |
payer |
string | The buyer's wallet address, when it could be extracted from the transaction. |
Error reason codes (non-exhaustive)
| Code | Meaning |
|---|---|
sanctioned_address |
Payer or payee flagged by compliance screening. |
screener_unavailable |
Screening provider errored and the facilitator is fail-closed. Retry later. |
fee_payer_not_managed_by_facilitator |
The extra.feePayer isn't one of our signers — wrong/stale value from /supported. |
invalid_exact_svm_payload_amount_mismatch |
Transaction transfers a different amount than paymentRequirements.amount. |
invalid_exact_svm_payload_mint_mismatch |
Transaction uses a different token mint than asset. |
invalid_exact_svm_payload_recipient_mismatch |
Transaction pays a different recipient than payTo. |
network_mismatch |
Payload network doesn't match requirements. |
transaction_simulation_failed |
The transfer would fail on-chain (e.g. insufficient buyer balance). |
unsupported_scheme |
Scheme isn't registered on this facilitator. |
unexpected_verify_error |
Unhandled internal error. |
x402Version
number
enum
required
x402 protocol version. Must be 2; this facilitator does not accept V1.
2
Allowed:
2
paymentPayload
object
required
x402 V2 payment payload envelope. The inner payload field is scheme-specific; see the examples for each supported (scheme, network) combination.
paymentPayloadobject
paymentRequirements
object
required
x402 V2 payment requirements envelope. The extra field is scheme-specific; see the examples for each supported (scheme, network) combination.
paymentRequirementsobject
``200 Verification result (valid or invalid).
object
isValid
boolean
required
invalidReason
string
invalidMessage
string
payer
string
extensions
object
Has additional fields
extra
object
Has additional fields
``400 Malformed request body.
curl --request POST \
--url https://api.figment.io/x402/verify \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-api-key: your-api-key-here' \
--data '
{
"x402Version": 2,
"paymentPayload": {
"x402Version": 2
}
}
'
{
"isValid": true,
"invalidReason": "string",
"invalidMessage": "string",
"payer": "string",
"extensions": {},
"extra": {}
}