post
https://api.figment.io/x402/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…"
}| 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. |
