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": {}
}